zulip/zerver/openapi/javascript_examples.py

37 lines
1.2 KiB
Python

# Zulip's OpenAPI-based API documentation system is documented at
# https://zulip.readthedocs.io/en/latest/documentation/api.html
#
# This Python file wraps the test suite for Zulip's JavaScript API
# examples and validates the responses against our OpenAPI definitions.
import json
import os
import subprocess
from zulip import Client
from zerver.openapi.openapi import validate_against_openapi_schema
def test_js_bindings(client: Client) -> None:
os.environ["ZULIP_USERNAME"] = client.email
os.environ["ZULIP_API_KEY"] = client.api_key
os.environ["ZULIP_REALM"] = client.base_url.removesuffix("/api/")
output = subprocess.check_output(
args=["node", "--unhandled-rejections=strict", "zerver/openapi/javascript_examples.js"],
text=True,
)
endpoint_responses = json.loads(output)
for response_data in endpoint_responses:
print(f"Testing javascript example: {response_data['name']} ...")
validate_against_openapi_schema(
response_data["result"],
response_data["endpoint"],
response_data["method"],
response_data["status_code"],
)
print("JavaScript examples validated.")