authentik/passbook/flows/tests/test_transfer_docs.py

32 lines
918 B
Python

"""test example flows in docs"""
from glob import glob
from pathlib import Path
from typing import Callable
from django.test import TransactionTestCase
from passbook.flows.transfer.importer import FlowImporter
class TestTransferDocs(TransactionTestCase):
"""Empty class, test methods are added dynamically"""
def generic_view_tester(file_name: str) -> Callable:
"""This is used instead of subTest for better visibility"""
def tester(self: TestTransferDocs):
with open(file_name, "r") as flow_json:
importer = FlowImporter(flow_json.read())
self.assertTrue(importer.validate())
self.assertTrue(importer.apply())
return tester
for flow_file in glob("docs/flow/examples/*.json"):
method_name = Path(flow_file).stem.replace("-", "_").replace(".", "_")
setattr(
TestTransferDocs, f"test_flow_{method_name}", generic_view_tester(flow_file)
)