Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
26 changes: 25 additions & 1 deletion tests/test_identity_map_client_unit_tests.py
Original file line number Diff line number Diff line change
@@ -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",
Expand All @@ -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])