"""Tests for the basic utils library.""" from unittest.mock import MagicMock from users import constants from users.utils import basic_utils def test_sign_token(): """Test sign_token.""" unassigned_token = bytes( 'timestamp={0}&label_id={1}&user_id={2}'.format('1530106655', '123', 'alw:123').encode( 'utf-8' ) ) shared_secret = bytes('I-am-a-shared-secret'.encode('utf-8')) expected_result = bytes( 'MTlmZGUzYjRmNTM0NzEwZjgxZjlkOGQ4N2I5OWU1N2EyYTkwOGZkOA=='.encode('utf-8') ) result = basic_utils.sign_token(unassigned_token, shared_secret) assert result == expected_result def test_get_pagination(monkeypatch): """Test pagination is returned as namedtuple.""" expected_offset = 10 expected_limit = 100 mockRequest = MagicMock() mockRequest.args.get.side_effect = [expected_offset, expected_limit] result = basic_utils.get_pagination(mockRequest) assert result.offset == expected_offset assert result.limit == expected_limit def test_get_pagination_uses_defaults(monkeypatch): """Test pagination is returned as named tuple for default values.""" mockRequest = MagicMock() mockRequest.args.get.side_effect = [None, None] result = basic_utils.get_pagination(mockRequest) assert result.offset == constants.PAGE_OFFSET_DEFAULT assert result.limit == constants.PAGE_LIMIT_DEFAULT def test_get_pagination_handles_non_ints(monkeypatch): """Test pagination handles non ints.""" mockRequest = MagicMock() mockRequest.args.get.side_effect = ['not', 'number'] result = basic_utils.get_pagination(mockRequest) assert result.offset == constants.PAGE_OFFSET_DEFAULT assert result.limit == constants.PAGE_LIMIT_DEFAULT