|
1 | 1 | import pytest |
2 | 2 |
|
| 3 | +from fastapi import status |
| 4 | + |
3 | 5 | from alws.app import app |
4 | 6 | from tests.mock_classes import BaseAsyncTestCase |
5 | 7 |
|
6 | 8 |
|
7 | 9 | @pytest.mark.usefixtures( |
8 | | - "get_rpm_packages", |
9 | 10 | "patch_limiter" |
10 | 11 | ) |
11 | 12 | class TestPackageInfoEndpoints(BaseAsyncTestCase): |
12 | | - async def test_get_package_info(self): |
| 13 | + async def test_get_package_info_success(self, mock_get_package_info_success, package_info): |
13 | 14 | response = await self.make_request( |
14 | 15 | "get", |
15 | | - "/api/v1/package_info/?package_name=example_package", |
| 16 | + "/api/v1/package_info/?name=example_package&almalinux_version=9", |
16 | 17 | ) |
17 | | - assert ( |
18 | | - response.status_code == self.status_codes.HTTP_200_OK |
19 | | - and response.json() |
20 | | - ), f"Cannot get package info by package name:\n{response.text}" |
21 | 18 |
|
22 | | - async def test_get_package_info_version(self): |
23 | | - version = 9 |
24 | | - not_version = 5 |
| 19 | + assert response.status_code == status.HTTP_200_OK |
| 20 | + data = response.json() |
| 21 | + assert data == package_info |
25 | 22 |
|
| 23 | + async def test_platform_not_found(self, mock_get_package_info_platform_not_found): |
26 | 24 | response = await self.make_request( |
27 | 25 | "get", |
28 | | - f"/api/v1/package_info/?package_name=example_package&release_version={version}", |
| 26 | + "/api/v1/package_info/?name=bash&almalinux_version=999", |
29 | 27 | ) |
30 | | - response_json = response.json() |
31 | | - assert ( |
32 | | - response.status_code == self.status_codes.HTTP_200_OK |
33 | | - and response_json |
34 | | - ), f"Cannot get package info by package name and major version:\n{response.text}" |
35 | | - assert ( |
36 | | - response_json[0]["release"] |
37 | | - and f"el9" in response_json[0]["release"] |
| 28 | + |
| 29 | + assert response.status_code == status.HTTP_400_BAD_REQUEST |
| 30 | + assert "Invalid distribution" in response.text |
| 31 | + |
| 32 | + async def test_repositories_not_found(self, mock_get_package_info_repos_not_found): |
| 33 | + response = await self.make_request( |
| 34 | + "get", |
| 35 | + "/api/v1/package_info/?name=bash&almalinux_version=9&arch=x86_64", |
38 | 36 | ) |
39 | 37 |
|
| 38 | + assert response.status_code == status.HTTP_400_BAD_REQUEST |
| 39 | + assert "No repositories found" in response.text |
| 40 | + |
| 41 | + |
| 42 | + async def test_empty_package_list(self, mock_get_package_info_empty): |
40 | 43 | response = await self.make_request( |
41 | 44 | "get", |
42 | | - f"/api/v1/package_info/?package_name=example_package&release_version={not_version}", |
| 45 | + "/api/v1/package_info/?name=none&almalinux_version=9", |
43 | 46 | ) |
44 | | - assert ( |
45 | | - response.status_code == self.status_codes.HTTP_200_OK |
46 | | - and not response.json() |
47 | | - ), f"Cannot get package info by package name and major version:\n{response.text}" |
48 | 47 |
|
49 | | - async def test_get_no_package_info(self): |
| 48 | + assert response.status_code == status.HTTP_200_OK |
| 49 | + assert response.json() == [] |
| 50 | + |
| 51 | + async def test_missing_required_query_params(self): |
50 | 52 | response = await self.make_request( |
51 | 53 | "get", |
52 | | - "/api/v1/package_info/?package_name=doesnt_exist", |
| 54 | + "/api/v1/package_info/?name=bash", |
53 | 55 | ) |
54 | | - assert ( |
55 | | - response.status_code == self.status_codes.HTTP_200_OK |
56 | | - and not response.json() |
57 | | - ), f"Error in fetching missing package:\n{response.text}" |
| 56 | + |
| 57 | + assert response.status_code == status.HTTP_422_UNPROCESSABLE_ENTITY |
0 commit comments