potiuk opened a new issue, #40684:
URL: https://github.com/apache/airflow/issues/40684

   ### Body
   
   As of recently the compatibility tests for Airlfow 2.8.2 started to fail for 
AwsAuthManager and it looks like the Auth Manager is not compatible with 2.8 
BaseAuthManager.
   
   Example failure: 
https://github.com/apache/airflow/actions/runs/9863515547/job/27237103252?pr=40677
   
   It seems that in Airflow 2.8 in som cases the BaseAuthManager calls 
`is_authorized_custom_view` method with `fab_action_name` keyword param and 
AWSAuthManager expects `method` to be used there.
   
   I am not sure if it qualifies to RC2 for the Amazon provider (cc: @vincbeck 
@eladkal). 
   
   There are two solutions how to solve it:
   
   * make AWSAuthManager 2.9+ only (we will have to exclude the tests for 2.8 
and add some code that detects airflow version and provide meaningful error 
message
   * fix AWSAuthManager to also accept `fab_action_name` as keyword paremetr 
(could be done via **kwargs) for example
   
   The stack trace:
   
   ```python
   ________________ TestAwsAuthManager.test_aws_auth_manager_index 
________________
   
   self = 
<tests.providers.amazon.aws.auth_manager.test_aws_auth_manager.TestAwsAuthManager
 object at 0x7fe8b006bee0>
   mock_is_authorized = <MagicMock name='is_authorized' id='140636724843328'>
   mock_get_batch_is_authorized_results = <MagicMock 
name='get_batch_is_authorized_results' id='140636724678816'>
   mock_get_batch_is_authorized_single_result = <MagicMock 
name='get_batch_is_authorized_single_result' id='140636724854688'>
   client_admin = <Flask 'airflow.www.app'>
   
       @pytest.mark.db_test
       @patch.object(AwsAuthManagerAmazonVerifiedPermissionsFacade, 
"get_batch_is_authorized_single_result")
       @patch.object(AwsAuthManagerAmazonVerifiedPermissionsFacade, 
"get_batch_is_authorized_results")
       @patch.object(AwsAuthManagerAmazonVerifiedPermissionsFacade, 
"is_authorized")
       def test_aws_auth_manager_index(
           self,
           mock_is_authorized,
           mock_get_batch_is_authorized_results,
           mock_get_batch_is_authorized_single_result,
           client_admin,
       ):
           """
           Load the index page using AWS auth manager. Mock all interactions 
with Amazon Verified Permissions.
           """
           mock_is_authorized.return_value = True
           mock_get_batch_is_authorized_results.return_value = []
           mock_get_batch_is_authorized_single_result.return_value = 
{"decision": "ALLOW"}
           with client_admin.test_client() as client:
   >           response = client.get("/login_callback", follow_redirects=True)
   
   tests/providers/amazon/aws/auth_manager/test_aws_auth_manager.py:801: 
   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ 
   /usr/local/lib/python3.8/site-packages/werkzeug/test.py:1141: in get
       return self.open(*args, **kw)
   /usr/local/lib/python3.8/site-packages/flask/testing.py:238: in open
       response = super().open(
   /usr/local/lib/python3.8/site-packages/werkzeug/test.py:1129: in open
       response = self.resolve_redirect(response, buffered=buffered)
   /usr/local/lib/python3.8/site-packages/werkzeug/test.py:1030: in 
resolve_redirect
       return self.open(builder, buffered=buffered)
   /usr/local/lib/python3.8/site-packages/flask/testing.py:238: in open
       response = super().open(
   /usr/local/lib/python3.8/site-packages/werkzeug/test.py:1095: in open
       response = self.run_wsgi_app(request.environ, buffered=buffered)
   /usr/local/lib/python3.8/site-packages/werkzeug/test.py:962: in run_wsgi_app
       rv = run_wsgi_app(self.application, environ, buffered=buffered)
   /usr/local/lib/python3.8/site-packages/werkzeug/test.py:1243: in run_wsgi_app
       app_rv = app(environ, start_response)
   /usr/local/lib/python3.8/site-packages/flask/app.py:2552: in __call__
       return self.wsgi_app(environ, start_response)
   /usr/local/lib/python3.8/site-packages/flask/app.py:2532: in wsgi_app
       response = self.handle_exception(e)
   /usr/local/lib/python3.8/site-packages/flask/app.py:2529: in wsgi_app
       response = self.full_dispatch_request()
   /usr/local/lib/python3.8/site-packages/flask/app.py:1825: in 
full_dispatch_request
       rv = self.handle_user_exception(e)
   /usr/local/lib/python3.8/site-packages/flask/app.py:1823: in 
full_dispatch_request
       rv = self.dispatch_request()
   /usr/local/lib/python3.8/site-packages/flask/app.py:1799: in dispatch_request
       return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
   /usr/local/lib/python3.8/site-packages/airflow/www/auth.py:139: in decorated
       return _has_access(
   /usr/local/lib/python3.8/site-packages/airflow/www/auth.py:163: in 
_has_access
       return func(*args, **kwargs)
   /usr/local/lib/python3.8/site-packages/airflow/www/views.py:1031: in index
       return self.render_template(
   /usr/local/lib/python3.8/site-packages/airflow/www/views.py:714: in 
render_template
       return super().render_template(
   /usr/local/lib/python3.8/site-packages/flask_appbuilder/baseviews.py:342: in 
render_template
       return render_template(
   /usr/local/lib/python3.8/site-packages/flask/templating.py:147: in 
render_template
       return _render(app, template, context)
   /usr/local/lib/python3.8/site-packages/flask/templating.py:130: in _render
       rv = template.render(context)
   /usr/local/lib/python3.8/site-packages/jinja2/environment.py:1301: in render
       self.environment.handle_exception()
   /usr/local/lib/python3.8/site-packages/jinja2/environment.py:936: in 
handle_exception
       raise rewrite_traceback_stack(source=source)
   
/usr/local/lib/python3.8/site-packages/airflow/www/templates/airflow/dags.html:44:
 in top-level template code
       {% elif curr_ordering_direction == 'asc' and 
request.args.get('sorting_key') == attribute_name %}
   
/usr/local/lib/python3.8/site-packages/airflow/www/templates/airflow/main.html:21:
 in top-level template code
       {% from 'airflow/_messages.html' import show_message %}
   
/usr/local/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/baselayout.html:2:
 in top-level template code
       {% import 'appbuilder/baselib.html' as baselib %}
   
/usr/local/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/init.html:42:
 in top-level template code
       {% block body %}
   
/usr/local/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/baselayout.html:8:
 in block 'body'
       {% block navbar %}
   
/usr/local/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/baselayout.html:10:
 in block 'navbar'
       {% include 'appbuilder/navbar.html' %}
   
/usr/local/lib/python3.8/site-packages/airflow/www/templates/appbuilder/navbar.html:50:
 in top-level template code
       {% include 'appbuilder/navbar_menu.html' %}
   
/usr/local/lib/python3.8/site-packages/airflow/www/templates/appbuilder/navbar_menu.html:25:
 in top-level template code
       {% if item1 | is_menu_visible %}
   /usr/local/lib/python3.8/site-packages/flask_appbuilder/filters.py:134: in 
is_menu_visible
       return self.security_manager.has_access("menu_access", item.name)
   /usr/local/lib/python3.8/site-packages/airflow/www/security_manager.py:138: 
in has_access
       return is_authorized_method(action_name, resource_pk, user)
   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ 
   
   action = 'menu_access', resource_pk = None
   user = <airflow.providers.amazon.aws.auth_manager.user.AwsAuthManagerUser 
object at 0x7fe88a0f3fa0>
   
   >   return lambda action, resource_pk, user: 
get_auth_manager().is_authorized_custom_view(
           fab_action_name=action,
           fab_resource_name=fab_resource_name,
           user=user,
       )
   E   TypeError: is_authorized_custom_view() got an unexpected keyword 
argument 'fab_action_name'
   
   /usr/local/lib/python3.8/site-packages/airflow/www/security_manager.py:335: 
TypeError
   ------ generated xml file: /files/test_result-providers_amazon-sqlite.xml 
------
   ```
   
   ### Committer
   
   - [X] I acknowledge that I am a maintainer/committer of the Apache Airflow 
project.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to