mirror of
https://github.com/zulip/zulip.git
synced 2025-10-28 18:43:52 +00:00
This new test runs each generated curl example against the Zulip API, checking whether it returns successfully without errors. Significantly modified by tabbott for simplicity.
86 lines
2.5 KiB
Python
Executable File
86 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import argparse
|
|
import os
|
|
import sys
|
|
|
|
# check for the venv
|
|
from lib import sanity_check
|
|
sanity_check.check_venv(__file__)
|
|
|
|
ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
sys.path.insert(0, ZULIP_PATH)
|
|
os.chdir(ZULIP_PATH)
|
|
|
|
from zulip import Client
|
|
|
|
from tools.lib.test_script import assert_provisioning_status_ok
|
|
from tools.lib.test_server import test_server_running
|
|
|
|
usage = """test-api [options]"""
|
|
parser = argparse.ArgumentParser(usage)
|
|
parser.add_argument('--force', dest='force',
|
|
action="store_true",
|
|
default=False, help='Run tests despite possible provisioning problems.')
|
|
options = parser.parse_args()
|
|
|
|
assert_provisioning_status_ok(options.force)
|
|
|
|
with test_server_running(force=options.force, external_host='zulipdev.com:9981'):
|
|
# Zerver imports should happen after `django.setup()` is run
|
|
# by the test_server_running decorator.
|
|
from zerver.openapi.python_examples import test_the_api, test_invalid_api_key
|
|
from zerver.openapi.test_curl_examples import test_generated_curl_examples_for_success
|
|
from zerver.lib.actions import do_create_user
|
|
from zerver.lib.users import get_api_key
|
|
from zerver.models import get_user, get_realm
|
|
|
|
print("Running API tests...")
|
|
|
|
# Prepare the admin client
|
|
email = 'iago@zulip.com' # Iago is an admin
|
|
realm = get_realm("zulip")
|
|
user = get_user(email, realm)
|
|
api_key = get_api_key(user)
|
|
site = 'http://zulip.zulipdev.com:9981'
|
|
client = Client(
|
|
email=email,
|
|
api_key=api_key,
|
|
site=site
|
|
)
|
|
|
|
# Prepare a generic bot client for curl testing
|
|
email = 'default-bot@zulip.com'
|
|
realm = get_realm("zulip")
|
|
bot_user = get_user(email, realm)
|
|
api_key = get_api_key(bot_user)
|
|
bot_client = Client(
|
|
email=email,
|
|
api_key=api_key,
|
|
site=site
|
|
)
|
|
|
|
# Prepare the non-admin client
|
|
email = 'guest@zulip.com' # guest is not an admin
|
|
guest_user = do_create_user('guest@zulip.com', 'secret',
|
|
get_realm('zulip'), 'Mr. Guest', 'guest')
|
|
api_key = get_api_key(guest_user)
|
|
nonadmin_client = Client(
|
|
email=email,
|
|
api_key=api_key,
|
|
site=site
|
|
)
|
|
|
|
test_generated_curl_examples_for_success(bot_client)
|
|
test_the_api(client, nonadmin_client)
|
|
|
|
# Test error payloads
|
|
client = Client(
|
|
email=email,
|
|
api_key='abcedrsdfd',
|
|
site=site
|
|
)
|
|
test_invalid_api_key(client)
|
|
|
|
|
|
print("API tests passed!")
|