# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. import logging import click from colorama import Fore from flask import current_app from flask.cli import with_appcontext import superset.utils.database as database_utils from superset import security_manager from superset.utils.decorators import transaction logger = logging.getLogger(__name__) @click.command() @with_appcontext @transaction() def load_test_users() -> None: """ Loads admin, alpha, and gamma user for testing purposes Syncs permissions for those users/roles """ print(Fore.GREEN + "Loading a set of users for unit tests") if current_app.config["TESTING"]: sm = security_manager examples_db = database_utils.get_example_database() examples_pv = sm.add_permission_view_menu("database_access", examples_db.perm) sm.sync_role_definitions() gamma_sqllab_role = sm.add_role("gamma_sqllab") sm.add_permission_role(gamma_sqllab_role, examples_pv) gamma_no_csv_role = sm.add_role("gamma_no_csv") sm.add_permission_role(gamma_no_csv_role, examples_pv) for role in ["Gamma", "sql_lab"]: for perm in sm.find_role(role).permissions: sm.add_permission_role(gamma_sqllab_role, perm) if str(perm) != "can csv on Superset": sm.add_permission_role(gamma_no_csv_role, perm) users = ( ("admin", "Admin"), ("gamma", "Gamma"), ("gamma2", "Gamma"), ("gamma_sqllab", "gamma_sqllab"), ("alpha", "Alpha"), ("gamma_no_csv", "gamma_no_csv"), ) for username, role in users: user = sm.find_user(username) if not user: sm.add_user( username, username, "user", username + "@fab.org", sm.find_role(role), password="general", # noqa: S106 )