def test_create_from_group_including_admin_users_when_admin_group_has_unknown_group( self): provider = create_group_provider({'group1': ['user1', '@admin_users']}, None, ['user2', '@some_group']) self.assertCountEqual(provider.get_groups('user1'), ['group1']) self.assertCountEqual(provider.get_groups('user2'), ['admin_users', 'group1'])
def test_create_from_group_and_admin_users_when_admin_group_exists(self): provider = create_group_provider( { 'group1': ['user1'], 'admin_users': ['user2'] }, None, ['user1']) self.assertCountEqual(provider.get_groups('user1'), ['group1']) self.assertCountEqual(provider.get_groups('user2'), ['admin_users'])
def test_create_from_admin_users_only(self): provider = create_group_provider(None, None, ['user1']) self.assertCountEqual(provider.get_groups('user1'), ['admin_users']) self.assertCountEqual(provider.get_groups('user2'), [])
def test_create_from_all_none(self): provider = create_group_provider(None, None, None) self.assertCountEqual(provider.get_groups('user1'), [])
def test_create_from_groups_only(self): provider = create_group_provider({'group1': ['user1']}, None, None) self.assertCountEqual(provider.get_groups('user1'), ['group1']) self.assertCountEqual(provider.get_groups('user2'), [])
def main(): tool_utils.validate_web_imports_exist(os.getcwd()) logging_conf_file = os.path.join(CONFIG_FOLDER, 'logging.json') with open(logging_conf_file, 'rt') as f: log_config = json.load(f) file_utils.prepare_folder(os.path.join('logs')) logging.config.dictConfig(log_config) file_utils.prepare_folder(CONFIG_FOLDER) file_utils.prepare_folder(TEMP_FOLDER) migrations.migrate.migrate(TEMP_FOLDER, CONFIG_FOLDER) server_config = server_conf.from_json(SERVER_CONF_PATH, TEMP_FOLDER) secret = get_secret(TEMP_FOLDER) group_provider = create_group_provider( server_config.user_groups, server_config.authenticator, server_config.admin_users) authorizer = Authorizer(server_config.allowed_users, server_config.admin_users, group_provider) config_service = ConfigService(CONFIG_FOLDER) alerts_service = AlertsService(server_config.get_alerts_config()) alerts_service = alerts_service execution_logs_path = os.path.join('logs', 'processes') log_name_creator = LogNameCreator( server_config.logging_config.filename_pattern, server_config.logging_config.date_format) execution_logging_service = ExecutionLoggingService(execution_logs_path, log_name_creator) existing_ids = [entry.id for entry in execution_logging_service.get_history_entries()] id_generator = IdGenerator(existing_ids) execution_service = ExecutionService(id_generator) execution_logging_initiator = ExecutionLoggingInitiator(execution_service, execution_logging_service) execution_logging_initiator.start() user_file_storage = UserFileStorage(secret) file_download_feature = FileDownloadFeature(user_file_storage, TEMP_FOLDER) file_download_feature.subscribe(execution_service) file_upload_feature = FileUploadFeature(user_file_storage, TEMP_FOLDER) alerter_feature = FailAlerterFeature(execution_service, alerts_service) alerter_feature.start() server.init( server_config, server_config.authenticator, authorizer, execution_service, execution_logging_service, config_service, alerts_service, file_upload_feature, file_download_feature, secret)
def test_create_from_groups_and_authenticator_when_different_users(self): auth = self._create_authenticator({'user2': ['group2']}) provider = create_group_provider({'group1': ['user1']}, auth, None) self.assertCountEqual(provider.get_groups('user1'), ['group1']) self.assertCountEqual(provider.get_groups('user2'), ['group2'])
def test_create_from_authenticator_only(self): auth = self._create_authenticator({'user1': ['group1']}) provider = create_group_provider(None, auth, None) self.assertCountEqual(provider.get_groups('user1'), ['group1'])
def test_create_from_groups_and_empty_authenticator(self): auth = self._create_authenticator({}) provider = create_group_provider({'group1': ['user1']}, auth, None) self.assertCountEqual(provider.get_groups('user1'), ['group1']) self.assertCountEqual(provider.get_groups('user2'), [])
def test_create_from_group_including_admin_users_when_admin_group_has_unknown_group(self): provider = create_group_provider({'group1': ['user1', '@admin_users']}, None, ['user2', '@some_group']) self.assertCountEqual(provider.get_groups('user1'), ['group1']) self.assertCountEqual(provider.get_groups('user2'), ['admin_users', 'group1'])
def test_create_from_group_and_admin_users_when_admin_group_exists(self): provider = create_group_provider({'group1': ['user1'], 'admin_users': ['user2']}, None, ['user1']) self.assertCountEqual(provider.get_groups('user1'), ['group1']) self.assertCountEqual(provider.get_groups('user2'), ['admin_users'])
def test_known_groups_when_create_from_authenticator_and_preconfigured( self): auth = self._create_authenticator({'user1': ['group1']}) provider = create_group_provider({'group2': ['@group1']}, auth, None) self.assertCountEqual(provider.get_groups('user1'), ['group1', 'group2'])
def main(): project_path = os.getcwd() try: tool_utils.validate_web_build_exists(project_path) except InvalidWebBuildException as e: print(str(e)) sys.exit(-1) logging_conf_file = os.path.join(CONFIG_FOLDER, 'logging.json') with open(logging_conf_file, 'rt') as f: log_config = json.load(f) file_utils.prepare_folder(LOG_FOLDER) logging.config.dictConfig(log_config) server_version = tool_utils.get_server_version(project_path) logging.info('Starting Script Server' + (', v' + server_version if server_version else ' (custom version)')) file_utils.prepare_folder(CONFIG_FOLDER) file_utils.prepare_folder(TEMP_FOLDER) migrations.migrate.migrate(TEMP_FOLDER, CONFIG_FOLDER, SERVER_CONF_PATH, LOG_FOLDER) server_config = server_conf.from_json(SERVER_CONF_PATH, TEMP_FOLDER) secret = get_secret(server_config.secret_storage_file) tornado_client_config.initialize() group_provider = create_group_provider( server_config.user_groups, server_config.authenticator, server_config.admin_users) authorizer = Authorizer( server_config.allowed_users, server_config.admin_users, server_config.full_history_users, group_provider) config_service = ConfigService(authorizer, CONFIG_FOLDER) alerts_service = AlertsService(server_config.alerts_config) alerts_service = alerts_service execution_logs_path = os.path.join(LOG_FOLDER, 'processes') log_name_creator = LogNameCreator( server_config.logging_config.filename_pattern, server_config.logging_config.date_format) execution_logging_service = ExecutionLoggingService(execution_logs_path, log_name_creator, authorizer) existing_ids = [entry.id for entry in execution_logging_service.get_history_entries(None, system_call=True)] id_generator = IdGenerator(existing_ids) execution_service = ExecutionService(id_generator) execution_logging_controller = ExecutionLoggingController(execution_service, execution_logging_service) execution_logging_controller.start() user_file_storage = UserFileStorage(secret) file_download_feature = FileDownloadFeature(user_file_storage, TEMP_FOLDER) file_download_feature.subscribe(execution_service) file_upload_feature = FileUploadFeature(user_file_storage, TEMP_FOLDER) alerter_feature = FailAlerterFeature(execution_service, alerts_service) alerter_feature.start() executions_callback_feature = ExecutionsCallbackFeature(execution_service, server_config.callbacks_config) executions_callback_feature.start() server.init( server_config, server_config.authenticator, authorizer, execution_service, execution_logging_service, config_service, alerts_service, file_upload_feature, file_download_feature, secret, server_version)