From 4940125ba98fa8e8f0df650b5ffc88ca305e851b Mon Sep 17 00:00:00 2001 From: Treemo Date: Thu, 21 Dec 2017 11:04:06 +0100 Subject: [PATCH 1/6] add docker in test --- .travis.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 324e544..afe4c43 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,15 @@ -services: - - redis-server - -language: python - python: - '3.5' - '3.6' - '3.7-dev' + +services: + - redis-server + - docker + +language: python + addons: sauce_connect: username: synhack @@ -16,6 +18,12 @@ addons: cache: pip +before_install: + - docker build -t mercure . + - docker run -d --name redis redis + - docker run -d --name mercure --link=redis:redis -e 'SECRET_KEY=unit_test' mercure + - docker exec -i mercure python manage.py test + install: - pip install -r requirements.txt - pip install coveralls From 8292302eeba1074943641526f1ef11286c9fb18b Mon Sep 17 00:00:00 2001 From: Treemo Date: Thu, 21 Dec 2017 11:11:56 +0100 Subject: [PATCH 2/6] ignore selenium test in docker (not selenium intalled) --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index afe4c43..411f770 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,7 @@ before_install: - docker build -t mercure . - docker run -d --name redis redis - docker run -d --name mercure --link=redis:redis -e 'SECRET_KEY=unit_test' mercure - - docker exec -i mercure python manage.py test + - docker exec -i mercure python manage.py test --exclude-tag selenium install: - pip install -r requirements.txt From ee80a9d87323b92f88dfd942ee74172515761983 Mon Sep 17 00:00:00 2001 From: Treemo Date: Thu, 21 Dec 2017 16:35:32 +0100 Subject: [PATCH 3/6] fix redis env conf --- mercure/settings/base.py | 3 +-- mercure/settings/prod.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/mercure/settings/base.py b/mercure/settings/base.py index 2c8cad7..94e4a83 100644 --- a/mercure/settings/base.py +++ b/mercure/settings/base.py @@ -170,8 +170,7 @@ CACHES = { 'default': { 'BACKEND': 'redis_cache.cache.RedisCache', - 'LOCATION': '%s:%s' % (os.environ.get('REDIS_HOST', 'localhost'), - os.environ.get('REDIS_PORT', '6379')), + 'LOCATION': os.environ.get('REDIS_PORT', 'tcp://localhost:6379'), }, } diff --git a/mercure/settings/prod.py b/mercure/settings/prod.py index c7b796a..04d25a0 100644 --- a/mercure/settings/prod.py +++ b/mercure/settings/prod.py @@ -31,8 +31,7 @@ CACHES = { 'default': { 'BACKEND': 'redis_cache.cache.RedisCache', - 'LOCATION': '%s:%s' % (os.environ.get('REDIS_HOST', 'redis'), - os.environ.get('REDIS_PORT', '6379')), + 'LOCATION': os.environ.get('REDIS_PORT', 'tcp://redis:6379'), }, } From 9f5c807519b097539ef466e339c141b23591a449 Mon Sep 17 00:00:00 2001 From: Treemo Date: Tue, 2 Jan 2018 10:58:07 +0100 Subject: [PATCH 4/6] fix 'is_launched' test --- phishing/models/campaign.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/phishing/models/campaign.py b/phishing/models/campaign.py index cbc777b..555ddaf 100644 --- a/phishing/models/campaign.py +++ b/phishing/models/campaign.py @@ -59,9 +59,8 @@ def __str__(self): @property def is_launched(self): - if self.send_at < now(): - return True - return False + return self.trackers.count() > 0 + # TODO: sortir la conf smtp => faire un model # From 1022bc33fcfe76b91c2d75b6edbb0f3e3065b37d Mon Sep 17 00:00:00 2001 From: Treemo Date: Tue, 2 Jan 2018 12:17:56 +0100 Subject: [PATCH 5/6] fix tests --- phishing/tests/campaign.py | 1 + phishing/tests/landing_page.py | 3 +++ phishing/tests/signal.py | 7 +++++++ phishing/tests/user.py | 12 ++++++++++-- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/phishing/tests/campaign.py b/phishing/tests/campaign.py index 06f5e4f..ab2a39e 100644 --- a/phishing/tests/campaign.py +++ b/phishing/tests/campaign.py @@ -415,6 +415,7 @@ def test_dashboard_campaign_with_minimize_url(self): self.run_jobs() # check minified url + self.assertGreater(len(mail.outbox), 0, mail.outbox) self.assertIn('click: http://tinyurl.com/', str(mail.outbox[-1].message())) diff --git a/phishing/tests/landing_page.py b/phishing/tests/landing_page.py index 0ea0af7..2edaea2 100644 --- a/phishing/tests/landing_page.py +++ b/phishing/tests/landing_page.py @@ -437,6 +437,7 @@ def test_landing_page_view_invalid_post_id(self): # We go to the landing page # The HTTP_HOST is mandatory to generate form "action" tracker = camp.trackers.filter(key='landing_page_open').first() + self.assertIsNotNone(tracker) resp = self.client.get( reverse('landing_page', args=(tracker.uuid,)), HTTP_HOST='foo.com') @@ -474,6 +475,7 @@ def test_landing_page_view_exception(self): tracker = camp.trackers.filter(key='landing_page_open').first() # set incorrect value for make crash + self.assertIsNotNone(tracker) tracker.campaign_id = 99999999 tracker.save() @@ -521,6 +523,7 @@ def test_landing_page_post(self): 'mercure_real_action_url': 'http://foo.com', 'mercure_redirect_url': target } + self.assertIsNotNone(tracker_post) resp = self.client.post(reverse('landing_page_post', args=(tracker_post.pk,)), data=data) self.assertEqual(resp.status_code, 200) diff --git a/phishing/tests/signal.py b/phishing/tests/signal.py index 525d134..2869880 100644 --- a/phishing/tests/signal.py +++ b/phishing/tests/signal.py @@ -140,6 +140,7 @@ def handler(request, landing_page, **kwarg): campaign.target_groups.add(target_group) self.run_jobs() + self.assertGreater(len(mail.outbox), 0, mail.outbox) landing_page_url = mail.outbox[-1].body.split('<')[0] # call landing page ans test result @@ -240,6 +241,7 @@ def handler(email_template, **kwarg): campaign.target_groups.add(target_group) self.run_jobs() + self.assertGreater(len(mail.outbox), 0, mail.outbox) self.assertEqual(mail.outbox[-1].body, 'Hello!') mail_html = mail.outbox[-1].alternatives[0][0] self.assertEqual(mail_html.split('<')[0], 'Hi!') @@ -306,6 +308,7 @@ def handler(instance, **kwarg): # call tracker self.send_campaign() + self.assertGreater(len(mail.outbox), 0, mail.outbox) attachment = json.loads(mail.outbox[-1].attachments[0][1].decode()) tracker_url = attachment['tracker_url'] @@ -333,6 +336,7 @@ def handler(instance, **kwarg): # call tracker self.send_campaign() + self.assertGreater(len(mail.outbox), 0, mail.outbox) attachment = json.loads(mail.outbox[-1].attachments[0][1].decode()) tracker_url = attachment['tracker_url'] @@ -359,6 +363,7 @@ def handler(instance, **kwarg): # call tracker self.send_campaign() + self.assertGreater(len(mail.outbox), 0, mail.outbox) mail_html = mail.outbox[-1].alternatives[0][0] tracker_url = mail_html.split('src="')[-1].split('"')[0] @@ -386,6 +391,7 @@ def handler(instance, **kwarg): # call tracker self.send_campaign() + self.assertGreater(len(mail.outbox), 0, mail.outbox) tracker_url = mail.outbox[-1].body # test if handler has call @@ -446,6 +452,7 @@ def handler(instance, **kwarg): # call tracker self.send_campaign() + self.assertGreater(len(mail.outbox), 0, mail.outbox) tracker_url = mail.outbox[-1].body # call landing page diff --git a/phishing/tests/user.py b/phishing/tests/user.py index e9fd813..7c86297 100644 --- a/phishing/tests/user.py +++ b/phishing/tests/user.py @@ -3,11 +3,13 @@ from django.urls import reverse from django.test import TestCase -from phishing.models import Campaign, EmailTemplate +from phishing.models import Campaign, EmailTemplate, TargetGroup, Target +from .helpers import RQMixin -class PermissionTestCase(TestCase): +class PermissionTestCase(RQMixin, TestCase): def setUp(self): + super(PermissionTestCase, self).setUp() self.client.get('not-found') # django fix: first client call is 404 def test_default_permission(self): @@ -36,6 +38,12 @@ def test_default_permission(self): Campaign.objects.create(name='test 2', **campaign_infos) Campaign.objects.create(name='test 3', **campaign_infos) + # send campaign + target_group = TargetGroup.objects.create(name='targets') + Target.objects.create(email='test@test.com', group=target_group) + campaign.target_groups.add(target_group) + self.run_jobs() + # can list campaign response = self.client.get(reverse('campaign_list')) content = response.content.decode() From cc1854c37cf079b4a9bb038a0cca3dd4d367138a Mon Sep 17 00:00:00 2001 From: Treemo Date: Tue, 2 Jan 2018 12:18:29 +0100 Subject: [PATCH 6/6] fix rest_framwork warning --- mercure/settings/base.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mercure/settings/base.py b/mercure/settings/base.py index 94e4a83..5fd30a2 100644 --- a/mercure/settings/base.py +++ b/mercure/settings/base.py @@ -164,7 +164,6 @@ 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ], - 'PAGE_SIZE': 10, } CACHES = { @@ -178,4 +177,4 @@ 'default': { 'USE_REDIS_CACHE': 'default', }, -} +} \ No newline at end of file