コード例 #1
0
    def test_landing_page_view_invalid_post_id(self):
        target = 'http://www.simplehtmlguide.com/examples/forms1.html'

        # We create a landing page
        lp = LandingPage.objects.create(name='Test delete perm',
                                        html=clone_url(target))

        et = EmailTemplate.objects.create(
            name='Test landing page view',
            email_subject='foo bar',
            text_content='lorem ipsum',
            landing_page_id=lp.pk,
        )

        # We create a campaign
        camp = Campaign.objects.create(email_template_id=et.pk,
                                       name='Test landing page campaign')
        target_grp = TargetGroup.objects.get(pk=1)
        camp.target_groups.add(target_grp)

        # Remove tracker post to see if page load anymore
        Tracker.objects.filter(campaign_id=camp.pk,
                               target_id=1,
                               key=TRACKER_LANDING_PAGE_POST).delete()

        # We go to the landing page
        # The HTTP_HOST is mandatory to generate form "action"
        tracker = camp.trackers.filter(key='landing_page_open').first()
        resp = self.client.get(reverse('landing_page', args=(tracker.uuid, )),
                               HTTP_HOST='foo.com')
        self.assertEqual(resp.status_code, 200)

        infos = TrackerInfos.objects.get(target_tracker_id=tracker.pk)
        self.assertEqual(infos.raw,
                         'tracker_post_id of %s in unknown' % tracker.pk)
コード例 #2
0
    def test_landing_page_view_exception(self):
        target = 'http://www.simplehtmlguide.com/examples/forms1.html'

        # We create a landing page
        lp = LandingPage.objects.create(name='Test delete perm',
                                        html=clone_url(target))

        et = EmailTemplate.objects.create(
            name='Test landing page view',
            email_subject='foo bar',
            text_content='lorem ipsum',
            landing_page_id=lp.pk,
        )

        # We create a campaign
        camp = Campaign.objects.create(email_template_id=et.pk,
                                       name='Test landing page campaign')
        target_grp = TargetGroup.objects.get(pk=1)
        camp.target_groups.add(target_grp)

        tracker = camp.trackers.filter(key='landing_page_open').first()

        # set incorrect value for make crash
        tracker.campaign_id = 99999999
        tracker.save()

        resp = self.client.get(reverse('landing_page', args=(tracker.uuid, )))

        # Strange behavior, google set multiple redirect.
        # So we can't use "assertRedirect" function
        self.assertEqual(resp.status_code, 302)
        self.assertEqual(resp['Location'], 'https://www.google.com/')
コード例 #3
0
    def test_landing_page_view(self):
        target = 'http://www.simplehtmlguide.com/examples/forms1.html'

        # We create a landing page
        lp = LandingPage.objects.create(
            name='Test delete perm',
            html=clone_url(target)
        )

        et = EmailTemplate.objects.create(
            name='Test landing page view',
            email_subject='foo bar',
            text_content='lorem ipsum',
            landing_page_id=lp.pk,
        )

        # We create a campaign
        camp = Campaign.objects.create(
            email_template_id=et.pk,
            name='Test landing page campaign'
        )
        target_grp = TargetGroup.objects.get(pk=1)
        camp.target_groups.add(target_grp)

        # We check that the trackers has been created with the campaign
        qs = camp.trackers.filter(key='landing_page_open')
        self.assertEqual(qs.count(), 1)
        tracker = qs.first()
        self.assertEqual(tracker.campaign_id, camp.pk)
        self.assertEqual(tracker.value, 'not opened')

        # We go to the landing page
        # The HTTP_HOST is mandatory to generate form "action"
        resp = self.client.get(reverse('landing_page', args=(tracker.uuid,)),
                               HTTP_HOST='foo.com')
        self.assertEqual(resp.status_code, 200)

        # We check that the tracker has beend updated
        tracker = qs.first()
        self.assertEqual(tracker.value, 'opened')
        self.assertContains(resp, 'js/navigator-infos.js')

        # We verify that the landing page
        # has been modified with correct tracker
        soup = BeautifulSoup.BeautifulSoup(resp.content, 'html.parser')
        form = soup.find('form')
        action = form.get('action')
        tracker_post = Tracker.objects.filter(
            campaign_id=camp.pk,
            target_id=1,
            key=TRACKER_LANDING_PAGE_POST
        ).first()
        waited_action = 'http://foo.com%s' % reverse('landing_page_post',
                                                     args=(tracker_post.uuid,))

        self.assertEqual(action, waited_action)
コード例 #4
0
def clone(request):
    """Use to clone the html of any page."""
    url = request.POST.get('url')
    if not url:
        return HttpResponseBadRequest()

    # get html of utl
    html = clone_url(url)

    # add intercept post data
    html = intercept_html_post(html, url)

    return HttpResponse(html)
コード例 #5
0
    def test_landing_page_post(self):
        target = 'http://www.simplehtmlguide.com/examples/forms1.html'

        # We create a landing page
        lp = LandingPage.objects.create(
            name='Test delete perm',
            html=clone_url(target)
        )

        et = EmailTemplate.objects.create(
            name='Test landing page view',
            email_subject='foo bar',
            text_content='lorem ipsum',
            landing_page_id=lp.pk,
        )

        # We create a campaign
        camp = Campaign.objects.create(
            email_template_id=et.pk,
            name='Test landing page campaign'
        )
        target_grp = TargetGroup.objects.get(pk=1)
        camp.target_groups.add(target_grp)

        tracker_post = Tracker.objects.filter(
            campaign_id=camp.pk,
            target_id=1,
            key=TRACKER_LANDING_PAGE_POST
        ).first()

        data = {
            'username': '******',
            'password': '******',
            'mercure_real_action_url': 'http://foo.com',
            'mercure_redirect_url': target
        }
        resp = self.client.post(reverse('landing_page_post',
                                        args=(tracker_post.pk,)), data=data)
        self.assertEqual(resp.status_code, 200)

        soup = BeautifulSoup.BeautifulSoup(resp.content, 'html.parser')
        self.assertEqual(soup.find('base').get('href'), target)
        self.assertEqual(soup.find('form').get('action'), 'http://foo.com')

        val = soup.find('input', {'name': 'username'}).get('value')
        self.assertEqual(val, 'foo')

        val = soup.find('input', {'name': 'password'}).get('value')
        self.assertEqual(val, 'bar')