示例#1
0
def create_visitor_id(visitor_id, options):
    """Creates new VisitorId"""
    if not visitor_id:
        visitor_id = VisitorId()
    if not options:
        options = {}

    device_id = options.get("device_id")
    visitor = options.get("visitor")

    if not visitor_id.tnt_id:
        visitor_id.tnt_id = device_id
    if not visitor_id.marketing_cloud_visitor_id:
        visitor_id.marketing_cloud_visitor_id = get_marketing_cloud_visitor_id(visitor)
    visitor_id.customer_ids = get_customer_ids(visitor_id.customer_ids, visitor)
    return visitor_id
 def test_get_or_create_visitor_id_uses_tnt_id(self):
     customer_id = CustomerId(id="custId123", integration_code="A", authenticated_state=AuthenticatedState.UNKNOWN)
     visitor_id = VisitorId(tnt_id="tnt123",
                            customer_ids=[customer_id],
                            third_party_id="thirtPartyId123")
     result = get_or_create_visitor_id(visitor_id)
     self.assertEqual(result, "tnt123")
示例#3
0
def get_visitor_id(request, customer_ids=None):
    tnt_id = request.args.get("tntId")
    third_party_id = request.args.get("thirdPartyId")
    mcid = request.args.get("mcid")
    return VisitorId(tnt_id=tnt_id or None,
                     third_party_id=third_party_id or None,
                     marketing_cloud_visitor_id=mcid or None,
                     customer_ids=customer_ids or None)
def create_id_response(_id):
    """Create VisitorId"""
    if not _id:
        return None

    return VisitorId(
        tnt_id=_id.get("tntId"),
        third_party_id=_id.get("thirdPartyId"),
        marketing_cloud_visitor_id=_id.get("marketingCloudVisitorId"))
 def test_valid_visitor_id_existing_customer_id(self):
     customer_ids = [
         CustomerId(id="custId123",
                    integration_code="A",
                    authenticated_state=AuthenticatedState.AUTHENTICATED)
     ]
     visitor_id = VisitorId(customer_ids=customer_ids)
     result = valid_visitor_id(visitor_id, LOCATION_HINT)
     self.assertEqual(visitor_id, result)
def create_visitor_id(_id):
    """Creates new VisitorId"""
    if not _id:
        return None

    return VisitorId(
        tnt_id=_id.get("tntId"),
        third_party_id=_id.get("thirdPartyId"),
        marketing_cloud_visitor_id=_id.get("marketingCloudVisitorId"),
        customer_ids=create_customer_ids(_id.get("customerIds")))
    def test_compute_allocation_generate_visitor_id(self):
        visitor_id = None
        allocation = compute_allocation(CLIENT_ID, ACTIVITY_ID, visitor_id, SALT)
        self.assertTrue(isinstance(allocation, float))
        self.assertTrue(allocation >= 0)
        self.assertTrue(allocation < 100)

        visitor_id = VisitorId()
        allocation = compute_allocation(CLIENT_ID, ACTIVITY_ID, visitor_id, SALT)
        self.assertTrue(isinstance(allocation, float))
        self.assertTrue(allocation >= 0)
        self.assertTrue(allocation < 100)
 def test_valid_visitor_id_existing_tnt_id(self):
     customer_ids = [
         CustomerId(id="custId123",
                    integration_code="A",
                    authenticated_state=AuthenticatedState.AUTHENTICATED)
     ]
     visitor_id = VisitorId(tnt_id="tnt123",
                            third_party_id="thirdParty123",
                            marketing_cloud_visitor_id="mcid123",
                            customer_ids=customer_ids)
     result = valid_visitor_id(visitor_id, LOCATION_HINT)
     self.assertEqual(visitor_id, result)
 def test_valid_visitor_id_invalid_customer_id(self):
     customer_ids = [
         CustomerId(id="custIdUnknown",
                    integration_code="A",
                    authenticated_state=AuthenticatedState.UNKNOWN),
         CustomerId(id="custIdLoggedOut",
                    integration_code="A",
                    authenticated_state=AuthenticatedState.LOGGED_OUT)
     ]
     visitor_id = VisitorId(customer_ids=customer_ids)
     result = valid_visitor_id(visitor_id, LOCATION_HINT)
     self.assertIsNotNone(result.tnt_id)
