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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

testcontainers_spicedb-0.1.3.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

testcontainers_spicedb-0.1.3-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file testcontainers_spicedb-0.1.3.tar.gz.

File metadata

  • Download URL: testcontainers_spicedb-0.1.3.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for testcontainers_spicedb-0.1.3.tar.gz
Algorithm Hash digest
SHA256 d350addbf4bce54b5cc71bc93c414d1e71b371664bee80796390988c5903b1aa
MD5 92362c9cfe0cc3500973694262921773
BLAKE2b-256 3b9ce4ce406df3a270d34a84e1882658bd86c56a2d7b1f54c7b543cb7c15f437

See more details on using hashes here.

File details

Details for the file testcontainers_spicedb-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for testcontainers_spicedb-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e11587e8f08c75d262da74b926b68186550de10f8058fabcd61c954262a2e86c
MD5 75b9a30a6f6f780d14bb81eb917e180b
BLAKE2b-256 e9ae2baa03061b499f0a60bc4b348b3f83fbda728b22d6b8804f122ab6b50caa

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page