Skip to main content

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 startup
  • model_secret_key (str, optional): Secret key for schema writer
  • schema_writer (callable, optional): Custom schema writer function
  • port (int): Port to expose (default: 50051)

Methods:

  • get_endpoint(): Returns the gRPC endpoint (host:port)
  • get_secret_key(): Returns the configured secret key
  • start(): Starts the container
  • stop(): 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)

Source distribution for testcontainers-spicedb 0.1.3
File Size Uploaded
testcontainers_spicedb-0.1.3.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for testcontainers-spicedb 0.1.3
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page