zulip/tools/test-api

80 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.models import get_user, get_realm
usage = """test-js-with-casper [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'):
email = 'iago@zulip.com' # Iago is an admin
realm = get_realm("zulip")
api_key = get_user(email, realm).api_key
site = 'http://zulip.zulipdev.com:9981'
client = Client(
email=email,
api_key=api_key,
site=site)
print("Running API tests...")
test_the_api(client)
email = 'newbie@zulip.com' # newbie is not an admin
realm = get_realm("zulip")
api_key = get_user(email, realm).api_key
site = 'http://zulip.zulipdev.com:9981'
nonadmin_client = Client(
email=email,
api_key=api_key,
site=site
)
# Run tests that require non-admin client
test_update_message_edit_permission_error(client, nonadmin_client)
test_user_not_authorized_error(nonadmin_client)
test_authorization_errors_fatal(client, nonadmin_client)
# Test error payloads
client = Client(
email=email,
api_key='abcedrsdfd',
site=site
)
test_invalid_api_key(client)
print("API tests passed!")