Coverage for tests/publisher/cve/test_has_cve_api.py: 100%

40 statements  

« prev     ^ index     » next       coverage.py v7.10.2, created at 2025-08-05 22:06 +0000

1from unittest import TestCase 

2from webapp.app import create_app 

3from unittest.mock import patch 

4 

5 

6class TestEndpoints(TestCase): 

7 def setUp(self): 

8 self.app = create_app(testing=True) 

9 self.client = self.app.test_client() 

10 self._log_in(is_canonical=False) 

11 

12 def _log_in(self, is_canonical=False): 

13 test_macaroon = "test_macaroon" 

14 with self.client.session_transaction() as s: 

15 s["publisher"] = { 

16 "account_id": "test_account_id", 

17 "image": None, 

18 "nickname": "XYZ", 

19 "fullname": "ABC XYZ", 

20 "email": "testing@testing.com", 

21 "stores": [], 

22 "is_canonical": is_canonical, 

23 } 

24 s["macaroons"] = test_macaroon 

25 s["developer_token"] = test_macaroon 

26 s["exchanged_developer_token"] = True 

27 

28 def _set_user_is_canonical(self, value): 

29 self._log_in(is_canonical=value) 

30 

31 

32class TestModelServiceEndpoints(TestEndpoints): 

33 @patch( 

34 "webapp.publisher.cve.cve_helper.CveHelper.get_revisions_with_cves", 

35 return_value=[123, 321], 

36 ) 

37 @patch( 

38 "canonicalwebteam.store_api.dashboard.Dashboard.get_snap_info", 

39 return_value={"snap_id": "id"}, 

40 ) 

41 def test_has_cves_for_canonical_user(self, mock_get_snap_info, mock_get): 

42 self._set_user_is_canonical(True) 

43 

44 response = self.client.get("api/test/cves") 

45 data = response.json 

46 

47 self.assertEqual(response.status_code, 200) 

48 self.assertEqual(data["success"], True) 

49 self.assertEqual(data["data"]["revisions"], [123, 321]) 

50 

51 @patch( 

52 "webapp.publisher.cve.cve_helper.CveHelper.get_revisions_with_cves", 

53 return_value=[], 

54 ) 

55 @patch( 

56 "canonicalwebteam.store_api.dashboard.Dashboard.get_snap_info", 

57 return_value={"snap_id": "id"}, 

58 ) 

59 def test_has_cves_no_data(self, mock_get_snap_info, mock_get): 

60 self._set_user_is_canonical(True) 

61 

62 response = self.client.get("api/test/cves") 

63 data = response.json 

64 

65 self.assertEqual(response.status_code, 404) 

66 self.assertEqual(data["success"], False) 

67 

68 def test_has_cves_for_non_canonical_user(self): 

69 response = self.client.get("api/test/cves") 

70 data = response.json 

71 

72 self.assertEqual(response.status_code, 403) 

73 self.assertEqual(data["success"], False)