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)
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/')
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)
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)
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')