Używaj client.testdata tylko z Environment.TEST. Te helpery modyfikują dane
sandboxa KSeF, dzięki czemu testy i demo mogą tworzyć znane konteksty.
Utwórz dane sandboxa ręcznie
Bezpośrednich metod używaj dla współdzielonych fixture'ów, które mają przetrwać wiele uruchomień testów.
Podmiot
client.testdata.create_subject(
nip="5261040828",
subject_type="vat_group",
description="Sandbox company",
)
client.testdata.enable_attachments(nip="5261040828")Osoba
client.testdata.create_person(
nip="5261040828",
pesel="90010112345",
description="Sandbox person",
)Blokada kontekstu
from ksef2.models import AuthContextIdentifier
context = AuthContextIdentifier(type="nip", value="5261040828")
client.testdata.block_context(context=context)
client.testdata.unblock_context(context=context)Usuń współdzielone fixture'y jawnie, gdy nie są już potrzebne:
client.testdata.delete_person(nip="5261040828")
client.testdata.delete_subject(nip="5261040828")Użyj temporal cleanup
temporal() zapisuje mutacje i próbuje posprzątać je best-effort po wyjściu z
bloku.
Podmiot i załączniki
with client.testdata.temporal() as data:
data.create_subject(
nip="5261040828",
subject_type="vat_group",
description="Integration test subject",
)
data.enable_attachments(nip="5261040828")Uprawnienia
from ksef2.models import Identifier, Permission
with client.testdata.temporal() as data:
data.grant_permissions(
permissions=[
Permission(type="invoice_read", description="Read invoices"),
],
grant_to=Identifier(type="nip", value="1111111111"),
in_context_of=Identifier(type="nip", value="5261040828"),
)Blokada kontekstu
from ksef2.models import AuthContextIdentifier
context = AuthContextIdentifier(type="nip", value="5261040828")
with client.testdata.temporal() as data:
data.block_context(context=context)Generowanie identyfikatorów
ksef2.testdata generuje numery NIP i PESEL z poprawną sumą kontrolną, dzięki
czemu każde uruchomienie testów może użyć nowych podmiotów w sandboxie:
from ksef2.testdata import generate_nip, generate_pesel
nip = generate_nip()
pesel = generate_pesel()Zalecany przepływ
-
Utwórz tylko podmioty, osoby, uprawnienia, flagi załączników albo blokady kontekstów wymagane przez test.
-
Użyj
temporal()dla fixture'ów, które powinny zostać posprzątane automatycznie. -
Użyj bezpośrednich metod create/delete dla fixture'ów współdzielonych przez wiele uruchomień testów.
-
Trzymaj wygenerowane identyfikatory w konfiguracji testów, nie produkcji.
Następne przepływy
- Konfiguracja klienta: Utwórz klienta głównego TEST przed użyciem gałęzi testdata.
- Uwierzytelnianie: Uwierzytelniaj się w kontekstach TEST utworzonych przez helpery testdata.
- Skonfiguruj uprawnienia: Używaj produkcyjnych API uprawnień po przetestowaniu kształtów nadań w TEST.
