# -*- coding: utf-8 -*-
"""
test_01_accept_time_get_headers
~~~~~~~~~~~~~~

The 2GIS API Test
Check time get headers

:author: Vadim Glushkov
:copyright: Copyright 2019, The2GIS API Test"
:license: MIT
:version: 1.0.0
:maintainer: Vadim Glushkov
:email: plussg@yandex.ru
:status: Development
"""


import pytest
import allure
from tools.api_responses import get_response


@allure.epic("Поизитивные тесты API")
@allure.suite("Позитивное тестирование время ответов")
@allure.title("Проверка время ответа при нечётком поиске, при фильтрации по коду страны, при постраничной разбивке")
@pytest.mark.parametrize("json_params", [{"page": 1, "page_size": 5},
                                         {"country_code": "ru", "page": 1, "page_size": 5},
                                         {"q": "ОРСК"}])
def test_01_time_response_for_valid_request(setup_option, json_params):
    """
    Проверяем время ответов сервера при валидных запросах
    :param setup_option: Установочные параметры
    :type setup_option: dict
    :param json_params: Параметры GET запроса
    :type json_params: dict
    :return:
    """

    api_url = setup_option['site_url']
    request_params = json_params
    api_response = get_response(api_url, request_params)
    testing_message = (f"  EndPoint: {api_response.url}\n"
                       f"  Status:   {api_response.status_code}\n"
                       f"  Headers:  {api_response.headers}\n"
                       f"  Content:  {api_response.content}")
    check = api_response.elapsed.total_seconds() <= 0.2
    assert check, f"""Время ответа {api_response.elapsed.total_seconds()} больше 0.2 сек\r\n""" + testing_message


@allure.epic("Смок тесты API")
@allure.suite("Позитивное тестирование время ответов")
@allure.title("Проверка время ответа при нечётком поиске, при фильтрации по коду страны, при постраничной разбивке")
@pytest.mark.parametrize("json_params", [{"page": 1, "page_size": 2},
                                         {"country_code": "tz", "page": 1, "page_size": 5},
                                         {"q": "ОР"}])
def test_01_time_response_for_invalid_request(setup_option, json_params):
    """
    Проверяем время ответов сервера при невалидных запросах
    :param setup_option: Установочные параметры
    :type setup_option: dict
    :param json_params: Параметры GET запроса
    :type json_params: dict
    :return:
    """

    api_url = setup_option['site_url']
    request_params = json_params
    api_response = get_response(api_url, request_params)
    testing_message = (f"  EndPoint: {api_response.url}\n"
                       f"  Status:   {api_response.status_code}\n"
                       f"  Headers:  {api_response.headers}\n"
                       f"  Content:  {api_response.content}")
    check = api_response.elapsed.total_seconds() <= 0.5
    assert check, f"""Время ответа {api_response.elapsed.total_seconds()} больше 0.5 сек\r\n""" + testing_message

[((24, 1, 24, 53), 'allure.epic', 'allure.epic', ({(24, 13, 24, 52): '"""Поизитивные тесты API"""'}, {}), "('Поизитивные тесты API')", False, 'import allure\n'), ((25, 1, 25, 88), 'allure.suite', 'allure.suite', ({(25, 14, 25, 87): '"""Позитивное тестирование время ответов"""'}, {}), "('Позитивное тестирование время ответов')", False, 'import allure\n'), ((26, 1, 26, 200), 'allure.title', 'allure.title', ({(26, 14, 26, 199): '"""Проверка время ответа при нечётком поиске, при фильтрации по коду страны, при постраничной разбивке"""'}, {}), "(\n    'Проверка время ответа при нечётком поиске, при фильтрации по коду страны, при постраничной разбивке'\n    )", False, 'import allure\n'), ((27, 1, 29, 60), 'pytest.mark.parametrize', 'pytest.mark.parametrize', ({(27, 25, 27, 38): '"""json_params"""', (27, 40, 29, 59): "[{'page': 1, 'page_size': 5}, {'country_code': 'ru', 'page': 1, 'page_size':\n    5}, {'q': 'ОРСК'}]"}, {}), "('json_params', [{'page': 1, 'page_size': 5}, {\n    'country_code': 'ru', 'page': 1, 'page_size': 5}, {'q': 'ОРСК'}])", False, 'import pytest\n'), ((51, 1, 51, 39), 'allure.epic', 'allure.epic', ({(51, 13, 51, 38): '"""Смок тесты API"""'}, {}), "('Смок тесты API')", False, 'import allure\n'), ((52, 1, 52, 88), 'allure.suite', 'allure.suite', ({(52, 14, 52, 87): '"""Позитивное тестирование время ответов"""'}, {}), "('Позитивное тестирование время ответов')", False, 'import allure\n'), ((53, 1, 53, 200), 'allure.title', 'allure.title', ({(53, 14, 53, 199): '"""Проверка время ответа при нечётком поиске, при фильтрации по коду страны, при постраничной разбивке"""'}, {}), "(\n    'Проверка время ответа при нечётком поиске, при фильтрации по коду страны, при постраничной разбивке'\n    )", False, 'import allure\n'), ((54, 1, 56, 56), 'pytest.mark.parametrize', 'pytest.mark.parametrize', ({(54, 25, 54, 38): '"""json_params"""', (54, 40, 56, 55): "[{'page': 1, 'page_size': 2}, {'country_code': 'tz', 'page': 1, 'page_size':\n    5}, {'q': 'ОР'}]"}, {}), "('json_params', [{'page': 1, 'page_size': 2}, {\n    'country_code': 'tz', 'page': 1, 'page_size': 5}, {'q': 'ОР'}])", False, 'import pytest\n'), ((42, 19, 42, 56), 'tools.api_responses.get_response', 'get_response', ({(42, 32, 42, 39): 'api_url', (42, 41, 42, 55): 'request_params'}, {}), '(api_url, request_params)', False, 'from tools.api_responses import get_response\n'), ((69, 19, 69, 56), 'tools.api_responses.get_response', 'get_response', ({(69, 32, 69, 39): 'api_url', (69, 41, 69, 55): 'request_params'}, {}), '(api_url, request_params)', False, 'from tools.api_responses import get_response\n')]