import pytest from http.client import InvalidURL from pyhttptest import utils def test_extract_properties_values_from_json(): json_data = { 'name': 'TEST: List all users', 'verb': 'GET', 'endpoint': 'users', 'host': 'http://localhost:8080', 'headers': { 'Accept-Language': 'en-US' } } json_keys = ('verb', 'endpoint', 'host') extracted_keys_values = utils.extract_properties_values_from_json( json_data, json_keys ) expected_keys_values = ( json_data['verb'], json_data['endpoint'], json_data['host'] ) assert sorted(expected_keys_values) == sorted(extracted_keys_values) def test_extract_properties_values_of_type_dict_from_json(): json_data = { 'host': 'http://localhost:8080', 'headers': { 'Accept-Language': 'en-US' } } json_keys = ('headers',) extracted_keys_values = utils.extract_properties_values_of_type_dict_from_json( json_data, json_keys ) assert 'headers' in extracted_keys_values def test_prepare_url(): host = 'http://localhost:8080' endpoint = 'users' url = utils.prepare_url(host, endpoint) assert url == 'http://localhost:8080/users' def test_prepare_url_with_none_type_arg(): url = utils.prepare_url('http://localhost:8080', None) assert url is None def test_prepare_url_with_host_arg_ends_with_backslash(): host = 'http://localhost:8080/' endpoint = 'users' url = utils.prepare_url(host, endpoint) assert url == 'http://localhost:8080/users' def test_prepare_url_with_endpoint_arg_starts_with_backslash(): host = 'http://localhost:8080' endpoint = '/users' url = utils.prepare_url(host, endpoint) assert url == 'http://localhost:8080/users' def test_prepare_url_with_both_host_and_endpoint_args_contains_backslash(): host = 'http://localhost:8080/' endpoint = '/users' url = utils.prepare_url(host, endpoint) assert url == 'http://localhost:8080/users' def test_prepare_url_with_invalid_host_arg_format(): with pytest.raises(InvalidURL) as exc: host = 'localhost.com' endpoint = 'users' utils.prepare_url(host, endpoint) assert 'Invalid URL' in str(exc.value) def test_prepare_url_with_not_supported_url_scheme(): with pytest.raises(InvalidURL) as exc: host = 'ftp://localhost.com' endpoint = 'users' utils.prepare_url(host, endpoint) assert 'Invalid URL scheme' in str(exc.value)