This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 42ea951  Clean test_user once assert is complete (#18865)
42ea951 is described below

commit 42ea951b139b695c3eea98bf00302f5d3d9a508c
Author: Khalid Mammadov <[email protected]>
AuthorDate: Wed Oct 13 12:18:42 2021 +0100

    Clean test_user once assert is complete (#18865)
    
    * Clean test_user once assert is complete
    
    * Remove redundant try block
    
    * Add docstring
---
 tests/test_utils/api_connexion_utils.py   | 12 ++++++++++++
 tests/www/views/conftest.py               | 14 +-------------
 tests/www/views/test_views_trigger_dag.py | 19 ++++++++++---------
 3 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/tests/test_utils/api_connexion_utils.py 
b/tests/test_utils/api_connexion_utils.py
index fd75ec4..be09913 100644
--- a/tests/test_utils/api_connexion_utils.py
+++ b/tests/test_utils/api_connexion_utils.py
@@ -21,6 +21,18 @@ from airflow.www.security import EXISTING_ROLES
 
 
 @contextmanager
+def create_test_client(app, user_name, role_name, permissions):
+    """
+    Helper function to create a client with a temporary user which will be 
deleted once done
+    """
+    client = app.test_client()
+    with create_user_scope(app, username=user_name, role_name=role_name, 
permissions=permissions) as _:
+        resp = client.post("/login/", data={"username": user_name, "password": 
user_name})
+        assert resp.status_code == 302
+        yield client
+
+
+@contextmanager
 def create_user_scope(app, username, **kwargs):
     """
     Helper function designed to be used with pytest fixture mainly.
diff --git a/tests/www/views/conftest.py b/tests/www/views/conftest.py
index 05fe1e4..049742b 100644
--- a/tests/www/views/conftest.py
+++ b/tests/www/views/conftest.py
@@ -25,7 +25,7 @@ import pytest
 from airflow import settings
 from airflow.models import DagBag
 from airflow.www.app import create_app
-from tests.test_utils.api_connexion_utils import create_user, delete_roles
+from tests.test_utils.api_connexion_utils import delete_roles
 from tests.test_utils.decorators import dont_initialize_flask_app_submodules
 from tests.test_utils.www import client_with_login
 
@@ -114,18 +114,6 @@ def user_client(app):
     return client_with_login(app, username="test_user", password="test_user")
 
 
[email protected](scope="module")
-def client_factory(app):
-    def factory(name, role_name, permissions):
-        create_user(app, username=name, role_name=role_name, 
permissions=permissions)
-        client = app.test_client()
-        resp = client.post("/login/", data={"username": name, "password": 
name})
-        assert resp.status_code == 302
-        return client
-
-    return factory
-
-
 class _TemplateWithContext(NamedTuple):
     template: jinja2.environment.Template
     context: Dict[str, Any]
diff --git a/tests/www/views/test_views_trigger_dag.py 
b/tests/www/views/test_views_trigger_dag.py
index f261438..3fbed1b 100644
--- a/tests/www/views/test_views_trigger_dag.py
+++ b/tests/www/views/test_views_trigger_dag.py
@@ -25,6 +25,7 @@ from airflow.security import permissions
 from airflow.utils import timezone
 from airflow.utils.session import create_session
 from airflow.utils.types import DagRunType
+from tests.test_utils.api_connexion_utils import create_test_client
 from tests.test_utils.www import check_content_in_response
 
 
@@ -196,21 +197,21 @@ def 
test_trigger_endpoint_uses_existing_dagbag(admin_client):
     check_content_in_response('example_bash_operator', resp)
 
 
-def test_viewer_cant_trigger_dag(client_factory):
+def test_viewer_cant_trigger_dag(app):
     """
     Test that the test_viewer user can't trigger DAGs.
     """
-    client = client_factory(
-        name="test_user",
+    with create_test_client(
+        app,
+        user_name="test_user",
         role_name="test_role",
         permissions=[
             (permissions.ACTION_CAN_READ, permissions.RESOURCE_WEBSITE),
             (permissions.ACTION_CAN_READ, permissions.RESOURCE_DAG),
             (permissions.ACTION_CAN_CREATE, permissions.RESOURCE_DAG_RUN),
         ],
-    )
-
-    url = 'trigger?dag_id=example_bash_operator'
-    resp = client.get(url, follow_redirects=True)
-    response_data = resp.data.decode()
-    assert "Access is Denied" in response_data
+    ) as client:
+        url = 'trigger?dag_id=example_bash_operator'
+        resp = client.get(url, follow_redirects=True)
+        response_data = resp.data.decode()
+        assert "Access is Denied" in response_data

Reply via email to