This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-1-test by this push:
new d260134dcf2 [v3-1-test] Create additional users in breeze for testing
(#58126) (#59233)
d260134dcf2 is described below
commit d260134dcf2c1b00c30c7ea25e45c080acca7bdc
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 $?