Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vincbeck committed Feb 22, 2024
1 parent 9bb812c commit 387b9d0
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 15 deletions.
2 changes: 1 addition & 1 deletion airflow/auth/managers/base_auth_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ def _is_permitted_dag_id(method: ResourceMethod, methods: Container[ResourceMeth
if _is_permitted_dag_id("GET", methods, dag_id) or _is_permitted_dag_id("PUT", methods, dag_id)
}

def get_permitted_menu_items(self, menu_items: list[MenuItem]) -> list[MenuItem]:
def filter_permitted_menu_items(self, menu_items: list[MenuItem]) -> list[MenuItem]:
"""
Filter menu items based on user permissions.
Expand Down
6 changes: 2 additions & 4 deletions airflow/providers/amazon/aws/auth_manager/aws_auth_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@

from flask import session, url_for

from airflow.auth.managers.models.resource_details import (
AccessView,
)
from airflow.cli.cli_config import CLICommand, DefaultHelpParser, GroupCommand
from airflow.configuration import conf
from airflow.exceptions import AirflowException, AirflowOptionalProviderFeatureException
Expand Down Expand Up @@ -69,6 +66,7 @@
try:
from airflow.auth.managers.base_auth_manager import BaseAuthManager, ResourceMethod
from airflow.auth.managers.models.resource_details import (
AccessView,
ConnectionDetails,
DagAccessEntity,
DagDetails,
Expand Down Expand Up @@ -445,7 +443,7 @@ def batch_is_authorized_variable(
]
return self.avp_facade.batch_is_authorized(requests=facade_requests, user=self.get_user())

def get_permitted_menu_items(self, menu_items: list[MenuItem]) -> list[MenuItem]:
def filter_permitted_menu_items(self, menu_items: list[MenuItem]) -> list[MenuItem]:
"""
Filter menu items based on user permissions.
Expand Down
2 changes: 1 addition & 1 deletion airflow/www/templates/appbuilder/navbar_menu.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<a href="{{item.get_url()}}">{{_(item.label)}}</a>
{% endmacro %}

{% for item1 in auth_manager.get_permitted_menu_items(menu.get_list()) %}
{% for item1 in auth_manager.filter_permitted_menu_items(menu.get_list()) %}
{% if item1 %}
{% if item1.childs %}
<li class="dropdown">
Expand Down
2 changes: 1 addition & 1 deletion docs/apache-airflow/core-concepts/auth-manager.rst
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ The following methods aren't required to override to have a functional Airflow a
* ``batch_is_authorized_pool``: Batch version of ``is_authorized_pool``. If not overridden, it will call ``is_authorized_pool`` for every single item.
* ``batch_is_authorized_variable``: Batch version of ``is_authorized_variable``. If not overridden, it will call ``is_authorized_variable`` for every single item.
* ``get_permitted_dag_ids``: Return the list of DAG IDs the user has access to. If not overridden, it will call ``is_authorized_dag`` for every single DAG available in the environment.
* ``get_permitted_menu_items``: Return the menu items the user has access to. If not overridden, it will call ``has_access`` in :class:`~airflow.www.security_manager.AirflowSecurityManagerV2` for every single menu item.
* ``filter_permitted_menu_items``: Return the menu items the user has access to. If not overridden, it will call ``has_access`` in :class:`~airflow.www.security_manager.AirflowSecurityManagerV2` for every single menu item.

CLI
^^^
Expand Down
4 changes: 2 additions & 2 deletions tests/auth/managers/test_base_auth_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ def side_effect_func(
assert result == expected

@patch.object(EmptyAuthManager, "security_manager")
def test_get_permitted_menu_items(self, mock_security_manager, auth_manager):
def test_filter_permitted_menu_items(self, mock_security_manager, auth_manager):
mock_security_manager.has_access.side_effect = [True, False, True, True, False]

menu = Menu()
Expand All @@ -309,7 +309,7 @@ def test_get_permitted_menu_items(self, mock_security_manager, auth_manager):
menu.add_link("item3.1", category="item3")
menu.add_link("item3.2", category="item3")

result = auth_manager.get_permitted_menu_items(menu.get_list())
result = auth_manager.filter_permitted_menu_items(menu.get_list())

assert len(result) == 2
assert result[0].name == "item1"
Expand Down
12 changes: 6 additions & 6 deletions tests/providers/amazon/aws/auth_manager/test_aws_auth_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,7 @@ def test_batch_is_authorized_variable(
assert result

@patch.object(AwsAuthManager, "get_user")
def test_get_permitted_menu_items(self, mock_get_user, auth_manager, test_user):
def test_filter_permitted_menu_items(self, mock_get_user, auth_manager, test_user):
batch_is_authorized_output = [
{
"request": {
Expand Down Expand Up @@ -575,7 +575,7 @@ def test_get_permitted_menu_items(self, mock_get_user, auth_manager, test_user):

mock_get_user.return_value = test_user

result = auth_manager.get_permitted_menu_items(
result = auth_manager.filter_permitted_menu_items(
[
MenuItem("Category1", childs=[MenuItem(RESOURCE_CONNECTION), MenuItem(RESOURCE_VARIABLE)]),
MenuItem("Category2", childs=[MenuItem(RESOURCE_DATASET)]),
Expand Down Expand Up @@ -622,9 +622,9 @@ def test_get_permitted_menu_items(self, mock_get_user, auth_manager, test_user):
assert result[1].name == RESOURCE_AUDIT_LOG

@patch.object(AwsAuthManager, "get_user")
def test_get_permitted_menu_items_logged_out(self, mock_get_user, auth_manager):
def test_filter_permitted_menu_items_logged_out(self, mock_get_user, auth_manager):
mock_get_user.return_value = None
result = auth_manager.get_permitted_menu_items(
result = auth_manager.filter_permitted_menu_items(
[
MenuItem(RESOURCE_AUDIT_LOG),
]
Expand All @@ -633,10 +633,10 @@ def test_get_permitted_menu_items_logged_out(self, mock_get_user, auth_manager):
assert result == []

@patch.object(AwsAuthManager, "get_user")
def test_get_permitted_menu_items_wrong_menu_item(self, mock_get_user, auth_manager, test_user):
def test_filter_permitted_menu_items_wrong_menu_item(self, mock_get_user, auth_manager, test_user):
mock_get_user.return_value = test_user
with pytest.raises(AirflowException, match="Unknown resource name"):
auth_manager.get_permitted_menu_items(
auth_manager.filter_permitted_menu_items(
[
MenuItem("Test"),
]
Expand Down

0 comments on commit 387b9d0

Please sign in to comment.