def test_testapp(app): testapp = TestApp(app) res = testapp.get('/') assert res.status_code == 200 expected = {'message': 'Hello world'} assert res.json == expected assert res.text == json.dumps(expected)
def client(app, monkeypatch): client_ = TestApp(app) monkeypatch.setattr(aiohttp.parsers.StreamWriter, 'set_tcp_cork', lambda s, v: True) monkeypatch.setattr(aiohttp.parsers.StreamWriter, 'set_tcp_nodelay', lambda s, v: True) return client_
import aiohttp from dcos_installer.async_server import app from webtest_aiohttp import TestApp version = 1 client = TestApp(app) client.expect_errors = False def test_redirect_to_root(monkeypatch): monkeypatch.setattr(aiohttp.parsers.StreamWriter, 'set_tcp_cork', lambda s, v: True) monkeypatch.setattr(aiohttp.parsers.StreamWriter, 'set_tcp_nodelay', lambda s, v: True) route = '/api/v{}'.format(version) featured_methods = { 'GET': [302, 'text/plain', '/'], 'POST': [405, 'text/plain'], 'PUT': [405, 'text/plain'], 'DELETE': [405, 'text/plain'], 'HEAD': [405, 'text/plain'], 'TRACE': [405, 'text/plain'], 'CONNECT': [405, 'text/plain'], } for method, expected in featured_methods.items(): res = client.request(route, method=method, expect_errors=True) assert res.status_code == expected[0], '{}: {}'.format( method, expected) assert res.content_type == expected[1], '{}: {}'.format( method, expected) if expected[0] == 'GET':
def client(app, monkeypatch): return TestApp(app)
def client(app): return TestApp(app)
def client(): loop = asyncio.get_event_loop() asyncio.set_event_loop(loop) config = { "env": "test", "mongo_database_name": "webbase_test", "redis_database": 13, "mongo_host": "127.0.0.1", "server_port": 1337, "server_host": "localhost" } drop_database(config.get('mongo_database_name'), config.get('redis_database')) _, _, app = loop.run_until_complete(init(loop, config)) with DbSessionContext(config.get('mongo_database_name')) as session: # INSERT DUMMY DATA users = [{ 'name': 'test', 'email': '*****@*****.**', 'email_validation_token': '123456', 'password': '******' }, { 'name': 'to.disable', 'email': '*****@*****.**', 'email_validation_token': '1337', 'password': '******' }, { 'name': 'admin', 'email': '*****@*****.**', 'password': '******', 'role': 'admin' }, { 'name': 'disabled', 'email': '*****@*****.**', 'password': '******', 'enable': False }] notifications = [{ 'user_uid': None, 'message': 'Test 1' }, { 'user_uid': None, 'message': 'Test 2' }, { 'user_uid': None, 'message': 'Test 3' }, { 'user_uid': None, 'message': 'Test 4', 'seen': True }] for user_data in users: user = User() context = { 'db_session': session, 'method': 'create', 'data': user_data } loop.run_until_complete(user.validate_and_save(context)) context = { 'db_session': session, 'method': 'create', 'data': { 'user_uid': user.get_uid() } } resetpasswordtoken = Resetpasswordtoken() loop.run_until_complete( resetpasswordtoken.validate_and_save(context)) for notification_data in notifications: notification = Notification() notification_data['user_uid'] = user.get_uid() context = { 'db_session': session, 'method': 'create', 'data': notification_data } loop.run_until_complete( notification.validate_and_save(context)) def login(self, email, password='******'): self.post_json('/api/login', { 'email': email, 'password': password, 'token': self.__token__ }) with DbSessionContext( self.config.get('mongo_database_name')) as session: user = session.query(User)\ .filter(User.email == email).one() return user client = TestApp(app) client.config = config client.login = types.MethodType(login, client) # NOTE Always do an /api/get_session to init the session correctly data = {'user_timezone': 'Australia/Sydney'} response = client.post_json('/api/get_session', data) client.__token__ = response.json['token'] return client
def maker(app, *args, **kwargs): # Set to False because we set app['aiohttp_utils'], which # is invalid in wsgi environs kwargs.setdefault('lint', False) return TestApp(app, *args, **kwargs)