def test_validate_celery_config_request_logs_dir_misconfigured(tmpdir, file_type, access, error): iib_request_logs_dir = tmpdir.join('logs') if file_type == 'file': iib_request_logs_dir.write('') elif file_type == 'dir': iib_request_logs_dir.mkdir() elif file_type is None: # Skip creating the file or directory altogether pass else: raise ValueError(f'Bad file_type {file_type}') if not access: if os.getuid() == 0: pytest.skip('Cannot restrict the root user from writing to any file') iib_request_logs_dir.chmod(mode=0o555) conf = { 'iib_api_url': 'http://localhost:8080/api/v1/', 'iib_organization_customizations': {}, 'iib_request_logs_dir': iib_request_logs_dir, 'iib_registry': 'registry', 'iib_required_labels': {}, } error = error.format(logs_dir=iib_request_logs_dir) with pytest.raises(ConfigError, match=error): validate_celery_config(conf)
def test_validate_celery_config(): validate_celery_config({ 'iib_api_url': 'http://localhost:8080/api/v1/', 'iib_organization_customizations': {}, 'iib_registry': 'registry', 'iib_required_labels': {}, })
def test_validate_celery_config_iib_required_labels_not_dict(): conf = { 'iib_api_url': 'http://localhost:8080/api/v1/', 'iib_registry': 'registry', 'iib_required_labels': 123, } with pytest.raises(ConfigError, match='iib_required_labels must be a dictionary'): validate_celery_config(conf)
def test_validate_celery_config_failure(missing_key): conf = { 'iib_api_url': 'http://localhost:8080/api/v1/', 'iib_registry': 'registry', } conf.pop(missing_key) with pytest.raises(ConfigError, match=f'{missing_key} must be set'): validate_celery_config(conf)
def test_validate_celery_config_invalid_organization_customizations(config, error): conf = { 'iib_api_url': 'http://localhost:8080/api/v1/', 'iib_organization_customizations': config, 'iib_registry': 'registry', 'iib_required_labels': {}, } with pytest.raises(ConfigError, match=error): validate_celery_config(conf)
def test_validate_celery_config_invalid_s3_env_vars(): conf = { 'iib_api_url': 'http://localhost:8080/api/v1/', 'iib_registry': 'registry', 'iib_required_labels': {}, 'iib_organization_customizations': {}, 'iib_aws_s3_bucket_name': 'bucket', 'iib_request_logs_dir': 'some-dir', 'iib_request_related_bundles_dir': 'some-other-dir', } error = ( '"AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY" and "AWS_DEFAULT_REGION" ' 'environment variables must be set to valid strings when' '"iib_aws_s3_bucket_name" is set. ' 'These are used for read/write access to the s3 bucket by IIB') with pytest.raises(ConfigError, match=error): validate_celery_config(conf)