Mock redis in tests using mockredis

This commit is contained in:
Nicholas Charriere 2018-05-06 14:28:46 -07:00
parent b8ce29ed6d
commit 331d421e10
4 changed files with 19 additions and 6 deletions

View file

@ -1,3 +1,7 @@
mock==1.0.1
pytest==3.5.1
pytest-cov==2.5.1
mockredispy==2.9.3
coverage==4.2 coverage==4.2
flake8==3.0.4 flake8==3.0.4
tox==2.3.1 tox==3.0.0

View file

@ -25,7 +25,10 @@ app.secret_key = os.environ.get('SECRET_KEY', 'Secret Key')
app.config.update( app.config.update(
dict(STATIC_URL=os.environ.get('STATIC_URL', 'static'))) 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')) redis_client = redis.StrictRedis.from_url(os.environ.get('REDIS_URL'))
else: else:
redis_host = os.environ.get('REDIS_HOST', 'localhost') redis_host = os.environ.get('REDIS_HOST', 'localhost')

View file

@ -1,3 +1,4 @@
from mock import patch
import time import time
import unittest import unittest
import uuid import uuid
@ -5,6 +6,7 @@ from unittest import TestCase
from cryptography.fernet import Fernet from cryptography.fernet import Fernet
from werkzeug.exceptions import BadRequest from werkzeug.exceptions import BadRequest
from mockredis import mock_strict_redis_client
# noinspection PyPep8Naming # noinspection PyPep8Naming
import snappass.main as snappass import snappass.main as snappass
@ -14,6 +16,7 @@ __author__ = 'davedash'
class SnapPassTestCase(TestCase): class SnapPassTestCase(TestCase):
@patch('redis.client.StrictRedis', mock_strict_redis_client)
def test_get_password(self): def test_get_password(self):
password = "melatonin overdose 1337!$" password = "melatonin overdose 1337!$"
key = snappass.set_password(password, 30) key = snappass.set_password(password, 30)
@ -91,6 +94,9 @@ class SnapPassTestCase(TestCase):
password = 'open sesame' password = 'open sesame'
key = snappass.set_password(password, 1) key = snappass.set_password(password, 1)
time.sleep(1.5) 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)) self.assertEqual(None, snappass.get_password(key))

View file

@ -2,12 +2,12 @@
envlist = py27, py34, py35, py36, flake8 envlist = py27, py34, py35, py36, flake8
[testenv] [testenv]
deps = setenv =
pytest MOCK_REDIS = 1
pytest-cov
commands = commands =
pip install -r requirements.txt 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] [testenv:flake8]
commands = commands =