From 331d421e101a353ae07de7681525f76146969856 Mon Sep 17 00:00:00 2001 From: Nicholas Charriere Date: Sun, 6 May 2018 14:28:46 -0700 Subject: [PATCH] Mock redis in tests using mockredis --- dev-requirements.txt | 6 +++++- snappass/main.py | 5 ++++- tests.py | 6 ++++++ tox.ini | 8 ++++---- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/dev-requirements.txt b/dev-requirements.txt index 908833f..fc7f09d 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,3 +1,7 @@ +mock==1.0.1 +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/snappass/main.py b/snappass/main.py index 15de24e..39a82be 100644 --- a/snappass/main.py +++ b/snappass/main.py @@ -25,7 +25,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..ef0fe93 100644 --- a/tox.ini +++ b/tox.ini @@ -2,12 +2,12 @@ envlist = py27, py34, py35, py36, flake8 [testenv] -deps = - pytest - pytest-cov +setenv = + MOCK_REDIS = 1 commands = pip install -r requirements.txt - py.test --junitxml=junit-{envname}.xml --cov-report xml tests.py + pip install -r dev-requirements.txt + py.test --junitxml=junit-{envname}.xml --cov-report xml tests.py -s [testenv:flake8] commands =