Skip to content

Commit 7158deb

Browse files
authored
Merge pull request #168 from abnamro/2498511-unit-tests-for-endpoints-with-caching-enabled
2498511 unit tests for endpoints with caching enabled
2 parents d72f77d + 4193127 commit 7158deb

File tree

8 files changed

+1338
-904
lines changed

8 files changed

+1338
-904
lines changed

components/resc-backend/tests/resc_backend/resc_web_service/endpoints/test_common.py

+43-8
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,71 @@
11
# Standard Library
22
import unittest
3+
from typing import Generator
4+
from unittest.mock import ANY
35

46
# Third Party
7+
import pytest
58
from fastapi.testclient import TestClient
9+
from fastapi_cache import FastAPICache
10+
from fastapi_cache.backends.inmemory import InMemoryBackend
611

712
# First Party
813
from resc_backend.constants import (
914
AZURE_DEVOPS,
1015
BITBUCKET,
16+
CACHE_PREFIX,
1117
GITHUB_PUBLIC,
18+
REDIS_CACHE_EXPIRE,
1219
RWS_ROUTE_AUTH_CHECK,
1320
RWS_ROUTE_SUPPORTED_VCS_PROVIDERS,
1421
RWS_VERSION_PREFIX
1522
)
1623
from resc_backend.resc_web_service.api import app
24+
from resc_backend.resc_web_service.cache_manager import CacheManager
1725
from resc_backend.resc_web_service.dependencies import requires_auth, requires_no_auth
1826

1927

28+
@pytest.fixture(autouse=True)
29+
def _init_cache() -> Generator[ANY, ANY, None]:
30+
FastAPICache.init(InMemoryBackend(),
31+
prefix=CACHE_PREFIX,
32+
expire=REDIS_CACHE_EXPIRE,
33+
key_builder=CacheManager.request_key_builder,
34+
enable=True)
35+
yield
36+
FastAPICache.reset()
37+
38+
2039
class TestFindings(unittest.TestCase):
2140
def setUp(self):
2241
self.client = TestClient(app)
2342
app.dependency_overrides[requires_auth] = requires_no_auth
2443

44+
@staticmethod
45+
def assert_cache(cached_response):
46+
assert FastAPICache.get_enable() is True
47+
assert FastAPICache.get_prefix() == CACHE_PREFIX
48+
assert FastAPICache.get_expire() == REDIS_CACHE_EXPIRE
49+
assert FastAPICache.get_key_builder() is not None
50+
assert FastAPICache.get_coder() is not None
51+
assert cached_response.headers.get("cache-control") is not None
52+
2553
def test_get_supported_vcs_providers(self):
26-
response = self.client.get(f"{RWS_VERSION_PREFIX}"
27-
f"{RWS_ROUTE_SUPPORTED_VCS_PROVIDERS}")
28-
assert response.status_code == 200, response.text
29-
data = response.json()
30-
assert len(data) == 3
31-
assert data[0] == AZURE_DEVOPS
32-
assert data[1] == BITBUCKET
33-
assert data[2] == GITHUB_PUBLIC
54+
with self.client as client:
55+
response = client.get(f"{RWS_VERSION_PREFIX}"
56+
f"{RWS_ROUTE_SUPPORTED_VCS_PROVIDERS}")
57+
assert response.status_code == 200, response.text
58+
data = response.json()
59+
assert len(data) == 3
60+
assert data[0] == AZURE_DEVOPS
61+
assert data[1] == BITBUCKET
62+
assert data[2] == GITHUB_PUBLIC
63+
64+
# Make the second request to retrieve response from cache
65+
cached_response = client.get(f"{RWS_VERSION_PREFIX}"
66+
f"{RWS_ROUTE_SUPPORTED_VCS_PROVIDERS}")
67+
self.assert_cache(cached_response)
68+
assert response.json() == cached_response.json()
3469

3570
def test_auth_check(self):
3671
response = self.client.get(f"{RWS_VERSION_PREFIX}"

components/resc-backend/tests/resc_backend/resc_web_service/endpoints/test_detailed_finding.py

-249
This file was deleted.

0 commit comments

Comments
 (0)