diff --git a/examples/sample_get_identity_buckets.py b/examples/sample_get_identity_buckets.py index 1d42820..b0f29f6 100644 --- a/examples/sample_get_identity_buckets.py +++ b/examples/sample_get_identity_buckets.py @@ -6,7 +6,7 @@ # this sample client takes timestamp string as input and generates an IdentityBucketsResponse object which contains # a list of buckets, the timestamp string in the format YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]], -# for example: UTC: 2024-07-02, 2024-07-02T14:30:15.123456+00:00 and EST: 2024-07-02T14:30:15.123456-05:00 +# for example: local timezone: 2024-07-02, UTC: 2024-07-02T14:30:15.123456+00:00, EST: 2024-07-02T14:30:15.123456-05:00 def _usage(): print('Usage: python3 sample_get_identity_buckets.py ' diff --git a/tests/test_identity_map_client_unit_tests.py b/tests/test_identity_map_client_unit_tests.py index 7a928e3..7820969 100644 --- a/tests/test_identity_map_client_unit_tests.py +++ b/tests/test_identity_map_client_unit_tests.py @@ -1,11 +1,15 @@ +import base64 +import json import unittest import datetime as dt +from unittest.mock import patch, MagicMock from uid2_client import IdentityMapClient, get_datetime_utc_iso_format class IdentityMapUnitTests(unittest.TestCase): - identity_map_client = IdentityMapClient("UID2_BASE_URL", "UID2_API_KEY", "wJ0hP19QU4hmpB64Y3fV2dAed8t/mupw3sjN5jNRFzg=") + UID2_SECRET_KEY = base64.b64encode(b"UID2_CLIENT_SECRET").decode() + identity_map_client = IdentityMapClient("UID2_BASE_URL", "UID2_API_KEY", UID2_SECRET_KEY) def test_identity_buckets_invalid_timestamp(self): test_cases = ["1234567890", @@ -30,3 +34,23 @@ def test_get_datetime_utc_iso_format_timestamp(self): iso_format_timestamp = get_datetime_utc_iso_format(timestamp) self.assertEqual(expected_timestamp, iso_format_timestamp) + @patch('uid2_client.identity_map_client.make_v2_request') + @patch('uid2_client.identity_map_client.post') + @patch('uid2_client.identity_map_client.parse_v2_response') + def test_identity_buckets_request(self, mock_parse_v2_response, mock_post, mock_make_v2_request): + expected_req = b'{"since_timestamp": "2024-07-02T14:30:15.123456"}' + test_cases = ["2024-07-02T14:30:15.123456+00:00", "2024-07-02 09:30:15.123456-05:00", + "2024-07-02T08:30:15.123456-06:00", "2024-07-02T10:30:15.123456-04:00", + "2024-07-02T06:30:15.123456-08:00", "2024-07-02T23:30:15.123456+09:00", + "2024-07-03T00:30:15.123456+10:00", "2024-07-02T20:00:15.123456+05:30"] + mock_req = b'mocked_request_data' + mock_nonce = 'mocked_nonce' + mock_make_v2_request.return_value = (mock_req, mock_nonce) + mock_response = MagicMock() + mock_response.read.return_value = b'{"mocked": "response"}' + mock_post.return_value = mock_response + mock_parse_v2_response.return_value = b'{"body":[],"status":"success"}' + for timestamp in test_cases: + self.identity_map_client.get_identity_buckets(dt.datetime.fromisoformat(timestamp)) + called_args, called_kwargs = mock_make_v2_request.call_args + self.assertEqual(expected_req, called_args[2])