diff --git a/.travis.yml b/.travis.yml index 324e544..bee4e9e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ services: - redis-server + - docker language: python @@ -16,6 +17,11 @@ addons: 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 --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..770d7f5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,19 @@ +version: '2' + +services: + redis: + image: redis + restart: always + front: + image: synhackfr/mercure + restart: always + links: + - redis:redis + ports: + - 8000:8000 + environment: + - SECRET_KEY= + - EMAIL_HOST=mail.example.com + - EMAIL_PORT=587 + - EMAIL_HOST_USER=phishing@example.com + - EMAIL_HOST_PASSWORD=P@SSWORD 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()