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

1from unittest import mock, TestCase 

2 

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) 

9 

10TEST_TOKEN = "test-unique-id" 

11 

12 

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 )