Coverage for nlp_webserver/tests/views_tests.py: 100%
14 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-08-27 10:34 -0500
« prev ^ index » next coverage.py v7.8.0, created at 2025-08-27 10:34 -0500
1from unittest import mock, TestCase
3from crate_anon.nlp_webserver.security import Credentials, hash_password
4from crate_anon.nlp_webserver.views import (
5 NlpWebViews,
6 REDIS_SESSIONS,
7 SESSION_TOKEN_EXPIRY_S,
8)
10TEST_TOKEN = "test-unique-id"
13class NlpWebViewsTests(TestCase):
14 @mock.patch(
15 "crate_anon.nlp_webserver.views.get_auth_credentials",
16 return_value=Credentials("test", "test"),
17 )
18 @mock.patch(
19 "crate_anon.nlp_webserver.views.get_users",
20 return_value={"test": hash_password("test")},
21 )
22 @mock.patch(
23 "crate_anon.nlp_webserver.views.make_unique_id",
24 return_value=TEST_TOKEN,
25 )
26 def test_authenticate_sets_redis_session(self, *args) -> None:
27 request = mock.Mock()
28 view = NlpWebViews(request)
29 view._authenticate()
30 self.assertEqual(
31 REDIS_SESSIONS.get("test"), bytes(TEST_TOKEN, encoding="utf8")
32 )
33 self.assertLessEqual(
34 REDIS_SESSIONS.ttl("test"), SESSION_TOKEN_EXPIRY_S
35 )