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
« 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
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 )
24 # Make the request
25 response = self.client.get("/api/packages/test-snap")
26 data = response.json
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)
34 # Verify the gateway was called with correct parameters
35 mock_publisher_gateway.get_package_metadata.assert_called_once()
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 )
44 # Make the request
45 response = self.client.get("/api/packages/test-snap")
46 data = response.json
48 # Assert 404 response
49 self.assertEqual(response.status_code, 404)
50 self.assertFalse(data["success"])
51 self.assertEqual(data["error"], "Package not found")