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'
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
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
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
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
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