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
Пример #2
0
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
Пример #3
0
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
Пример #5
0
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() == []
Пример #7
0
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 + '/')
Пример #8
0
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
Пример #13
0
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')
Пример #17
0
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
Пример #18
0
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')
Пример #19
0
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']}"
Пример #20
0
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'}