def test_landing_page_post(self):
def handler(instance, **kwarg):
# get post on landing page event
if instance.target_tracker.key != TRACKER_LANDING_PAGE_POST:
# ignore other target event
return
self.assertEqual(instance.ip, '127.0.0.1')
self.assertEqual(instance.user_agent, 'Firefox')
self.assertEqual(instance.referer, 'https://webmail.com')
self.assertIn('"login": "Admin"', instance.raw)
raise SuccessException()
post_save.connect(handler, sender=TrackerInfos)
# call tracker
self.send_campaign()
tracker_url = mail.outbox[-1].body
# call landing page
response = self.client.get(tracker_url)
self.assertEqual(response.status_code, 200)
# get form infos
html = response.content.decode()
form = BeautifulSoup(html, 'html.parser').find('form')
post_url = form.get('action')
post_data = {i.get('name'): i.get('value')
for i in form.find_all('input')}
post_data['login'] = 'Admin'
# test if handler has call
with self.assertRaises(SuccessException):
self.client.defaults['HTTP_USER_AGENT'] = 'Firefox'
self.client.defaults['HTTP_REFERER'] = 'https://webmail.com'
self.client.post(post_url, post_data)
# clean
self.assertTrue(post_save.disconnect(handler, sender=TrackerInfos))
评论列表
文章目录