# 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"