39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
# 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"
|