|
7 | 7 | from unittest.mock import patch, mock_open, MagicMock
|
8 | 8 | from jwcrypto import jwt, jwk
|
9 | 9 |
|
10 |
| -from websockify.token_plugins import ReadOnlyTokenFile, JWTTokenApi, TokenRedis |
| 10 | +from websockify.token_plugins import parse_source_args, ReadOnlyTokenFile, JWTTokenApi, TokenRedis |
| 11 | + |
| 12 | +class ParseSourceArgumentsTestCase(unittest.TestCase): |
| 13 | + def test_parameterized(self): |
| 14 | + params = [ |
| 15 | + ('', ['']), |
| 16 | + (':', ['', '']), |
| 17 | + ('::', ['', '', '']), |
| 18 | + ('"', ['"']), |
| 19 | + ('""', ['""']), |
| 20 | + ('"""', ['"""']), |
| 21 | + ('"localhost"', ['localhost']), |
| 22 | + ('"localhost":', ['localhost', '']), |
| 23 | + ('"localhost"::', ['localhost', '', '']), |
| 24 | + ('"local:host"', ['local:host']), |
| 25 | + ('"local:host:"pass"', ['"local', 'host', "pass"]), |
| 26 | + ('"local":"host"', ['local', 'host']), |
| 27 | + ('"local":host"', ['local', 'host"']), |
| 28 | + ('localhost:6379:1:pass"word:"my-app-namespace:dev"', |
| 29 | + ['localhost', '6379', '1', 'pass"word', 'my-app-namespace:dev']), |
| 30 | + ] |
| 31 | + for src, args in params: |
| 32 | + self.assertEqual(args, parse_source_args(src)) |
11 | 33 |
|
12 | 34 | class ReadOnlyTokenFileTestCase(unittest.TestCase):
|
13 | 35 | patch('os.path.isdir', MagicMock(return_value=False))
|
@@ -402,6 +424,15 @@ def test_src_with_host_empty_port_empty_db_empty_pass_namespace(self):
|
402 | 424 | self.assertEqual(plugin._password, None)
|
403 | 425 | self.assertEqual(plugin._namespace, "namespace:")
|
404 | 426 |
|
| 427 | + def test_src_with_host_empty_port_empty_db_empty_pass_nested_namespace(self): |
| 428 | + plugin = TokenRedis('127.0.0.1::::"ns1:ns2"') |
| 429 | + |
| 430 | + self.assertEqual(plugin._server, '127.0.0.1') |
| 431 | + self.assertEqual(plugin._port, 6379) |
| 432 | + self.assertEqual(plugin._db, 0) |
| 433 | + self.assertEqual(plugin._password, None) |
| 434 | + self.assertEqual(plugin._namespace, "ns1:ns2:") |
| 435 | + |
405 | 436 | def test_src_with_host_empty_port_db_no_pass_no_namespace(self):
|
406 | 437 | plugin = TokenRedis('127.0.0.1::2')
|
407 | 438 |
|
|
0 commit comments