Example #1
0
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)
Example #2
0
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_
Example #3
0
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':
Example #4
0
def client(app, monkeypatch):
    return TestApp(app)
Example #5
0
def client(app):
    return TestApp(app)
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':
Example #7
0
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
Example #8
0
 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)