zulip/zerver/openapi/javascript_examples.py

35 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[:-5]
output = subprocess.check_output(
args=['node', '--unhandled-rejections=strict', 'zerver/openapi/javascript_examples.js'],
universal_newlines=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.')