예제 #1
0
 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'])
예제 #2
0
 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'])
예제 #3
0
 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'), [])
예제 #4
0
 def test_create_from_all_none(self):
     provider = create_group_provider(None, None, None)
     self.assertCountEqual(provider.get_groups('user1'), [])
예제 #5
0
 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'), [])
예제 #6
0
파일: main.py 프로젝트: BioPortainer/BioBox
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)
예제 #7
0
 def test_create_from_all_none(self):
     provider = create_group_provider(None, None, None)
     self.assertCountEqual(provider.get_groups('user1'), [])
예제 #8
0
 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'])
예제 #9
0
 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'])
예제 #10
0
 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'])
예제 #11
0
 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'), [])
예제 #12
0
 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'])
예제 #13
0
 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'])
예제 #14
0
 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'), [])
예제 #15
0
 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'])
예제 #16
0
 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'), [])
예제 #17
0
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)
예제 #18
0
 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'])
예제 #19
0
 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'), [])