Пример #1
0
    def test_server_side_event_error(self):
        malformed_dict = {"a": "b"}
        event = self.sample_event(malformed_dict)
        result = lambda_handler(event, self.sample_context)

        # Assert the malformed row gets skipped!
        self.assertEqual(len(result["records"]), 0)
Пример #2
0
    def test_encoded_data_is_transformed(self):
        event = self.sample_event(self.sample_record_data)
        result = lambda_handler(event, self.sample_context)
        encoded_data = result["records"][0]["data"]
        decoded_data = base64.b64decode(encoded_data)
        decoded_dict = json.loads(decoded_data)
        server_side_event = self.sample_record_data["serverSideEvent"]

        self.assertEqual(decoded_dict["data_source_id"],
                         self.sample_record_data["pixelId"])
        self.assertEqual(decoded_dict["timestamp"],
                         server_side_event["event_time"])
        self.assertEqual(decoded_dict["pc_test_event_code"],
                         server_side_event["pc_test_event_code"])

        self.assertEqual(decoded_dict["currency_type"],
                         server_side_event["custom_data"]["currency"])
        self.assertEqual(decoded_dict["conversion_value"],
                         server_side_event["custom_data"]["value"])
        self.assertEqual(decoded_dict["event_type"],
                         server_side_event["event_name"])
        self.assertEqual(decoded_dict["user_data"]["email"],
                         server_side_event["user_data"]["em"])
        self.assertEqual(
            decoded_dict["user_data"]["device_id"],
            server_side_event["user_data"]["madid"],
        )
        self.assertEqual(decoded_dict["action_source"],
                         server_side_event["action_source"])
Пример #3
0
    def test_user_data_fields(self):
        record = self.sample_record_data
        server_side_event = record["serverSideEvent"]
        server_side_event["user_data"] = {
            "em":
            "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa11111111111111111111111111111111",
            "madid":
            "bbbbbbbbbbbbbbbb2222222222222222",
            "ph":
            "cccccccccccccccccccccccccccccccc33333333333333333333333333333333",
            "client_ip_address":
            "123.123.123.123",
            "client_user_agent":
            "".join([
                "Mozilla/5.0 (iPhone; CPU iPhone OS 12_5_5 like Mac OS X) ",
                "AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 ",
                "Mobile/15E148 Safari/604.1",
            ]),
            "fbc":
            "fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890",
            "fbp":
            "fb.1.1558571054389.1098115397",
        }
        event = self.sample_event(record)
        result = lambda_handler(event, self.sample_context)
        encoded_data = result["records"][0]["data"]
        decoded_data = base64.b64decode(encoded_data)
        decoded_dict = json.loads(decoded_data)

        self.assertEqual(server_side_event["user_data"]["em"],
                         decoded_dict["user_data"]["email"])
        self.assertEqual(
            server_side_event["user_data"]["madid"],
            decoded_dict["user_data"]["device_id"],
        )
        self.assertEqual(server_side_event["user_data"]["ph"],
                         decoded_dict["user_data"]["phone"])
        self.assertEqual(
            server_side_event["user_data"]["client_ip_address"],
            decoded_dict["user_data"]["client_ip_address"],
        )
        self.assertEqual(
            server_side_event["user_data"]["client_user_agent"],
            decoded_dict["user_data"]["client_user_agent"],
        )
        self.assertEqual(server_side_event["user_data"]["fbc"],
                         decoded_dict["user_data"]["click_id"])
        self.assertEqual(server_side_event["user_data"]["fbp"],
                         decoded_dict["user_data"]["login_id"])
        self.assertEqual("Mobile Safari",
                         decoded_dict["user_data"]["browser_name"])
        self.assertEqual("iOS", decoded_dict["user_data"]["device_os"])
        self.assertEqual("12.5.5",
                         decoded_dict["user_data"]["device_os_version"])
Пример #4
0
    def test_null_row_skipped(self):
        null_dict = {
            "serverSideEvent": {
                "custom_data": {},
                "user_data": {},
                "action_source": "website",
            },
            "pixelId": "4321",
        }
        event = self.sample_event(null_dict)
        result = lambda_handler(event, self.sample_context)

        self.assertEqual(len(result["records"]), 0)
Пример #5
0
 def test_required_user_fields(self):
     fields = ["em", "madid", "ph", "fbc", "fbp"]
     for field in fields:
         record = {
             "serverSideEvent": {
                 "user_data": {
                     field: "test",
                 }
             }
         }
         event = self.sample_event(record)
         result = lambda_handler(event, self.sample_context)
         self.assertEqual(len(result["records"]), 1)
Пример #6
0
    def test_empty_user_data(self):
        record = {
            "serverSideEvent": {
                "event_time": 1234,
                "custom_data": {
                    "currency": "usd",
                    "value": 2
                },
                "event_name": "Purchase",
                "user_data": {},
                "action_source": "website",
            },
            "pixelId": "4321",
        }
        event = self.sample_event(record)
        result = lambda_handler(event, self.sample_context)
        encoded_data = result["records"][0]["data"]
        decoded_data = base64.b64decode(encoded_data)
        decoded_dict = json.loads(decoded_data)

        self.assertEqual({}, decoded_dict["user_data"])
Пример #7
0
 def test_non_encoded_data_is_transformed(self):
     event = self.sample_event(self.sample_record_data)
     result = lambda_handler(event, self.sample_context)
     self.assertEqual(result["records"][0]["recordId"],
                      event["records"][0]["recordId"])
     self.assertEqual(result["records"][0]["result"], "Ok")