diff --git a/explorer/rest/tests/test_rest.py b/explorer/rest/tests/test_rest.py index 981bbcbe4..1be196d2c 100644 --- a/explorer/rest/tests/test_rest.py +++ b/explorer/rest/tests/test_rest.py @@ -7,7 +7,7 @@ from rest import create_app -from .test.DatabaseTestUtils import BLOCK_VIEWS, DatabaseConfig, initialize_database +from .test.DatabaseTestUtils import BLOCK_VIEWS, NAMESPACE_VIEWS, DatabaseConfig, initialize_database DATABASE_CONFIG_INI = 'db_config.ini' @@ -17,6 +17,11 @@ EXPECTED_BLOCK_VIEW_2 = BLOCK_VIEWS[1] +EXPECTED_NAMESPACE_VIEW_1 = NAMESPACE_VIEWS[0] + +EXPECTED_NAMESPACE_VIEW_2 = NAMESPACE_VIEWS[1] + + # endregion # region fixtures @@ -180,3 +185,104 @@ def test_api_nem_blocks_invalid_sort(client): # pylint: disable=redefined-outer # endregion + + +# region /namespace/ + +def _assert_get_api_nem_namespace_by_name(client, name, expected_status_code, expected_result): # pylint: disable=redefined-outer-name + # Act: + response = client.get(f'/api/nem/namespace/{name}') + + print(response.json) + + # Assert: + assert expected_status_code == response.status_code + assert expected_result == response.json + + +def test_api_nem_namespace_by_name(client): # pylint: disable=redefined-outer-name + _assert_get_api_nem_namespace_by_name(client, 'oxford', 200, EXPECTED_NAMESPACE_VIEW_1.to_dict()) + + +def test_api_nem_namespace_non_exist(client): # pylint: disable=redefined-outer-name + _assert_get_api_nem_namespace_by_name(client, 'non_exist_namespace', 404, { + 'message': 'Resource not found', + 'status': 404 + }) + +# endregion + + +# region /namespaces + +def _get_api_nem_namespaces(client, **query_params): # pylint: disable=redefined-outer-name + query_string = '&'.join(f'{key}={val}' for key, val in query_params.items()) + return client.get(f'/api/nem/namespaces?{query_string}') + + +def _assert_get_api_nem_namespaces(client, expected_code, expected_result, **query_params): # pylint: disable=redefined-outer-name + # Act: + response = _get_api_nem_namespaces(client, **query_params) + + # Assert: + assert expected_code == response.status_code + assert expected_result == response.json + + +def test_api_nem_namespaces_without_params(client): # pylint: disable=redefined-outer-name, invalid-name + # Act: + response = _get_api_nem_namespaces(client) + + # Assert: + assert 200 == response.status_code + assert [EXPECTED_NAMESPACE_VIEW_2.to_dict(), EXPECTED_NAMESPACE_VIEW_1.to_dict()] == response.json + + +def test_api_nem_namespaces_applies_limit(client): # pylint: disable=redefined-outer-name, invalid-name + _assert_get_api_nem_namespaces(client, 200, [EXPECTED_NAMESPACE_VIEW_2.to_dict()], limit=1) + + +def test_api_nem_namespaces_applies_offset(client): # pylint: disable=redefined-outer-name, invalid-name + _assert_get_api_nem_namespaces(client, 200, [EXPECTED_NAMESPACE_VIEW_1.to_dict()], offset=1) + + +def test_api_nem_namespaces_applies_sorted_by_id_desc(client): # pylint: disable=redefined-outer-name, invalid-name + _assert_get_api_nem_namespaces(client, 200, [EXPECTED_NAMESPACE_VIEW_2.to_dict(), EXPECTED_NAMESPACE_VIEW_1.to_dict()], sort='desc') + + +def test_api_nem_namespaces_applies_sorted_by_id_asc(client): # pylint: disable=redefined-outer-name, invalid-name + _assert_get_api_nem_namespaces(client, 200, [EXPECTED_NAMESPACE_VIEW_1.to_dict(), EXPECTED_NAMESPACE_VIEW_2.to_dict()], sort='asc') + + +def test_api_nem_namespaces_with_all_params(client): # pylint: disable=redefined-outer-name, invalid-name + _assert_get_api_nem_namespaces(client, 200, [EXPECTED_NAMESPACE_VIEW_2.to_dict()], limit=1, offset=1, sort='asc') + + +def _assert_get_api_nem_namespaces_fail(client, **query_params): # pylint: disable=redefined-outer-name + # Act: + response = _get_api_nem_namespaces(client, **query_params) + + # Assert: + assert 400 == response.status_code + assert { + 'message': 'Bad request', + 'status': 400 + } == response.json + + +def test_api_nem_namespaces_invalid_limit(client): # pylint: disable=redefined-outer-name, invalid-name + _assert_get_api_nem_namespaces_fail(client, limit=-1) + _assert_get_api_nem_namespaces_fail(client, limit='invalid') + + +def test_api_nem_namespaces_invalid_offset(client): # pylint: disable=redefined-outer-name, invalid-name + _assert_get_api_nem_namespaces_fail(client, offset=-1) + _assert_get_api_nem_namespaces_fail(client, offset='invalid') + + +def test_api_nem_namespaces_invalid_sort(client): # pylint: disable=redefined-outer-name + _assert_get_api_nem_namespaces_fail(client, sort=-1) + _assert_get_api_nem_namespaces_fail(client, sort='invalid') + + +# endregion