from flask import Response from tracker import json_utils from api import api def test_can_login_in_test_mode(): app = api.app.test_client() before_logging_in = app.get('/api/login') logging_in = app.post('/api/login', data='["test", "Test12345678"]', content_type='application/json') after_logging_in = app.get('/api/login') assert before_logging_in.status_code == 401 assert logging_in.status_code == 200 logging_in_json_response = json_utils.loads(logging_in.data) assert logging_in_json_response['name'] == 'test' assert 'capabilities' in logging_in_json_response assert after_logging_in.status_code == 200 def test_cannot_login_in_production_mode(monkeypatch): from api.resources import login class fakeconfig: api_allow_local_login=False monkeypatch.setattr(login, 'config', fakeconfig) app = api.app.test_client() before_logging_in = app.get('/api/login') logging_in = app.post('/api/login', data='["test", "Test12345678"]', content_type='application/json') after_logging_in : Response = app.get('/api/login') assert before_logging_in.status_code == 401 # auth required assert logging_in.status_code == 403 # denied, don't retry assert after_logging_in.status_code == 401 # auth required assert "UnauthenticatedError" in after_logging_in.get_json()['code']