mirror of https://github.com/zulip/zulip.git
Add test driver for the API.
This commit is contained in:
parent
c6b2d531ef
commit
7afb19e0d4
|
@ -0,0 +1,185 @@
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
if False:
|
||||||
|
from typing import Any
|
||||||
|
from api.zulip import Client
|
||||||
|
|
||||||
|
def add_subscriptions(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
request = [
|
||||||
|
dict(
|
||||||
|
name='new stream',
|
||||||
|
description='New stream for testing',
|
||||||
|
)
|
||||||
|
]
|
||||||
|
result = client.add_subscriptions(request)
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
|
||||||
|
def create_user(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
request = dict(
|
||||||
|
email='newbie@zulip.com',
|
||||||
|
full_name='New User',
|
||||||
|
short_name='Newbie',
|
||||||
|
password='temp',
|
||||||
|
)
|
||||||
|
result = client.create_user(request)
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
|
||||||
|
def get_members(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
result = client.get_members()
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
members = [m for m in result['members'] if m['email'] == 'newbie@zulip.com']
|
||||||
|
assert len(members) == 1
|
||||||
|
iago = members[0]
|
||||||
|
|
||||||
|
assert iago['is_admin'] == False
|
||||||
|
assert iago['full_name'] == 'New User'
|
||||||
|
|
||||||
|
def get_profile(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
result = client.get_profile()
|
||||||
|
assert result['is_admin'] == True
|
||||||
|
assert result['email'] == 'iago@zulip.com'
|
||||||
|
assert result['full_name'] == 'Iago'
|
||||||
|
|
||||||
|
def get_stream_id(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
stream_name = 'new stream'
|
||||||
|
result = client.get_stream_id(stream_name)
|
||||||
|
assert int(result['stream_id'])
|
||||||
|
|
||||||
|
def get_streams(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
result = client.get_streams()
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
streams = [s for s in result['streams'] if s['name'] == 'new stream']
|
||||||
|
assert streams[0]['description'] == 'New stream for testing'
|
||||||
|
|
||||||
|
def get_subscribers(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
result = client.get_subscribers(stream='new stream')
|
||||||
|
assert result['subscribers'] == ['iago@zulip.com']
|
||||||
|
|
||||||
|
def get_user_agent(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
result = client.get_user_agent()
|
||||||
|
assert result.startswith('ZulipPython/')
|
||||||
|
|
||||||
|
def list_subscriptions(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
result = client.list_subscriptions()
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
streams = [s for s in result['subscriptions'] if s['name'] == 'new stream']
|
||||||
|
assert streams[0]['description'] == 'New stream for testing'
|
||||||
|
|
||||||
|
def remove_subscriptions(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
result = client.remove_subscriptions(['new stream'])
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
|
||||||
|
# test it was actually removed
|
||||||
|
result = client.list_subscriptions()
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
streams = [s for s in result['subscriptions'] if s['name'] == 'new stream']
|
||||||
|
assert len(streams) == 0
|
||||||
|
|
||||||
|
def render_message(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
request = dict(content='**foo**')
|
||||||
|
result = client.render_message(request)
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
assert result['rendered'] == '<p><strong>foo</strong></p>'
|
||||||
|
|
||||||
|
def send_message(client):
|
||||||
|
# type: (Client) -> int
|
||||||
|
|
||||||
|
request = dict(
|
||||||
|
type='stream',
|
||||||
|
to='Denmark',
|
||||||
|
subject='Copenhagen',
|
||||||
|
content='hello',
|
||||||
|
)
|
||||||
|
result = client.send_message(request)
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
message_id = result['id']
|
||||||
|
|
||||||
|
# test it was actually sent
|
||||||
|
url = 'messages/' + str(message_id)
|
||||||
|
result = client.call_endpoint(
|
||||||
|
url=url,
|
||||||
|
method='GET'
|
||||||
|
)
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
assert result['raw_content'] == 'hello'
|
||||||
|
|
||||||
|
return message_id
|
||||||
|
|
||||||
|
def update_message(client, message_id):
|
||||||
|
# type: (Client, int) -> None
|
||||||
|
|
||||||
|
assert int(message_id)
|
||||||
|
request = dict(
|
||||||
|
message_id=message_id,
|
||||||
|
content='new content',
|
||||||
|
)
|
||||||
|
result = client.update_message(request)
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
|
||||||
|
# test it was actually updated
|
||||||
|
url = 'messages/' + str(message_id)
|
||||||
|
result = client.call_endpoint(
|
||||||
|
url=url,
|
||||||
|
method='GET'
|
||||||
|
)
|
||||||
|
assert result['result'] == 'success'
|
||||||
|
assert result['raw_content'] == 'new content'
|
||||||
|
|
||||||
|
# SETUP METHODS FOLLOW
|
||||||
|
|
||||||
|
def test_messages(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
render_message(client)
|
||||||
|
message_id = send_message(client)
|
||||||
|
update_message(client, message_id)
|
||||||
|
|
||||||
|
def test_users(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
create_user(client)
|
||||||
|
get_members(client)
|
||||||
|
get_profile(client)
|
||||||
|
|
||||||
|
def test_streams(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
add_subscriptions(client)
|
||||||
|
list_subscriptions(client)
|
||||||
|
get_stream_id(client)
|
||||||
|
get_streams(client)
|
||||||
|
get_subscribers(client)
|
||||||
|
|
||||||
|
def test_the_api(client):
|
||||||
|
# type: (Client) -> None
|
||||||
|
|
||||||
|
get_user_agent(client)
|
||||||
|
test_users(client)
|
||||||
|
test_streams(client)
|
||||||
|
test_messages(client)
|
||||||
|
|
||||||
|
# print(dir(client))
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
try:
|
||||||
|
import django
|
||||||
|
except ImportError as e:
|
||||||
|
print("ImportError: {}".format(e))
|
||||||
|
print("You need to run the Zulip tests inside a Zulip dev environment.")
|
||||||
|
print("If you are using Vagrant, you can `vagrant ssh` to enter the Vagrant guest.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
TOOLS_DIR = os.path.dirname(__file__)
|
||||||
|
ROOT_DIR = os.path.dirname(TOOLS_DIR)
|
||||||
|
sys.path.insert(0, ROOT_DIR)
|
||||||
|
|
||||||
|
api_path = os.path.abspath(os.path.join(ROOT_DIR, 'api'))
|
||||||
|
if not os.path.exists(api_path):
|
||||||
|
raise Exception('programming error--files probably got moved')
|
||||||
|
|
||||||
|
sys.path.insert(0, api_path)
|
||||||
|
from zulip import Client
|
||||||
|
|
||||||
|
from tools.lib.test_server import test_server_running
|
||||||
|
from tools.lib.api_tests import test_the_api
|
||||||
|
|
||||||
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.test_settings'
|
||||||
|
django.setup()
|
||||||
|
from zerver.models import get_user_profile_by_email
|
||||||
|
|
||||||
|
|
||||||
|
with test_server_running():
|
||||||
|
email = 'iago@zulip.com' # Iago is an admin
|
||||||
|
api_key = get_user_profile_by_email(email).api_key
|
||||||
|
site = 'http://127.0.0.1:9981'
|
||||||
|
|
||||||
|
client = Client(
|
||||||
|
email=email,
|
||||||
|
api_key=api_key,
|
||||||
|
site=site)
|
||||||
|
|
||||||
|
test_the_api(client)
|
Loading…
Reference in New Issue