diff --git a/recipes/authentik/tests_authentik/test_authentik_blueprint_api.py b/recipes/authentik/tests_authentik/test_authentik_blueprint_api.py index 009560a..87eb452 100644 --- a/recipes/authentik/tests_authentik/test_authentik_blueprint_api.py +++ b/recipes/authentik/tests_authentik/test_authentik_blueprint_api.py @@ -1,2 +1,39 @@ # api testing # https://playwright.dev/python/docs/api-testing + +import pytest_html # type: ignore +from icecream import ic # type: ignore +from playwright.sync_api import APIRequestContext +from tabulate import tabulate # type: ignore + +from pytest_abra import BaseUrl + + +def test_authentik_blueprint_status( + api_request_context: APIRequestContext, + URL: BaseUrl, + extras, +) -> None: + blueprints = api_request_context.get(URL.get("api/v3/managed/blueprints")) + assert blueprints.ok + blueprints_data = blueprints.json() + ic(blueprints_data) + + # fake failed blueprint + # blueprints_data["results"][10]["status"] = "failed" + + table_data_all = [] + table_data_failed = [] + for item in blueprints_data["results"]: + row = [item["name"], item["enabled"], item["status"]] + table_data_all.append(row) + if item["status"] != "successful": + table_data_failed.append(row) + + table = tabulate(table_data_all, headers=["name", "enabled", "status"]) + extras.append(pytest_html.extras.text(table, name="Authentik Blueprint Status")) + + # with pytest -v (verbose) the failed blueprints will be visible in the traceback + assert ( + table_data_failed == [] + ), "One or more blueprints were not successful. See Authentik Blueprint Status in html report"