Пример #1
0
def test_response_header_in_minimal_mode(client, faker, broken_db):
    test_user = User(username=faker.safe_email().split('@')[0])
    test_token = test_user.generate_token(settings.SECRET_KEY)

    r = client.get('/whoami', headers={'Authorization': test_token})
    assert_response_ok(r)
    assert r.headers['X-Minimal-Mode'] == '1'
    assert r.headers['X-Minimal-Mode-Reason'] == 'auth'
Пример #2
0
def test_minimal_mode_incompatible(client, faker, broken_db):
    test_user = User(username=faker.safe_email().split('@')[0])
    test_token = test_user.generate_token(settings.SECRET_KEY)

    r = client.get('/incompatible', headers={'Authorization': test_token})
    assert r.status_code == 501
    assert r.json['status'] == 'NotImplemented'
    assert r.json['message'] == ('Current API is not suitable for working '
                                 'in minimal mode')
    assert r.json['data'] is None
Пример #3
0
def test_authenticated_user_in_minimal_mode(client, faker, mocker, broken_db):
    test_user = User(username=faker.safe_email().split('@')[0])
    test_token = test_user.generate_token(settings.SECRET_KEY)

    mocker.patch.object(settings, 'ADMIN_EMERGENCY_USER_LIST', ['admin'])

    r = client.get('/whoami', headers={'Authorization': test_token})
    assert_response_ok(r)
    data = r.json['data']
    assert data['username'] == test_user.username
    assert data['is_application'] is False
    assert data['is_admin'] is False
Пример #4
0
def test_doctor_in_minimal_mode(app, client, mocker, faker, broken_db):
    metrics = app.extensions['huskar_api.db.tester'].metrics
    on_sys_exc = mocker.patch.object(metrics,
                                     'on_api_called_sys_exc',
                                     autospec=True)
    on_ok = mocker.patch.object(metrics, 'on_api_called_ok', autospec=True)

    test_user = User(username=faker.safe_email().split('@')[0])
    test_token = test_user.generate_token(settings.SECRET_KEY)

    client.get('/whoami', headers={'Authorization': test_token})

    assert not on_ok.called
    assert on_sys_exc.called
Пример #5
0
def test_authenticated_application_in_minimal_mode(client, zk, faker, mocker,
                                                   broken_db, data_type):
    test_user = User(username=faker.uuid4()[:8])
    test_token = test_user.generate_token(settings.SECRET_KEY)

    zk_path = '/huskar/%s/%s' % (data_type, test_user.username)
    zk.ensure_path(zk_path)
    sleep(0.1)

    r = client.get('/whoami', headers={'Authorization': test_token})
    assert_response_ok(r)
    data = r.json['data']
    assert data['username'] == test_user.username
    assert data['is_application'] is True
    assert data['is_admin'] is False
Пример #6
0
def test_enable_minimal_mode_by_switch(client, faker, mocker):
    test_user = User(username=faker.safe_email().split('@')[0])
    test_token = test_user.generate_token(settings.SECRET_KEY)

    assert User.get_by_name(test_user.username) is None

    def fake_switch(name, default=True):
        if name == SWITCH_ENABLE_MINIMAL_MODE:
            return True
        return default

    mocker.patch.object(switch, 'is_switched_on', fake_switch)
    mocker.patch.object(settings, 'ADMIN_EMERGENCY_USER_LIST', [
        test_user.username,
    ])

    r = client.get('/whoami', headers={'Authorization': test_token})
    assert_response_ok(r)
    assert r.headers['X-Minimal-Mode'] == '1'
    assert r.headers['X-Minimal-Mode-Reason'] == 'switch'
    data = r.json['data']
    assert data['username'] == test_user.username
    assert data['is_application'] is False
    assert data['is_admin'] is True