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

ephraimanierobi pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 55c1ab1c12e74a982ebbecf76478d173bd58a633
Author: Jarek Potiuk <[email protected]>
AuthorDate: Tue Dec 9 11:46:37 2025 +0100

    [v3-1-test] Create additional users in breeze for testing (#58126) (#59233)
    
    * feat: added --create-all-roles flag to breeze. creates test users with 
each role by default for SimpleAuthManager
    
    * update command config
    
    * ci: ran prek --all-files
    
    * remove dev modecreate roles error
    
    * remove --dev-mode requirement for breeze start-airflow --create-all-roles
    
    * docs: remove documentation
    (cherry picked from commit e615354e34fff66cdd64e8aa7ab63f3258f4a248)
    
    Co-authored-by: Aaron Wolmutt 
<[email protected]>
---
 dev/breeze/doc/03_developer_tasks.rst              | 38 +++++++++++++++++++++-
 .../files/simple_auth_manager_passwords.json       |  2 +-
 .../src/airflow_breeze/params/shell_params.py      |  6 +++-
 scripts/in_container/check_environment.sh          | 12 ++++++-
 4 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/dev/breeze/doc/03_developer_tasks.rst 
b/dev/breeze/doc/03_developer_tasks.rst
index f4968602889..1578d6dea2b 100644
--- a/dev/breeze/doc/03_developer_tasks.rst
+++ b/dev/breeze/doc/03_developer_tasks.rst
@@ -132,12 +132,48 @@ You can connect to these ports/databases using:
 
 If you do not use ``start-airflow`` command. You can use ``tmux`` to multiply 
terminals.
 You may need to create a user prior to running the API server in order to log 
in.
-This can be done with the following command:
+
+**Authentication and User Management**
+
+The authentication method depends on which auth manager is configured:
+
+**SimpleAuthManager (Default in Airflow 3.x)**
+
+SimpleAuthManager is the default authentication manager and comes 
pre-configured with test username and passwords for development:
+
+.. code-block::
+
+    * admin:admin     (Admin role)
+    * viewer:viewer   (Viewer role)
+    * user:user       (User role)
+    * op:op           (Operator role)
+
+These users are automatically available when using SimpleAuthManager and 
require no additional setup.
+
+**FabAuthManager**
+
+When using FabAuthManager, you can create users manually:
 
 .. code-block:: bash
 
     airflow users create --role Admin --username admin --password admin 
--email [email protected] --firstname foo --lastname bar
 
+Or use the ``--create-all-roles`` flag with ``start-airflow`` in dev mode to 
automatically create test users:
+
+.. code-block:: bash
+
+    breeze start-airflow --dev-mode --create-all-roles --auth-manager 
FabAuthManager
+
+This will create the following test users:
+
+.. code-block::
+
+    * admin:admin         (Admin role)
+    * viewer:viewer       (Viewer role)
+    * user:user           (User role)
+    * op:op               (Op role)
+    * testadmin:testadmin (Admin role)
+
 .. note::
     ``airflow users`` command is only available when `FAB auth manager 
<https://airflow.apache.org/docs/apache-airflow-providers-fab/stable/auth-manager/index.html>`_
 is enabled.
 
diff --git 
a/dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json 
b/dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json
index 8f297bdae3d..1f74a7b6616 100644
--- a/dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json
+++ b/dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json
@@ -1 +1 @@
-{"admin": "admin", "viewer":  "viewer"}
+{"admin": "admin", "viewer": "viewer", "user": "user", "op": "op"}
diff --git a/dev/breeze/src/airflow_breeze/params/shell_params.py 
b/dev/breeze/src/airflow_breeze/params/shell_params.py
index 393f5ef9918..3f60a5cd6f1 100644
--- a/dev/breeze/src/airflow_breeze/params/shell_params.py
+++ b/dev/breeze/src/airflow_breeze/params/shell_params.py
@@ -171,6 +171,7 @@ class ShellParams:
     celery_flower: bool = False
     clean_airflow_installation: bool = False
     collect_only: bool = False
+    create_all_roles: bool = False
     debug_components: tuple[str, ...] = ()
     debugger: str = "debugpy"
     db_reset: bool = False
@@ -561,7 +562,9 @@ class ShellParams:
         _set_var(_env, "AIRFLOW__CORE__AUTH_MANAGER", self.auth_manager_path)
         _set_var(_env, "AIRFLOW__CORE__EXECUTOR", self.executor)
         if self.auth_manager == SIMPLE_AUTH_MANAGER:
-            _set_var(_env, "AIRFLOW__CORE__SIMPLE_AUTH_MANAGER_USERS", 
"admin:admin,viewer:viewer")
+            _set_var(
+                _env, "AIRFLOW__CORE__SIMPLE_AUTH_MANAGER_USERS", 
"admin:admin,viewer:viewer,user:user,op:op"
+            )
         _set_var(
             _env,
             "AIRFLOW__CORE__SIMPLE_AUTH_MANAGER_PASSWORDS_FILE",
@@ -607,6 +610,7 @@ class ShellParams:
         _set_var(_env, "CI_TARGET_BRANCH", self.airflow_branch)
         _set_var(_env, "CI_TARGET_REPO", self.github_repository)
         _set_var(_env, "COLLECT_ONLY", self.collect_only)
+        _set_var(_env, "CREATE_ALL_ROLES", self.create_all_roles)
         _set_var(_env, "COMMIT_SHA", None, commit_sha())
         _set_var(_env, "COMPOSE_FILE", self.compose_file)
         _set_var(_env, "DB_RESET", self.db_reset)
diff --git a/scripts/in_container/check_environment.sh 
b/scripts/in_container/check_environment.sh
index 6c385f98173..77dcb636283 100755
--- a/scripts/in_container/check_environment.sh
+++ b/scripts/in_container/check_environment.sh
@@ -114,8 +114,18 @@ function startairflow_if_requested() {
 
         if airflow config get-value core auth_manager | grep -q 
"FabAuthManager"; then
             airflow users create -u admin -p admin -f Thor -l Adminstra -r 
Admin -e [email protected] || true
+
+            # Create all roles for testing if CREATE_ALL_ROLES is set
+            if [[ "${CREATE_ALL_ROLES}" == "true" ]]; then
+                echo "Creating all test roles for FabAuthManager..."
+                airflow users create -u viewer -p viewer -f Test -l Viewer -r 
Viewer -e [email protected] || true
+                airflow users create -u user -p user -f Test -l User -r User 
-e [email protected] || true
+                airflow users create -u op -p op -f Test -l Op -r Op -e 
[email protected] || true
+                airflow users create -u testadmin -p testadmin -f Test -l 
TestAdmin -r Admin -e [email protected] || true
+                echo "All test roles created successfully for FabAuthManager."
+            fi
         else
-            echo "Skipping user creation as auth manager different from Fab is 
used"
+            echo "SimpleAuthManager detected. All roles (admin, viewer, user, 
op) are always available via configuration in 
.dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json"
         fi
     fi
     return $?

Reply via email to