def test_minimal_encrypted_get_click_tracking_url():
    url = get_click_tracking_url(
        DEFAULT_URL_TO_TRACK,
        base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL,
        metadata=DEFAULT_METADATA,
        encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY)
    path = get_click_tracking_url_path(
        url, base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL)

    tracking_result = get_click_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 == DEFAULT_URL_TO_TRACK
    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_click_tracking
    assert not tracking_result.is_open_tracking
def test_minimal_encrypted_get_click_tracking_url():
    url = get_click_tracking_url(
        DEFAULT_URL_TO_TRACK,
        base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL,
        metadata=DEFAULT_METADATA,
        encryption_bytestring_key=DEFAULT_ENCRYPTION_KEY)
    path = get_click_tracking_url_path(
        url, base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL)

    tracking_result = get_click_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 == DEFAULT_URL_TO_TRACK
    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_click_tracking
    assert not tracking_result.is_open_tracking
Beispiel #3
0
def test_embedded_click_tracking_url():
    url = get_click_tracking_url(
        DEFAULT_URL_TO_TRACK,
        base_click_tracking_url=DEFAULT_BASE_CLICK_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_click_tracking_url_path(
        url, base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL)

    tracking_result = get_click_tracking_result(
        path,
        request_data=DEFAULT_REQUEST_DATA,
        include_default_metadata=True,
        include_webhook_url=True)

    assert tracking_result.tracked_url == DEFAULT_URL_TO_TRACK
    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_click_tracking
    assert not tracking_result.is_open_tracking
Beispiel #4
0
def click_tracking(params):
    try:
        url = '%s/%s' % (EMAIL_CLICK_URL, params)
        full_url = url
        tracking_result = pytracking.get_click_tracking_result(
            full_url, base_click_tracking_url=EMAIL_CLICK_URL)
        campaign_id = tracking_result.metadata['campaign_id']
        ab_campaign_id = tracking_result.metadata['ab_campaign_id']
        template_id = tracking_result.metadata['template_id']
        segment_id = tracking_result.metadata['segment_id']

        campaign_stats_helper.\
            add_campaign_click_stats(segment_id,
                                     template_id,
                                     0, tracking_result.is_click_tracking,
                                     tracking_result.tracked_url,
                                     campaign_id=campaign_id,
                                     ab_campaign_id=ab_campaign_id)
        app.logger.info(tracking_result)

        app.logger.info(segment_id)
        app.logger.info(campaign_id)
        app.logger.info(ab_campaign_id)

        return redirect(tracking_result.tracked_url)

    except Exception as e:
        app.logger.warning(e)
        app.logger.warning(traceback.format_exc())
Beispiel #5
0
def test_send_webhook_click():
    url = get_click_tracking_url(
        DEFAULT_URL_TO_TRACK,
        base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL,
        metadata=DEFAULT_METADATA)
    path = get_click_tracking_url_path(
        url, base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL)

    tracking_result = get_click_tracking_result(
        path, webhook_url=DEFAULT_WEBHOOK_URL)

    payload = {
        "is_open_tracking": False,
        "is_click_tracking": True,
        "metadata": DEFAULT_METADATA,
        "request_data": None,
        "tracked_url": DEFAULT_URL_TO_TRACK,
        "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)
Beispiel #6
0
def _test_click_tracking(tree):
    links = tree.xpath("//a")
    first_link_url_path = get_click_tracking_url_path(links[0].attrib["href"],
                                                      **DEFAULT_SETTINGS)
    click_result = get_click_tracking_result(first_link_url_path,
                                             **DEFAULT_SETTINGS)
    assert click_result.metadata == EXPECTED_METADATA
    assert click_result.tracked_url == "http://www.example.com/foo/?question=response"

    assert links[1].attrib["href"] == "mailto:[email protected]"

    second_link_url_path = get_click_tracking_url_path(links[2].attrib["href"],
                                                       **DEFAULT_SETTINGS)
    click_result = get_click_tracking_result(second_link_url_path,
                                             **DEFAULT_SETTINGS)
    assert click_result.metadata == EXPECTED_METADATA
    assert click_result.tracked_url == "http://www.domain2.com"
Beispiel #7
0
def _test_click_tracking(tree):
    links = tree.xpath("//a")
    first_link_url_path = get_click_tracking_url_path(
        links[0].attrib["href"], **DEFAULT_SETTINGS)
    click_result = get_click_tracking_result(
        first_link_url_path, **DEFAULT_SETTINGS)
    assert click_result.metadata == EXPECTED_METADATA
    assert click_result.tracked_url ==\
        "http://www.example.com/foo/?question=response"

    assert links[1].attrib["href"] == "mailto:[email protected]"

    second_link_url_path = get_click_tracking_url_path(
        links[2].attrib["href"], **DEFAULT_SETTINGS)
    click_result = get_click_tracking_result(
        second_link_url_path, **DEFAULT_SETTINGS)
    assert click_result.metadata == EXPECTED_METADATA
    assert click_result.tracked_url == "http://www.domain2.com"
def test_in_config_click_tracking_full_url():
    url = get_click_tracking_url(
        DEFAULT_URL_TO_TRACK,
        base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL,
        metadata=DEFAULT_METADATA)

    tracking_result = get_click_tracking_result(
        url, webhook_url=DEFAULT_WEBHOOK_URL,
        base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL)
    assert tracking_result.tracked_url == DEFAULT_URL_TO_TRACK
    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_click_tracking
    assert not tracking_result.is_open_tracking
Beispiel #9
0
def test_in_config_click_tracking_full_url():
    url = get_click_tracking_url(
        DEFAULT_URL_TO_TRACK,
        base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL,
        metadata=DEFAULT_METADATA)

    tracking_result = get_click_tracking_result(
        url,
        webhook_url=DEFAULT_WEBHOOK_URL,
        base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL)
    assert tracking_result.tracked_url == DEFAULT_URL_TO_TRACK
    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_click_tracking
    assert not tracking_result.is_open_tracking
def test_embedded_click_tracking_url():
    url = get_click_tracking_url(
        DEFAULT_URL_TO_TRACK,
        base_click_tracking_url=DEFAULT_BASE_CLICK_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_click_tracking_url_path(
        url, base_click_tracking_url=DEFAULT_BASE_CLICK_TRACKING_URL)

    tracking_result = get_click_tracking_result(
        path, request_data=DEFAULT_REQUEST_DATA,
        include_default_metadata=True,
        include_webhook_url=True)

    assert tracking_result.tracked_url == DEFAULT_URL_TO_TRACK
    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_click_tracking
    assert not tracking_result.is_open_tracking