示例#10
0
def valid_visitor_id(visitor_id, target_location_hint):
    """
    :param visitor_id: (delivery_api_client.Model.visitor_id.VisitorId) visitor ID object
    :param target_location_hint: (str) Target location hint
    :return: (delivery_api_client.Model.visitor_id.VisitorId) updated copy of visitor ID object
    """
    result = deepcopy(visitor_id) if visitor_id else VisitorId()

    if _no_ids(result):
        location_hint = ".{}_0".format(target_location_hint) if target_location_hint \
                                                                and is_string(target_location_hint) else ""
        result.tnt_id = "{}{}".format(create_uuid(), location_hint)
    return result
 def test_get_or_create_visitor_id_never_uses_customer_id(self):
     customer_ids = [
         CustomerId(id="custId123unknown", integration_code="A", authenticated_state=AuthenticatedState.UNKNOWN),
         CustomerId(id="custId123loggedout", integration_code="A",
                    authenticated_state=AuthenticatedState.LOGGED_OUT),
         CustomerId(id="custId123authenticated", integration_code="A",
                    authenticated_state=AuthenticatedState.AUTHENTICATED)
     ]
     visitor_id = VisitorId(customer_ids=customer_ids)
     result = get_or_create_visitor_id(visitor_id)
     self.assertTrue(isinstance(result, str))
     self.assertGreater(len(result), 0)
     self.assertIsNot(result, "custId123unknown")
     self.assertIsNot(result, "custId123loggedout")
     self.assertIsNot(result, "custId123authenticated")
示例#12
0
def process_response(session_id, cluster, request, response,
                     decisioning_method=DecisioningMethod.SERVER_SIDE.value, decisioning_engine=None):
    """Process Delivery API response
       :return (TargetDeliveryResponse) Returns response envelope
    """
    _id = response.id or VisitorId()
    edge_host = response.edge_host

    result = TargetDeliveryResponse(
        target_cookie=get_target_cookie(session_id, _id),
        target_location_hint_cookie=get_target_location_hint_cookie(cluster, edge_host),
        analytics_details=get_analytics_details(response),
        trace=get_trace_details(response),
        response_tokens=get_response_tokens(response),
        meta=get_response_meta(
            request,
            decisioning_method,
            decisioning_engine
        ),
        response=response)

    return remove_empty_values(result)
示例#13
0
        "channel":
        ChannelType.WEB,
        "address": {
            "url": "http://local-target-test:8080/"
        },
        "userAgent":
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:73.0) Gecko/20100101 Firefox/73.0"
    },
    "prefetch": {
        "mboxes": [{
            "name": "mbox-something",
            "index": 1
        }]
    }
})
TARGET_REQUEST.id = VisitorId()


class TestNotificationProvider(unittest.TestCase):
    """TestNotificationProvider"""
    def setUp(self):
        self.mock_notify = Mock()
        self.provider = NotificationProvider(TARGET_REQUEST, None,
                                             self.mock_notify)

    def test_send_notifications_display_type(self):
        event_token = "B8C2FP2IuBgmeJcDfXHjGpNWHtnQtQrJfmRrQugEa2qCnQ9Y9OaLL2gsdrWQTvE54PwSz67rmXWmSnkXpSSS2Q=="
        options = [
            Option(content="<h1>it's firefox</h1>",
                   type=OptionType.HTML,
                   event_token=event_token)
 def test_valid_visitor_id_existing_third_party(self):
     visitor_id = VisitorId(third_party_id="thirdParty123")
     result = valid_visitor_id(visitor_id, LOCATION_HINT)
     self.assertEqual(visitor_id, result)
 def test_compute_allocation_third_party_id(self):
     visitor_id = VisitorId(third_party_id="thirtPartyId123")
     allocation = compute_allocation(CLIENT_ID, ACTIVITY_ID, visitor_id, SALT)
     self.assertEqual(allocation, 73.15)
 def test_compute_allocation_tnt_id_with_location_hint(self):
     visitor_id = VisitorId(tnt_id="tntId123.28_0")
     allocation = compute_allocation(CLIENT_ID, ACTIVITY_ID, visitor_id, SALT)
     self.assertEqual(allocation, 21.94)
 def test_compute_allocation_ecid(self):
     visitor_id = VisitorId(marketing_cloud_visitor_id="ecid123")
     allocation = compute_allocation(CLIENT_ID, ACTIVITY_ID, visitor_id, SALT)
     self.assertEqual(allocation, 29.06)
 def test_valid_visitor_id_existing_ecid(self):
     visitor_id = VisitorId(marketing_cloud_visitor_id="mcid123")
     result = valid_visitor_id(visitor_id, LOCATION_HINT)
     self.assertEqual(visitor_id, result)
 def test_valid_visitor_id_generate_tnt_id(self):
     visitor_id = VisitorId()
     result = valid_visitor_id(visitor_id, LOCATION_HINT)
     self.assertIsNotNone(result.tnt_id)