Source code for tests.test_utils

import pytest

from ._test_utils import get_context_with_patch_api_and_cloud
from steps.api.utils.parser import get_nested_value, set_nested_value, delete_nested_value, parse_nested_value, \
    check_expected_values_in_response
from unittest.mock import Mock


[docs] def test_get_nested_value(): dic = { 'toto': {'tata': 'titi'} } assert get_nested_value(['toto', 'tata'], dic) == 'titi'
[docs] def test_set_nested_value(): dic = {} set_nested_value(['toto', 'tata'], dic, 'titi') assert dic == { 'toto': {'tata': 'titi'} }
[docs] def test_delete_nested_value(): dic = { 'toto': {'tata': 'titi', 'tutu': 'tyty'} } delete_nested_value(['toto', 'tata'], dic) assert 'tata' not in dic['toto']
[docs] def test_parse_nested_value(): context = get_context_with_patch_api_and_cloud() assert parse_nested_value(r'["variable \"first_name\" of user 0"]', context) == ["Marie"] assert parse_nested_value(r'[{"test": "variable \"first_name\" of user 0"}]', context) == [{"test": "Marie"}]
[docs] class MockResponse(dict): def __init__(self, my_dict: dict): self._json = my_dict
[docs] def json(self) -> dict: return self._json
[docs] def test_check_expected_values_in_response(): context = get_context_with_patch_api_and_cloud() context.request = Mock() context.request.response = MockResponse({'toto': 'tata'}) result, expected_value, response_value = check_expected_values_in_response(context, 'toto', 'tata') assert result assert expected_value == 'tata' assert response_value == 'tata' result, expected_value, response_value = check_expected_values_in_response(context, 'toto', 'titi') assert not result assert expected_value == 'titi' assert response_value == 'tata' context.request.response = MockResponse({'toto': 'Marie'}) result, expected_value, response_value = check_expected_values_in_response( context, 'toto', 'variable "first_name" of user 0') assert result assert expected_value == 'Marie' assert response_value == 'Marie' result, expected_value, response_value = check_expected_values_in_response( context, 'toto', 'variable "first_name" of user 1') assert not result assert expected_value == 'Anne-Josèphe' assert response_value == 'Marie' context.request.response = MockResponse( {'last_intermediate_results': {'toto': 'tata', 'id': 42, 'timestamp': 42.42}}) result, expected_value, response_value = check_expected_values_in_response( context, 'last_intermediate_results["toto"]', 'tata') assert result assert expected_value == 'tata' assert response_value == 'tata' result, expected_value, response_value = check_expected_values_in_response( context, 'last_intermediate_results["toto"]', 'titi') assert not result assert expected_value == 'titi' assert response_value == 'tata' context.request.response = MockResponse({'intermediate_results': [{'toto': 'tata', 'id': 42, 'timestamp': 42.42}, { 'titi': 'tutu', 'id': 84, 'timestamp': 84.84}]}) result, expected_value, response_value = check_expected_values_in_response( context, 'any([result["id"] for result in response["intermediate_results"]])', '42') assert result assert expected_value == 42 assert response_value == [42, 84] result, expected_value, response_value = check_expected_values_in_response( context, 'intermediate_results[0]["toto"]', 'tata') assert result assert expected_value == 'tata' assert response_value == 'tata' context.request.response = MockResponse( {'intermediate_results': [{'d': 4, 'timestamp': 1.}, {'c': 3, 'timestamp': .5}]}) with pytest.raises(AssertionError): result, expected_value, response_value = check_expected_values_in_response( context, 'intermediate_results[0]["c"]', '3')