Fix redis unit tests when redis is missing

This was broken since c00cfc73, which changed how redis was imported.
This commit is contained in:
Pierre Ossman 2026-02-11 16:20:25 +01:00
parent 08f1aea97e
commit a4d6cc5588
1 changed files with 11 additions and 18 deletions

View File

@ -2,16 +2,10 @@
""" Unit tests for Token plugins""" """ Unit tests for Token plugins"""
import sys
import unittest import unittest
from unittest.mock import patch, MagicMock from unittest.mock import patch, MagicMock
from jwcrypto import jwt, jwk from jwcrypto import jwt, jwk
try:
import redis
except ImportError:
redis = None
from websockify.token_plugins import parse_source_args, ReadOnlyTokenFile, JWTTokenApi, TokenRedis from websockify.token_plugins import parse_source_args, ReadOnlyTokenFile, JWTTokenApi, TokenRedis
@ -242,12 +236,11 @@ class JWSTokenTestCase(unittest.TestCase):
class TokenRedisTestCase(unittest.TestCase): class TokenRedisTestCase(unittest.TestCase):
def setUp(self): def setUp(self):
if redis is None: patcher = patch('websockify.token_plugins.redis')
patcher = patch.dict(sys.modules, {'redis': MagicMock()}) patcher.start()
patcher.start() self.addCleanup(patcher.stop)
self.addCleanup(patcher.stop)
@patch('redis.Redis') @patch('websockify.token_plugins.redis.Redis')
def test_empty(self, mock_redis): def test_empty(self, mock_redis):
plugin = TokenRedis('127.0.0.1:1234') plugin = TokenRedis('127.0.0.1:1234')
@ -259,7 +252,7 @@ class TokenRedisTestCase(unittest.TestCase):
instance.get.assert_called_once_with('testhost') instance.get.assert_called_once_with('testhost')
self.assertIsNone(result) self.assertIsNone(result)
@patch('redis.Redis') @patch('websockify.token_plugins.redis.Redis')
def test_simple(self, mock_redis): def test_simple(self, mock_redis):
plugin = TokenRedis('127.0.0.1:1234') plugin = TokenRedis('127.0.0.1:1234')
@ -273,7 +266,7 @@ class TokenRedisTestCase(unittest.TestCase):
self.assertEqual(result[0], 'remote_host') self.assertEqual(result[0], 'remote_host')
self.assertEqual(result[1], 'remote_port') self.assertEqual(result[1], 'remote_port')
@patch('redis.Redis') @patch('websockify.token_plugins.redis.Redis')
def test_json_token_with_spaces(self, mock_redis): def test_json_token_with_spaces(self, mock_redis):
plugin = TokenRedis('127.0.0.1:1234') plugin = TokenRedis('127.0.0.1:1234')
@ -287,7 +280,7 @@ class TokenRedisTestCase(unittest.TestCase):
self.assertEqual(result[0], 'remote_host') self.assertEqual(result[0], 'remote_host')
self.assertEqual(result[1], 'remote_port') self.assertEqual(result[1], 'remote_port')
@patch('redis.Redis') @patch('websockify.token_plugins.redis.Redis')
def test_text_token(self, mock_redis): def test_text_token(self, mock_redis):
plugin = TokenRedis('127.0.0.1:1234') plugin = TokenRedis('127.0.0.1:1234')
@ -301,7 +294,7 @@ class TokenRedisTestCase(unittest.TestCase):
self.assertEqual(result[0], 'remote_host') self.assertEqual(result[0], 'remote_host')
self.assertEqual(result[1], 'remote_port') self.assertEqual(result[1], 'remote_port')
@patch('redis.Redis') @patch('websockify.token_plugins.redis.Redis')
def test_text_token_with_spaces(self, mock_redis): def test_text_token_with_spaces(self, mock_redis):
plugin = TokenRedis('127.0.0.1:1234') plugin = TokenRedis('127.0.0.1:1234')
@ -315,7 +308,7 @@ class TokenRedisTestCase(unittest.TestCase):
self.assertEqual(result[0], 'remote_host') self.assertEqual(result[0], 'remote_host')
self.assertEqual(result[1], 'remote_port') self.assertEqual(result[1], 'remote_port')
@patch('redis.Redis') @patch('websockify.token_plugins.redis.Redis')
def test_invalid_token(self, mock_redis): def test_invalid_token(self, mock_redis):
plugin = TokenRedis('127.0.0.1:1234') plugin = TokenRedis('127.0.0.1:1234')
@ -327,7 +320,7 @@ class TokenRedisTestCase(unittest.TestCase):
instance.get.assert_called_once_with('testhost') instance.get.assert_called_once_with('testhost')
self.assertIsNone(result) self.assertIsNone(result)
@patch('redis.Redis') @patch('websockify.token_plugins.redis.Redis')
def test_token_without_namespace(self, mock_redis): def test_token_without_namespace(self, mock_redis):
plugin = TokenRedis('127.0.0.1:1234') plugin = TokenRedis('127.0.0.1:1234')
token = 'testhost' token = 'testhost'
@ -345,7 +338,7 @@ class TokenRedisTestCase(unittest.TestCase):
self.assertEqual(result[0], 'remote_host') self.assertEqual(result[0], 'remote_host')
self.assertEqual(result[1], 'remote_port') self.assertEqual(result[1], 'remote_port')
@patch('redis.Redis') @patch('websockify.token_plugins.redis.Redis')
def test_token_with_namespace(self, mock_redis): def test_token_with_namespace(self, mock_redis):
plugin = TokenRedis('127.0.0.1:1234:::namespace') plugin = TokenRedis('127.0.0.1:1234:::namespace')
token = 'testhost' token = 'testhost'