"""Handler utils unit tests.""" from unittest.mock import patch from oto import response from feature_fm.utils import handler_utils def test_process_variables(): """Test process variables.""" token = 'YjE4Zjg1ZjJhYjZjOGJhNDVlZGRkMGJlY2YyODY4MDEwMTZmYjNkYQ==' timestamp = '1533031576' class Request(object): full_path = '/label/123/users/333?timestamp={0}&token={1}'.format( timestamp, token) args = { 'token': token } request = Request() expected_decoded_signed_token = 'b18f85f2ab6c8ba45eddd0becf286801016fb3da' expected_unencrypted_token = b'/label/123/users/333?timestamp=1533031576' signed_token, unencrypted_token, delta_time = ( handler_utils.process_variables( request=request, timestamp=timestamp, token=token)) assert signed_token == bytes(expected_decoded_signed_token.encode('utf-8')) assert unencrypted_token == expected_unencrypted_token def test_process_variables_with_additional_params(): """Test process variables with additional query params.""" token = 'YjE4Zjg1ZjJhYjZjOGJhNDVlZGRkMGJlY2YyODY4MDEwMTZmYjNkYQ==' timestamp = '1533031576' class Request(object): full_path = '/label/123/users/333?timestamp={0}&token={1}&' \ 'page_limit=50'.format(timestamp, token) args = { 'token': token } request = Request() expected_decoded_signed_token = 'b18f85f2ab6c8ba45eddd0becf286801016fb3da' expected_unencrypted_token = ( b'/label/123/users/333?timestamp=1533031576&page_limit=50') signed_token, unencrypted_token, delta_time = ( handler_utils.process_variables( request=request, timestamp=timestamp, token=token)) assert signed_token == bytes(expected_decoded_signed_token.encode('utf-8')) assert unencrypted_token == expected_unencrypted_token def test_process_variables_with_token_positioned_in_the_start(): """Test process variables with token positioned on start.""" token = 'YjE4Zjg1ZjJhYjZjOGJhNDVlZGRkMGJlY2YyODY4MDEwMTZmYjNkYQ==' timestamp = '1533031576' class Request(object): full_path = '/label/123/users/333?token={0}×tamp={1}&' \ 'page_limit=50'.format(token, timestamp) args = { 'token': token } request = Request() expected_decoded_signed_token = 'b18f85f2ab6c8ba45eddd0becf286801016fb3da' expected_unencrypted_token = ( b'/label/123/users/333?timestamp=1533031576&page_limit=50') signed_token, unencrypted_token, delta_time = ( handler_utils.process_variables( request=request, timestamp=timestamp, token=token)) assert signed_token == bytes(expected_decoded_signed_token.encode('utf-8')) assert unencrypted_token == expected_unencrypted_token @patch('flask.request') @patch('owsrequest.flask_request.verify_grass_access') def test_access_validation(flask_mock, grass_mock): """Test access validation.""" flask_mock.return_value = response.Response() result = handler_utils.access_validation(flask_mock, 'vendor', '123') assert result @patch('flask.request') @patch('owsrequest.flask_request.verify_grass_access') def test_access_validation_with_error(flask_mock, grass_mock): """Test access validation with error.""" flask_mock.return_value = response.create_fatal_response() result = handler_utils.access_validation(flask_mock, 'vendor', '123') assert not result