Skip to content

Commit

Permalink
Add unit tests to test request of getting identity buckets
Browse files Browse the repository at this point in the history
  • Loading branch information
caroline-ttd committed Jul 10, 2024
1 parent 3d31c4d commit e1933d0
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
2 changes: 1 addition & 1 deletion examples/sample_get_identity_buckets.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 <base_url> <api_key> <client_secret> <timestamp>'
Expand Down
27 changes: 26 additions & 1 deletion tests/test_identity_map_client_unit_tests.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
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 = "wJ0hP19QU4hmpB64Y3fV2dAed8t/mupw3sjN5jNRFzg="
identity_map_client = IdentityMapClient("UID2_BASE_URL", "UID2_API_KEY", UID2_SECRET_KEY)

def test_identity_buckets_invalid_timestamp(self):
test_cases = ["1234567890",
Expand All @@ -30,3 +33,25 @@ 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_timestamp = "2024-07-02T14:30:15.123456+00:00"
expected_req = json.dumps({"since_timestamp": get_datetime_utc_iso_format(dt.datetime.fromisoformat(expected_timestamp))}).encode()
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"}'
print(expected_req)
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])

0 comments on commit e1933d0

Please sign in to comment.