Skip to content

Commit 14a446e

Browse files
pierrejeambrunnailo2c
authored andcommitted
AIP-84 Add Auth to providers (apache#47505)
1 parent 8f5c5f4 commit 14a446e

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

airflow/api_fastapi/core_api/openapi/v1-generated.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4448,6 +4448,8 @@ paths:
44484448
summary: Get Providers
44494449
description: Get providers.
44504450
operationId: get_providers
4451+
security:
4452+
- OAuth2PasswordBearer: []
44514453
parameters:
44524454
- name: limit
44534455
in: query

airflow/api_fastapi/core_api/routes/public/providers.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,13 @@
1919

2020
import re
2121

22+
from fastapi import Depends
23+
24+
from airflow.api_fastapi.auth.managers.models.resource_details import AccessView
2225
from airflow.api_fastapi.common.parameters import QueryLimit, QueryOffset
2326
from airflow.api_fastapi.common.router import AirflowRouter
2427
from airflow.api_fastapi.core_api.datamodels.providers import ProviderCollectionResponse, ProviderResponse
28+
from airflow.api_fastapi.core_api.security import requires_access_view
2529
from airflow.providers_manager import ProviderInfo, ProvidersManager
2630

2731
providers_router = AirflowRouter(tags=["Provider"], prefix="/providers")
@@ -39,7 +43,10 @@ def _provider_mapper(provider: ProviderInfo) -> ProviderResponse:
3943
)
4044

4145

42-
@providers_router.get("")
46+
@providers_router.get(
47+
"",
48+
dependencies=[Depends(requires_access_view(AccessView.PROVIDERS))],
49+
)
4350
def get_providers(
4451
limit: QueryLimit,
4552
offset: QueryOffset,

tests/api_fastapi/core_api/routes/public/test_providers.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class TestGetProviders:
6161
new_callable=mock.PropertyMock,
6262
return_value=MOCK_PROVIDERS,
6363
)
64-
def test_get_dags(
64+
def test_should_respond_200(
6565
self, mock_provider, test_client, query_params, expected_total_entries, expected_package_name
6666
):
6767
response = test_client.get("/public/providers", params=query_params)
@@ -71,3 +71,11 @@ def test_get_dags(
7171

7272
assert body["total_entries"] == expected_total_entries
7373
assert [provider["package_name"] for provider in body["providers"]] == expected_package_name
74+
75+
def test_should_response_401(self, unauthenticated_test_client):
76+
response = unauthenticated_test_client.get("/public/providers")
77+
assert response.status_code == 401
78+
79+
def test_should_response_403(self, unauthorized_test_client):
80+
response = unauthorized_test_client.get("/public/providers")
81+
assert response.status_code == 403

0 commit comments

Comments
 (0)