def test_invalid_open_tracking_view(setup_django): result_metadata = {} request_data = {} request_path = [] class TestOpenView(tracking_django.OpenTrackingView): def notify_decoding_error(self, error, request): request_path.append(request.path) def notify_tracking_event(self, tracking_result): result_metadata.update(tracking_result.metadata) request_data.update(tracking_result.request_data) configuration = tracking_django.get_configuration_from_settings() url = get_open_tracking_url(metadata=DEFAULT_METADATA, configuration=configuration) path = get_open_tracking_url_path(url, configuration=configuration) request = FakeDjangoRequest() request.path = path + "bbb" with pytest.raises(Http404): TestOpenView.as_view()(request, path + "bbb") assert not result_metadata assert not request_data assert request_path[0].endswith("bbb")
def test_valid_open_tracking_view(setup_django): result_metadata = {} request_data = {} full_tracking_result = {} class TestOpenView(tracking_django.OpenTrackingView): def notify_tracking_event(self, tracking_result): full_tracking_result.update( tracking_result.to_json_dict()._asdict()) result_metadata.update(tracking_result.metadata) request_data.update(tracking_result.request_data) configuration = tracking_django.get_configuration_from_settings() url = get_open_tracking_url( metadata=DEFAULT_METADATA, configuration=configuration) path = get_open_tracking_url_path(url, configuration=configuration) request = FakeDjangoRequest() request.META["HTTP_X_REAL_IP"] = "10.10.240.22" request.META["HTTP_USER_AGENT"] = "Firefox" response = TestOpenView.as_view()(request, path) assert EXPECTED_METADATA == result_metadata assert request_data ==\ {"user_agent": "Firefox", "user_ip": "10.10.240.22"} assert response.status_code == 200 assert response.content == TRACKING_PIXEL assert response["Content-Type"] == PNG_MIME_TYPE assert full_tracking_result["is_open_tracking"] assert not full_tracking_result["is_click_tracking"]
def test_invalid_open_tracking_view(setup_django): result_metadata = {} request_data = {} request_path = [] class TestOpenView(tracking_django.OpenTrackingView): def notify_decoding_error(self, error, request): request_path.append(request.path) def notify_tracking_event(self, tracking_result): result_metadata.update(tracking_result.metadata) request_data.update(tracking_result.request_data) configuration = tracking_django.get_configuration_from_settings() url = get_open_tracking_url( metadata=DEFAULT_METADATA, configuration=configuration) path = get_open_tracking_url_path(url, configuration=configuration) request = FakeDjangoRequest() request.path = path + "bbb" with pytest.raises(Http404): TestOpenView.as_view()(request, path + "bbb") assert not result_metadata assert not request_data assert request_path[0].endswith("bbb")
def test_minimal_encrypted_get_open_tracking_url(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, metadata=DEFAULT_METADATA, encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY, ) path = get_open_tracking_url_path( url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) tracking_result = get_open_tracking_result( path, request_data=DEFAULT_REQUEST_DATA, default_metadata=DEFAULT_DEFAULT_METADATA, webhook_url=DEFAULT_WEBHOOK_URL, encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY, ) expected_metadata = copy.copy(DEFAULT_DEFAULT_METADATA) expected_metadata.update(DEFAULT_METADATA) assert tracking_result.tracked_url is None assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL assert tracking_result.request_data == DEFAULT_REQUEST_DATA assert tracking_result.metadata == expected_metadata assert tracking_result.is_open_tracking assert not tracking_result.is_click_tracking
def test_valid_open_tracking_view(setup_django): result_metadata = {} request_data = {} full_tracking_result = {} class TestOpenView(tracking_django.OpenTrackingView): def notify_tracking_event(self, tracking_result): full_tracking_result.update( tracking_result.to_json_dict()._asdict()) result_metadata.update(tracking_result.metadata) request_data.update(tracking_result.request_data) configuration = tracking_django.get_configuration_from_settings() url = get_open_tracking_url(metadata=DEFAULT_METADATA, configuration=configuration) path = get_open_tracking_url_path(url, configuration=configuration) request = FakeDjangoRequest() request.META["HTTP_X_REAL_IP"] = "10.10.240.22" request.META["HTTP_USER_AGENT"] = "Firefox" response = TestOpenView.as_view()(request, path) assert EXPECTED_METADATA == result_metadata assert request_data ==\ {"user_agent": "Firefox", "user_ip": "10.10.240.22"} assert response.status_code == 200 assert response.content == TRACKING_PIXEL assert response["Content-Type"] == PNG_MIME_TYPE assert full_tracking_result["is_open_tracking"] assert not full_tracking_result["is_click_tracking"]
def test_basic_encrypted_get_open_tracking_url(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY) path = get_open_tracking_url_path( url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) key = Fernet(DEFAULT_ENCRYPTION_KEY) # Can decrypt without raising an exception value = key.decrypt(path.encode("utf-8")) # We can only assert if the value is truthy because the value is encrypted # with a different salt each time. assert value
def test_basic_encrypted_get_open_tracking_url(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY) path = get_open_tracking_url_path( url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) key = Fernet(DEFAULT_ENCRYPTION_KEY) # Can decrypt without raising an exception value = key.decrypt(path.encode("utf-8")) # We can only assert if the value is truthy because the value is encrypted # with a different salt each time. assert value
def test_in_config_open_tracking_url_to_json(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, metadata=DEFAULT_METADATA) path = get_open_tracking_url_path( url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) tracking_result = get_open_tracking_result( path, webhook_url=DEFAULT_WEBHOOK_URL).to_json_dict() assert tracking_result.tracked_url is None assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL assert tracking_result.request_data is None assert tracking_result.metadata == DEFAULT_METADATA assert tracking_result.is_open_tracking assert not tracking_result.is_click_tracking
def test_in_config_open_tracking_full_url(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, metadata=DEFAULT_METADATA) tracking_result = get_open_tracking_result( url, webhook_url=DEFAULT_WEBHOOK_URL, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) assert tracking_result.tracked_url is None assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL assert tracking_result.request_data is None assert tracking_result.metadata == DEFAULT_METADATA assert tracking_result.is_open_tracking assert not tracking_result.is_click_tracking
def test_in_config_open_tracking_url_to_json(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, metadata=DEFAULT_METADATA) path = get_open_tracking_url_path( url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) tracking_result = get_open_tracking_result( path, webhook_url=DEFAULT_WEBHOOK_URL).to_json_dict() assert tracking_result.tracked_url is None assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL assert tracking_result.request_data is None assert tracking_result.metadata == DEFAULT_METADATA assert tracking_result.is_open_tracking assert not tracking_result.is_click_tracking
def email_encoding(self, template_id, campaign_id, segment_id): try: click_tracking_url = pytracking.get_open_tracking_url( { "template_id": template_id, "segment_id": segment_id, "campaign_id": campaign_id }, base_open_tracking_url=EMAIL_OPEN_URL, include_webhook_url=False, encryption_bytestring_key=self.key) return click_tracking_url except Exception as e: logging.warning( '[EmailTracking] :: email_encoding() :: Got exception: ' % e)
def test_in_config_open_tracking_full_url(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, metadata=DEFAULT_METADATA) tracking_result = get_open_tracking_result( url, webhook_url=DEFAULT_WEBHOOK_URL, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) assert tracking_result.tracked_url is None assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL assert tracking_result.request_data is None assert tracking_result.metadata == DEFAULT_METADATA assert tracking_result.is_open_tracking assert not tracking_result.is_click_tracking
def test_send_webhook_open(): url = get_open_tracking_url(base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, metadata=DEFAULT_METADATA) path = get_open_tracking_url_path(url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) tracking_result = get_open_tracking_result(path, webhook_url=DEFAULT_WEBHOOK_URL) payload = { "is_open_tracking": True, "is_click_tracking": False, "metadata": DEFAULT_METADATA, "request_data": None, "timestamp": tracking_result.timestamp, } with patch("pytracking.webhook.requests.post") as mocked_post: pytracking.webhook.send_webhook(tracking_result) mocked_post.assert_called_once_with(DEFAULT_WEBHOOK_URL, json=payload, timeout=DEFAULT_TIMEOUT_SECONDS)
def test_get_tracking_result(setup_django): configuration = tracking_django.get_configuration_from_settings() url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, metadata=DEFAULT_METADATA) path = get_open_tracking_url_path( url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) request = FakeDjangoRequest() request.META["HTTP_X_REAL_IP"] = "10.10.240.22" request.META["HTTP_USER_AGENT"] = "Firefox" tracking_result = tracking_django.get_tracking_result( request, path, True, configuration) assert tracking_result.request_data ==\ {"user_agent": "Firefox", "user_ip": "10.10.240.22"} assert tracking_result.metadata == EXPECTED_METADATA
def test_get_tracking_result(setup_django): configuration = tracking_django.get_configuration_from_settings() url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, metadata=DEFAULT_METADATA) path = get_open_tracking_url_path( url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) request = FakeDjangoRequest() request.META["HTTP_X_REAL_IP"] = "10.10.240.22" request.META["HTTP_USER_AGENT"] = "Firefox" tracking_result = tracking_django.get_tracking_result( request, path, True, configuration) assert tracking_result.request_data ==\ {"user_agent": "Firefox", "user_ip": "10.10.240.22"} assert tracking_result.metadata == EXPECTED_METADATA
def test_embedded_open_tracking_url(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, webhook_url=DEFAULT_WEBHOOK_URL, include_webhook_url=True, default_metadata=DEFAULT_DEFAULT_METADATA, include_default_metadata=True, metadata=DEFAULT_METADATA) path = get_open_tracking_url_path( url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) tracking_result = get_open_tracking_result( path, request_data=DEFAULT_REQUEST_DATA, include_default_metadata=True, include_webhook_url=True) assert tracking_result.tracked_url is None assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL assert tracking_result.request_data == DEFAULT_REQUEST_DATA assert tracking_result.metadata == EXPECTED_METADATA assert tracking_result.is_open_tracking assert not tracking_result.is_click_tracking
def test_embedded_open_tracking_url(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, webhook_url=DEFAULT_WEBHOOK_URL, include_webhook_url=True, default_metadata=DEFAULT_DEFAULT_METADATA, include_default_metadata=True, metadata=DEFAULT_METADATA) path = get_open_tracking_url_path( url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) tracking_result = get_open_tracking_result( path, request_data=DEFAULT_REQUEST_DATA, include_default_metadata=True, include_webhook_url=True) assert tracking_result.tracked_url is None assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL assert tracking_result.request_data == DEFAULT_REQUEST_DATA assert tracking_result.metadata == EXPECTED_METADATA assert tracking_result.is_open_tracking assert not tracking_result.is_click_tracking
def test_minimal_encrypted_get_open_tracking_url(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, metadata=DEFAULT_METADATA, encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY) path = get_open_tracking_url_path( url, base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) tracking_result = get_open_tracking_result( path, request_data=DEFAULT_REQUEST_DATA, default_metadata=DEFAULT_DEFAULT_METADATA, webhook_url=DEFAULT_WEBHOOK_URL, encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY) expected_metadata = copy.copy(DEFAULT_DEFAULT_METADATA) expected_metadata.update(DEFAULT_METADATA) assert tracking_result.tracked_url is None assert tracking_result.webhook_url == DEFAULT_WEBHOOK_URL assert tracking_result.request_data == DEFAULT_REQUEST_DATA assert tracking_result.metadata == expected_metadata assert tracking_result.is_open_tracking assert not tracking_result.is_click_tracking
msg['Subject'] = "grande" body = "bla bla bla" msg.attach(MIMEText(body, 'plain')) server = smtplib.SMTP('smtp.gmail.com', 587) server.ehlo() server.starttls() server.ehlo() server.login('*****@*****.**', 'xxxxxx') text = msg.as_string() server.sendmail(fromaddr, toaddr, text) print('DONE') # Pytracking Implementation open_tracking_url = pytracking.get_open_tracking_url( {"customer_id": 1}, base_open_tracking_url="https://trackingdomain.com/path/", webhook_url="http://requestb.in/123", include_webhook_url=True) print("open_tracking_url : ", open_tracking_url) tracking_result = pytracking.get_open_tracking_result( open_tracking_url, base_open_tracking_url="https://trackingdomain.com/path/") print("tracking_result : ", tracking_result) from pytracking.webhook import send_webhook send_webhook(tracking_result)
def test_basic_get_open_tracking_url(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) assert url == "https://a.b.com/tracking/open/e30="
emailCont.append(line) else: break htmlBody = "" for line in emailCont: htmlBody = htmlBody + "<p>" + line + "</p> " htmlBody = htmlBody + webhook root = etree.HTML(htmlBody) htmlText = etree.tostring(root) pytrackHtml = adapt_html(htmlText, extra_metadata={"customer_id": 1}, click_tracking=True, open_tracking=True) emailBod = MIMEText(pytrackHtml, 'html') open_tracking_url = pytracking.get_open_tracking_url( {"customer_id": 1}, configuration=configuration) tracking_result = pytracking.get_open_tracking_result( open_tracking_url, base_open_tracking_url="http://mehltrej.pythonanywhere.com/") msg.attach(emailBod) #Send email try: print("Attempting to connect") smtpObj = smtplib.SMTP(emailHost, emailPort) print("Successful connection") print("Attemping to connect to email") try: smtpObj.ehlo() smtpObj.starttls()
def test_basic_get_open_tracking_url_append_slash(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL, append_slash=True) assert url == "https://a.b.com/tracking/open/e30=/"
def test_basic_get_open_tracking_url(): url = get_open_tracking_url( base_open_tracking_url=DEFAULT_BASE_OPEN_TRACKING_URL) assert url == "https://a.b.com/tracking/open/e30="