Testcontainers SpiceDB - Python
Python module for Testcontainers that provides a SpiceDB container for integration testing.
This is a Python port of the Go testcontainers-spicedb module. All credit to @Mariscal6 for the original module
Installation
pip install testcontainers-spicedb
Or install from source:
pip install -e .
Requirements
- Python 3.10+
- Docker
Usage
Ensure Docker is running on your system.
Basic Usage
from testcontainers_spicedb import SpiceDBContainer
# Using context manager (recommended)
with SpiceDBContainer(image="authzed/spicedb:v1.47.1") as spicedb:
endpoint = spicedb.get_endpoint()
secret_key = spicedb.get_secret_key()
# Use endpoint and secret_key with your SpiceDB client
# ...
Custom Secret Key
from testcontainers_spicedb import SpiceDBContainer
with SpiceDBContainer(secret_key="mycustomsecret") as spicedb:
endpoint = spicedb.get_endpoint()
secret_key = spicedb.get_secret_key() # Returns "mycustomsecret"
Pre-load Schema
from testcontainers_spicedb import SpiceDBContainer
schema = """
definition user {}
definition document {
relation owner: user
relation viewer: user
permission view = viewer + owner
}
"""
with SpiceDBContainer(
model=schema,
model_secret_key="somepresharedkey"
) as spicedb:
endpoint = spicedb.get_endpoint()
# Schema is already loaded, ready to use
With SpiceDB Client
from testcontainers_spicedb import SpiceDBContainer
from authzed.api.v1 import Client, WriteSchemaRequest
with SpiceDBContainer() as spicedb:
# Create client
client = Client(
spicedb.get_endpoint(),
spicedb.get_secret_key(),
use_tls=False
)
# Write schema
schema = """
definition user {}
definition resource {
relation owner: user
}
"""
response = client.WriteSchema(WriteSchemaRequest(schema=schema))
Testing
Run tests using pytest:
pytest tests/
Examples
See the examples/ directory for more usage examples:
python examples/example_spicedb.py
API Reference
SpiceDBContainer
Main container class for SpiceDB.
Parameters:
image(str): Docker image to use (default: "authzed/spicedb:v1.47.1")secret_key(str): gRPC pre-shared key (default: "somepresharedkey")model(str, optional): Schema to load on startupmodel_secret_key(str, optional): Secret key for schema writerschema_writer(callable, optional): Custom schema writer functionport(int): Port to expose (default: 50051)
Methods:
get_endpoint(): Returns the gRPC endpoint (host:port)get_secret_key(): Returns the configured secret keystart(): Starts the containerstop(): Stops and removes the container
Links
Metadata
Release files for testcontainers-spicedb 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| testcontainers_spicedb-0.1.3.tar.gz | 9.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| testcontainers_spicedb-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.6 kB
Release files / testcontainers_spicedb-0.1.3.tar.gz
| Download URL | testcontainers_spicedb-0.1.3.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d350addbf4bce54b5cc71bc93c414d1e71b371664bee80796390988c5903b1aa
|
|
BLAKE2b-256 checksum How to use checksums |
3b9ce4ce406df3a270d34a84e1882658bd86c56a2d7b1f54c7b543cb7c15f437
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Release files / testcontainers_spicedb-0.1.3-py3-none-any.whl
| Download URL | testcontainers_spicedb-0.1.3-py3-none-any.whl |
|---|---|
| Size | 9.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e11587e8f08c75d262da74b926b68186550de10f8058fabcd61c954262a2e86c
|
|
BLAKE2b-256 checksum How to use checksums |
e9ae2baa03061b499f0a60bc4b348b3f83fbda728b22d6b8804f122ab6b50caa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|