Coverage for tests/endpoints/publisher/tests_packages.py: 100%

23 statements  

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

1from unittest.mock import patch 

2from canonicalwebteam.exceptions import StoreApiResourceNotFound 

3from tests.endpoints.endpoint_testing import TestEndpoints 

4 

5 

6class TestGetPackageMetadata(TestEndpoints): 

7 @patch("webapp.endpoints.publisher.packages.publisher_gateway") 

8 def test_get_package_metadata_success(self, mock_publisher_gateway): 

9 # Mock successful response from publisher gateway 

10 mock_package_metadata = { 

11 "snap_name": "test-snap", 

12 "title": "Test Snap", 

13 "snap_id": "test-snap-id-123", 

14 "publisher": {"display-name": "Test Publisher"}, 

15 "license": "MIT", 

16 "private": False, 

17 "status": "Published", 

18 "version": "1.0.0", 

19 } 

20 mock_publisher_gateway.get_package_metadata.return_value = ( 

21 mock_package_metadata 

22 ) 

23 

24 # Make the request 

25 response = self.client.get("/api/packages/test-snap") 

26 data = response.json 

27 

28 # Assert response structure 

29 self.assertEqual(response.status_code, 200) 

30 self.assertTrue(data["success"]) 

31 self.assertIn("data", data) 

32 self.assertEqual(data["data"], mock_package_metadata) 

33 

34 # Verify the gateway was called with correct parameters 

35 mock_publisher_gateway.get_package_metadata.assert_called_once() 

36 

37 @patch("webapp.endpoints.publisher.packages.publisher_gateway") 

38 def test_get_package_metadata_not_found(self, mock_publisher_gateway): 

39 # Mock StoreApiResourceNotFound exception 

40 mock_publisher_gateway.get_package_metadata.side_effect = ( 

41 StoreApiResourceNotFound() 

42 ) 

43 

44 # Make the request 

45 response = self.client.get("/api/packages/test-snap") 

46 data = response.json 

47 

48 # Assert 404 response 

49 self.assertEqual(response.status_code, 404) 

50 self.assertFalse(data["success"]) 

51 self.assertEqual(data["error"], "Package not found")