From 60e0d59193e3e2e3d7bfa9a1555d831a6ab3ad98 Mon Sep 17 00:00:00 2001 From: y0no Date: Tue, 9 Jan 2018 18:22:22 +0100 Subject: [PATCH 1/4] Fix scheduler tests --- .travis.yml | 7 +++++++ docker-compose.yml | 21 +++++++++++++++++++++ docker/django.ini | 8 +++++++- mercure/settings/base.py | 6 ++---- mercure/settings/prod.py | 9 +++++++-- phishing/models/campaign.py | 4 +--- phishing/tests/user.py | 13 +++++++++++-- 7 files changed, 56 insertions(+), 12 deletions(-) create mode 100644 docker-compose.yml diff --git a/.travis.yml b/.travis.yml index 324e544..407d540 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ services: - redis-server + - docker language: python @@ -16,6 +17,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 --exclude-tag selenium + install: - pip install -r requirements.txt - pip install coveralls diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..2e21e2c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,21 @@ +version: '2' + +services: + redis: + image: redis + restart: always + front: + build: . + image: synhackfr/mercure + restart: always + links: + - redis:redis + ports: + - 8000:8000 + environment: + - SECRET_KEY= + - REDIS_HOST=redis + - EMAIL_HOST=mail.example.com + - EMAIL_PORT=587 + - EMAIL_HOST_USER=phishing@example.com + - EMAIL_HOST_PASSWORD=P@SSWORD \ No newline at end of file diff --git a/docker/django.ini b/docker/django.ini index 0a02cb3..f91a8fa 100644 --- a/docker/django.ini +++ b/docker/django.ini @@ -3,6 +3,8 @@ directory=/usr/src/app command=python manage.py runserver 0.0.0.0:8000 autostart=true autorestart=true +stdout_logfile=/var/log/mercure_django.log +redirect_stderr=true [program:rqworker] directory=/usr/src/app @@ -15,10 +17,14 @@ command=python manage.py rqworker default stopsignal=TERM autostart=true autorestart=true +stdout_logfile=/var/log/mercure_rqworker.log +redirect_stderr=true [program:rqscheduler] directory=/usr/src/app command=python manage.py rqscheduler stopsignal=TERM autostart=true -autorestart=true \ No newline at end of file +autorestart=true +stdout_logfile=/var/log/mercure_rqscheduler.log +redirect_stderr=true \ No newline at end of file diff --git a/mercure/settings/base.py b/mercure/settings/base.py index 2c8cad7..26b5a62 100644 --- a/mercure/settings/base.py +++ b/mercure/settings/base.py @@ -164,19 +164,17 @@ 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ], - 'PAGE_SIZE': 10, } 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'), }, } RQ_QUEUES = { 'default': { - 'USE_REDIS_CACHE': 'default', + 'URL': os.environ.get('REDIS_PORT', 'tcp://localhost:6379'), }, } diff --git a/mercure/settings/prod.py b/mercure/settings/prod.py index c7b796a..5841d0b 100644 --- a/mercure/settings/prod.py +++ b/mercure/settings/prod.py @@ -31,8 +31,13 @@ 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'), + }, +} + +RQ_QUEUES = { + 'default': { + 'URL': os.environ.get('REDIS_PORT', 'tcp://redis:6379'), }, } diff --git a/phishing/models/campaign.py b/phishing/models/campaign.py index cbc777b..e0d6a6f 100644 --- a/phishing/models/campaign.py +++ b/phishing/models/campaign.py @@ -59,9 +59,7 @@ 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 # diff --git a/phishing/tests/user.py b/phishing/tests/user.py index e9fd813..6a415dd 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 phishing.tests.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,13 @@ 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 a9e5e0c5da8b7fe86f3b167b9759bdacb915d385 Mon Sep 17 00:00:00 2001 From: y0no Date: Tue, 9 Jan 2018 18:28:26 +0100 Subject: [PATCH 2/4] Fix tests --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 407d540..97eaeb5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,8 +20,7 @@ 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 --exclude-tag selenium + - docker run --link=redis:redis -e 'SECRET_KEY=unit_test' mercure ./manage.py test install: - pip install -r requirements.txt From 5bdc99b1748e4cca3225ce5d2c27005e83c4a35b Mon Sep 17 00:00:00 2001 From: y0no Date: Tue, 9 Jan 2018 23:22:40 +0100 Subject: [PATCH 3/4] Fix saucelabs bug in docker --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 97eaeb5..bee4e9e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ cache: pip before_install: - docker build -t mercure . - docker run -d --name redis redis - - docker run --link=redis:redis -e 'SECRET_KEY=unit_test' mercure ./manage.py test + - docker run --link=redis:redis -e 'SECRET_KEY=unit_test' mercure ./manage.py test --exclude-tag=selenium install: - pip install -r requirements.txt From 4b6814f0c6a910cbe3ace7c8eb17dd97170b3567 Mon Sep 17 00:00:00 2001 From: y0no Date: Wed, 10 Jan 2018 10:47:23 +0100 Subject: [PATCH 4/4] Fix docker-compose --- docker-compose.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2e21e2c..770d7f5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,6 @@ services: image: redis restart: always front: - build: . image: synhackfr/mercure restart: always links: @@ -14,8 +13,7 @@ services: - 8000:8000 environment: - SECRET_KEY= - - REDIS_HOST=redis - EMAIL_HOST=mail.example.com - EMAIL_PORT=587 - EMAIL_HOST_USER=phishing@example.com - - EMAIL_HOST_PASSWORD=P@SSWORD \ No newline at end of file + - EMAIL_HOST_PASSWORD=P@SSWORD