mirror of https://github.com/zulip/zulip.git
82 lines
2.3 KiB
Python
Executable File
82 lines
2.3 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__)
|
|
|
|
import django
|
|
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 get_provisioning_status
|
|
from tools.lib.test_server import test_server_running
|
|
from zerver.lib.api_test_helpers import test_the_api, test_invalid_api_key, \
|
|
test_update_message_edit_permission_error, \
|
|
test_user_not_authorized_error, test_authorization_errors_fatal
|
|
|
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.test_settings'
|
|
django.setup()
|
|
from zerver.lib.actions import do_create_user
|
|
from zerver.lib.users import get_api_key
|
|
from zerver.models import get_user, get_realm
|
|
|
|
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()
|
|
|
|
if not options.force:
|
|
ok, msg = get_provisioning_status()
|
|
if not ok:
|
|
print(msg)
|
|
print('If you really know what you are doing, use --force to run anyway.')
|
|
sys.exit(1)
|
|
|
|
with test_server_running(force=options.force, external_host='zulipdev.com:9981'):
|
|
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 the 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_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!")
|