def test_query_without_targets(mocker): directory_client = mocker.patch( 'app.routers.grafana_json.__get_directory_client') response = client.post('v1/grafana/12345/query', headers={ 'client-id': 'mr_test', 'client-secret': 'secret' }, json={ 'maxDataPoints': 31, 'adhocFilters': [], 'intervalMs': 47, 'targets': [], 'range': { 'from': '2021-01-01', 'to': '2021-02-01' } }) assert response.status_code == HTTPStatus.OK assert not directory_client.called response = client.post('v1/grafana/12345/query', headers={ 'client-id': 'mr_test', 'client-secret': 'secret' }, json={ 'maxDataPoints': 31, 'adhocFilters': [], 'intervalMs': 47, 'targets': [{ 'refId': 'id', 'target': '', 'type': 'atype', 'data': {} }], 'range': { 'from': '2021-01-01', 'to': '2021-02-01' } }) assert response.status_code == HTTPStatus.OK assert not directory_client.called
def test_mock_search_weather(client, mocker): mocker.patch('requests.request', side_effect=Mock) response = client.post('/search', data={'cities': 'paris'}) print(response) assert response.status_code == 200 print(response.data) assert b'Weather for Paris' in response.data
def test_create(client, todos): headers = { "Content-Type": "application/json" } response = client.post("/todos", headers=headers, json=todos) assert response.status_code == 200 assert response.json['1'] == "text"
def test_upload_json_file(schema_validate, mocker): validate_json = mocker.patch('app.routers.uploads.__validate_json') directory_client = mocker.patch( 'app.routers.uploads.DataLakeDirectoryClient') convert_json_to_parquet = mocker.patch( 'app.routers.uploads.__convert_json_to_parquet') upload_file = mocker.patch('app.routers.uploads.__upload_file') content = b'Hello' with tempfile.NamedTemporaryFile(dir='.') as tmp: filename = os.path.basename(tmp.name) tmp.write(content) tmp.seek(0) response = client.post('/123456/json', headers={'Authorization': ACCESS_TOKEN}, files={'file': tmp}, params={'schema_validate': schema_validate}) assert directory_client.called assert response.status_code == HTTPStatus.CREATED assert response.json()['filename'] == filename assert validate_json.called assert validate_json.call_args.args[0:2] == (content, schema_validate) assert convert_json_to_parquet.called assert convert_json_to_parquet.call_args.args[0] == content assert upload_file.called
def test_search_weather(client): Config.WEATHER_API_KEY = "eb693de49dmsh5020a2f638740f4p1f0889jsnf4b5bc7fbd2f" Config.WEATHER_API_URL = "https://community-open-weather-map.p.rapidapi.com/find" Config.WEATHER_API_HOST = "community-open-weather-map.p.rapidapi.com" response = client.post("/search", data={"city": "london"}) assert response.status_code == 200 print(response.data) assert b"Weather for London" in response.data
def test_annotations(): response = client.post('v1/grafana/12345/annotations', headers={ 'client-id': 'mr_test', 'client-secret': 'secret' }) assert response.status_code == HTTPStatus.OK assert response.json() == []
def test_allowed_method_for_func_based_views(api, client): @api.route('/', allowed_methods=['get', 'post']) def home(request, response): response.text = 'hello' return response assert client.get(TEST_URL + '/').status_code == 200 assert client.post(TEST_URL + '/').status_code == 200 with pytest.raises(AttributeError): client.delete(TEST_URL + '/')
def test_ricotta_post_boiling_plan(client): filepath = client.config["TEST_RICOTTA"] with client.test_client() as client: url = url_for("main.ricotta_boiling_plan", _external=False) data = {"date": "2021-01-01", "submit": "submit"} with open(filepath, 'rb') as f: data['input_file'] = (io.BytesIO(f.read()), "ricotta.xlsx") response = client.post( url, data=data, follow_redirects=True, content_type='multipart/form-data' ) assert response.status_code == 200
def test_upload_file_with_no_data(url, mocker): with tempfile.NamedTemporaryFile(dir='.') as tmp: os.path.basename(tmp.name) tmp.write(b'') tmp.seek(0) response = client.post(url, headers={'Authorization': ACCESS_TOKEN}, files={'file': tmp}) assert response.status_code == HTTPStatus.NOT_ACCEPTABLE assert response.content == b'{"detail":"File size 0: Cannot store empty file."}'
def test_upload_file_no_file(test_endpoint): response = client.post( test_endpoint, headers={'Authorization': ACCESS_TOKEN}, ) assert response.status_code == HTTPStatus.UNPROCESSABLE_ENTITY assert response.json() == { 'detail': [{ 'loc': ['body', 'file'], 'msg': 'field required', 'type': 'value_error.missing' }] }
def test_tag_values(mocker): directory_client = mocker.patch( 'app.routers.grafana_json.__get_directory_client') get_grafana_settings = mocker.patch( 'app.routers.grafana_json.__get_grafana_settings') get_grafana_settings.return_value = { 'tag_values': { 'test_key': ['a', 'b', 'c'] } } response = client.post('v1/grafana/12345/tag-values', headers={ 'client-id': 'mr_test', 'client-secret': 'secret' }, json={'key': 'test_key'}) assert response.status_code == HTTPStatus.OK assert directory_client.called assert directory_client.call_args.args == ('12345', 'mr_test', 'secret') assert get_grafana_settings.called assert response.json() == ['a', 'b', 'c'] response = client.post('v1/grafana/12345/tag-values', headers={ 'client-id': 'mr_test', 'client-secret': 'secret' }, json={'key': 'unknown_key'}) assert response.status_code == HTTPStatus.OK assert directory_client.called assert get_grafana_settings.called assert response.json() == []
def test_save_state(mocker): directory_client = mocker.patch( 'app.routers.uploads.DataLakeDirectoryClient') upload_file = mocker.patch('app.routers.uploads.__upload_file') with tempfile.NamedTemporaryFile(dir='.') as tmp: filename = os.path.basename(tmp.name) tmp.write(b'binary file content') tmp.seek(0) response = client.post('/12345/save_state', headers={'Authorization': ACCESS_TOKEN}, files={'file': tmp}) assert directory_client.called assert upload_file.called assert response.status_code == HTTPStatus.CREATED assert response.json()['filename'] == filename
def test_butter_post_schedule(client): filepath = client.config["TEST_BUTTER"] with client.test_client() as client: url = url_for("main.butter_schedule", _external=False) data = { "date": "2021-01-01", "batch_number": 1, "beg_time": "07:00", "submit": "submit" } with open(filepath, 'rb') as f: data['input_file'] = (io.BytesIO(f.read()), "butter.xlsx") response = client.post(url, data=data, follow_redirects=True, content_type='multipart/form-data') assert response.status_code == 200
def test_search(mocker): directory_client = mocker.patch( 'app.routers.grafana_json.__get_directory_client') get_grafana_settings = mocker.patch( 'app.routers.grafana_json.__get_grafana_settings') get_grafana_settings.return_value = {'metrics': ['c', 'a', 'b']} response = client.post('v1/grafana/12345/search', headers={ 'client-id': 'mr_test', 'client-secret': 'secret' }) assert response.status_code == HTTPStatus.OK assert directory_client.called assert directory_client.call_args.args == ('12345', 'mr_test', 'secret') assert get_grafana_settings.called assert response.json() == ['a', 'b', 'c']
def test_query_with_targets(mocker): directory_client = mocker.patch( 'app.routers.grafana_json.__get_directory_client') get_grafana_settings = mocker.patch( 'app.routers.grafana_json.__get_grafana_settings') retrieve_data = mocker.patch('app.routers.grafana_json.__retrieve_data') filter_with_adhoc_filters = mocker.patch( 'app.routers.grafana_json.__filter_with_adhoc_filters') dataframe_to_response = mocker.patch( 'app.routers.grafana_json.__dataframe_to_response') response = client.post('v1/grafana/12345/query', headers={ 'client-id': 'mr_test', 'client-secret': 'secret' }, json={ 'maxDataPoints': 31, 'adhocFilters': [], 'intervalMs': 47, 'targets': [{ 'refId': 'id', 'target': 'atarget', 'type': 'atype', 'data': {} }], 'range': { 'from': '2021-01-01T10:01:02', 'to': '2021-02-01T08:23:20' } }) assert response.status_code == HTTPStatus.OK assert directory_client.called assert get_grafana_settings.called assert retrieve_data.called assert retrieve_data.await_args.args[0] == datetime(2021, 1, 1, 10, 1, 2) assert retrieve_data.await_args.args[1] == datetime(2021, 2, 1, 8, 23, 20) assert filter_with_adhoc_filters.called assert dataframe_to_response.called assert response.json() == []
def test_upload_file_with_file(mocker): directory_client = mocker.patch( 'app.routers.uploads.DataLakeDirectoryClient') upload_file = mocker.patch('app.routers.uploads.__upload_file') with tempfile.NamedTemporaryFile(dir='.') as tmp: filename = os.path.basename(tmp.name) tmp.write(b'Hello World') tmp.seek(0) response = client.post('/12345', headers={'Authorization': ACCESS_TOKEN}, files={'file': tmp}) assert directory_client.called assert response.status_code == HTTPStatus.CREATED assert response.json()['filename'] == filename assert upload_file.called assert upload_file.call_args.args == ( directory_client().__enter__().get_sub_directory_client(), filename, b'Hello World')
def test_article_form(client): response = client.get('/article/create') assert response.status_code == 200 headers = {'Content-Type': 'application/json'} json = { 'title': 'Article for test', 'slug': 'article-for-test', 'author_id': 1, 'description': 'some description for testing article and bla bla bla bla bla bla bla bla many times', 'short_description': 'short description', 'img': 'https://18000.com.ua/wp-content/uploads/2019/02/%D0%BA%D0%BE%D1%82%D0%B8%D0%BA%D0%B8.jpg' } response = client.post('/article/store', headers=headers, json=json) assert response.status_code == 400
def test_class_based_view_post(api, client): @api.route('/posts') class PostsView: def post(self, request, response): response.text = 'post created' return response def put(self, request, response): id = request.GET.get('id') response.text = f'post {id} updated' return response def delete(self, request, response): id = request.GET.get('id') response.text = f'post {id} deleted' return response assert client.post(TEST_URL + '/posts').text == 'post created' assert client.put(TEST_URL + '/posts?id=6').text == 'post 6 updated' assert client.delete(TEST_URL + '/posts?id=7').text == 'post 7 deleted' with pytest.raises(AttributeError): client.patch(TEST_URL + '/posts?id=1')
def test_login(client): data = {'username': config.api_user, 'password': config.api_pass} response = client.post('/login', json=data) assert response.status_code == 200 assert response.json()['access_token'] headers['Authorization'] = f"Bearer {response.json()['access_token']}"
def test_post_music(client): data = {'artist': 'a', 'title': 'a', 'album': 'a', 'label': 'a', 'year': 1} response = client.post('/music', headers=headers, json=data) assert response.status_code == 201 music.update(response.json())
def test_upload_file_no_authorization_token(test_endpoint): response = client.post(test_endpoint, ) assert response.status_code == HTTPStatus.FORBIDDEN assert response.json() == {'detail': 'Not authenticated'}