diff options
| author | rr- | 2016-06-03 15:51:50 +0200 |
|---|---|---|
| committer | rr- | 2016-06-03 19:47:09 +0200 |
| commit | 8a5c6f0b31cfa0bc52a55a0ba42050ff6c67d04c (patch) | |
| tree | 243e5f4452b1a1f5625f6ec7e5bc02b329b2a8ea /server/szurubooru/tests/search/test_executor.py | |
| parent | f0d3589344345f41ebf5593231287a923be45dbb (diff) | |
server/search: fix caching special tokens
special:liked was being reused between users. Now the cache internally
caches object similar to liked:USER.
Diffstat (limited to 'server/szurubooru/tests/search/test_executor.py')
| -rw-r--r-- | server/szurubooru/tests/search/test_executor.py | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/server/szurubooru/tests/search/test_executor.py b/server/szurubooru/tests/search/test_executor.py index bb1cb51..99e085f 100644 --- a/server/szurubooru/tests/search/test_executor.py +++ b/server/szurubooru/tests/search/test_executor.py @@ -1,4 +1,5 @@ import unittest.mock +import pytest from szurubooru import search from szurubooru.func import cache @@ -11,7 +12,7 @@ def test_retrieving_from_cache(user_factory): executor.execute('test:whatever', 1, 10) assert cache.get.called -def test_putting_equivalent_queries_into_cache(user_factory): +def test_putting_equivalent_queries_into_cache(): config = search.configs.PostSearchConfig() with unittest.mock.patch('szurubooru.func.cache.has'), \ unittest.mock.patch('szurubooru.func.cache.put'): @@ -30,7 +31,7 @@ def test_putting_equivalent_queries_into_cache(user_factory): assert len(hashes) == 6 assert len(set(hashes)) == 1 -def test_putting_non_equivalent_queries_into_cache(user_factory): +def test_putting_non_equivalent_queries_into_cache(): config = search.configs.PostSearchConfig() with unittest.mock.patch('szurubooru.func.cache.has'), \ unittest.mock.patch('szurubooru.func.cache.put'): @@ -82,3 +83,33 @@ def test_putting_non_equivalent_queries_into_cache(user_factory): executor.execute(*arg) assert len(hashes) == len(args) assert len(set(hashes)) == len(args) + +@pytest.mark.parametrize('input', [ + 'special:fav', + 'special:liked', + 'special:disliked', + '-special:fav', + '-special:liked', + '-special:disliked', +]) +def test_putting_auth_dependent_queries_into_cache(user_factory, input): + config = search.configs.PostSearchConfig() + with unittest.mock.patch('szurubooru.func.cache.has'), \ + unittest.mock.patch('szurubooru.func.cache.put'): + hashes = [] + def appender(key, value): + hashes.append(key) + cache.has.side_effect = lambda *args: False + cache.put.side_effect = appender + executor = search.Executor(config) + + executor.config.user = user_factory() + executor.execute(input, 1, 1) + assert len(set(hashes)) == 1 + + executor.config.user = user_factory() + executor.execute(input, 1, 1) + assert len(set(hashes)) == 2 + + executor.execute(input, 1, 1) + assert len(set(hashes)) == 2 |