from unittest.mock import MagicMock from ows_accounting.constants import pagination from ows_accounting.utils import request_flask def test_get_pagination(monkeypatch): """Tests pagination is returned as namedtuple """ expected_offset = 10 expected_limit = 100 mockRequest = MagicMock() mockRequest.args.get.side_effect = [expected_offset, expected_limit] result = request_flask.get_pagination(mockRequest) assert result.offset == expected_offset assert result.limit == expected_limit def test_get_pagination_uses_defaults(monkeypatch): """Tests pagination is returned as named tuple for default values """ mockRequest = MagicMock() mockRequest.args.get.side_effect = [None, None] result = request_flask.get_pagination(mockRequest) assert result.offset == pagination.PAGE_OFFSET_DEFAULT assert result.limit == pagination.PAGE_LIMIT_DEFAULT def test_get_pagination_handles_non_ints(monkeypatch): """Tests pagination handles non ints """ mockRequest = MagicMock() mockRequest.args.get.side_effect = ['not', 'number'] result = request_flask.get_pagination(mockRequest) assert result.offset == pagination.PAGE_OFFSET_DEFAULT assert result.limit == pagination.PAGE_LIMIT_DEFAULT def test_get_grass_account(monkeypatch): """Tests Grass headers are returned as namedtuple """ expected_type = 'account-type' expected_id = 'account-id' mockRequest = MagicMock() mockRequest.headers.get.side_effect = [expected_type, expected_id] result = request_flask.get_account_from_grass_headers(mockRequest) assert result.type == expected_type assert result.id == expected_id