diff --git a/.travis.yml b/.travis.yml index fc2de17..1a1e848 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ language: python python: - - "2.6" - "2.7" - - "3.3" - "3.4" - "3.5" - "3.6" diff --git a/dev-requirements.txt b/dev-requirements.txt index 908833f..8fa761f 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,3 +1,6 @@ +pytest==3.5.1 +pytest-cov==2.5.1 +mockredispy==2.9.3 coverage==4.2 flake8==3.0.4 -tox==2.3.1 +tox==3.0.0 diff --git a/requirements.txt b/requirements.txt index eb11347..c18fe8e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,3 +5,4 @@ Werkzeug==0.9.4 itsdangerous==0.23 redis==2.8.0 cryptography==1.8.1 +mock==1.0.1 diff --git a/snappass/main.py b/snappass/main.py index 5cc3b77..399d4c5 100644 --- a/snappass/main.py +++ b/snappass/main.py @@ -27,7 +27,10 @@ app.secret_key = os.environ.get('SECRET_KEY', 'Secret Key') app.config.update( dict(STATIC_URL=os.environ.get('STATIC_URL', 'static'))) -if os.environ.get('REDIS_URL'): +if os.environ.get('MOCK_REDIS'): + from mockredis import mock_strict_redis_client + redis_client = mock_strict_redis_client() +elif os.environ.get('REDIS_URL'): redis_client = redis.StrictRedis.from_url(os.environ.get('REDIS_URL')) else: redis_host = os.environ.get('REDIS_HOST', 'localhost') diff --git a/tests.py b/tests.py index c94332c..c5418af 100644 --- a/tests.py +++ b/tests.py @@ -1,3 +1,4 @@ +from mock import patch import time import unittest import uuid @@ -5,6 +6,7 @@ from unittest import TestCase from cryptography.fernet import Fernet from werkzeug.exceptions import BadRequest +from mockredis import mock_strict_redis_client # noinspection PyPep8Naming import snappass.main as snappass @@ -14,6 +16,7 @@ __author__ = 'davedash' class SnapPassTestCase(TestCase): + @patch('redis.client.StrictRedis', mock_strict_redis_client) def test_get_password(self): password = "melatonin overdose 1337!$" key = snappass.set_password(password, 30) @@ -91,6 +94,9 @@ class SnapPassTestCase(TestCase): password = 'open sesame' key = snappass.set_password(password, 1) time.sleep(1.5) + # Expire functionality must be explicitly invoked using do_expire(time). + # mockredis does not support automatic expiration at this time + snappass.redis_client.do_expire() self.assertEqual(None, snappass.get_password(key)) diff --git a/tox.ini b/tox.ini index 8cb330f..115f142 100644 --- a/tox.ini +++ b/tox.ini @@ -2,11 +2,11 @@ envlist = py27, py34, py35, py36, flake8 [testenv] -deps = - pytest - pytest-cov +setenv = + MOCK_REDIS = 1 commands = pip install -r requirements.txt + pip install -r dev-requirements.txt py.test --junitxml=junit-{envname}.xml --cov-report xml tests.py [testenv:flake8]