Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_read_reads_config_file(self, filepaths, target):
project_path, config_dir = self.create_project()
for rel_path in filepaths:
config = {"filepath": rel_path}
abs_path = os.path.join(config_dir, rel_path)
self.write_config(abs_path, config)
self.context.project_path = project_path
config = ConfigReader(self.context).read(target)
assert config == {
"project_path": project_path,
"stack_group_path": os.path.split(target)[0],
"filepath": target
}
def test_config_reader_with_invalid_path(self):
with pytest.raises(InvalidSceptreDirectoryError):
ConfigReader(SceptreContext("/path/does/not/exist", "example"))
def setup_method(self, test_method):
self.patcher_ConfigReader = patch("sceptre.plan.plan.ConfigReader")
self.patcher_StackActions = patch("sceptre.plan.executor.StackActions")
self.mock_ConfigReader = self.patcher_ConfigReader.start()
self.mock_StackActions = self.patcher_StackActions.start()
self.mock_config_reader = MagicMock(spec=ConfigReader)
self.mock_stack_actions = MagicMock(spec=StackActions)
self.mock_stack = MagicMock(spec=Stack)
self.mock_stack.name = 'mock-stack'
self.mock_stack.region = None
self.mock_stack.profile = None
self.mock_stack.external_name = None
self.mock_stack.dependencies = []
self.mock_config_reader.construct_stacks.return_value = \
set([self.mock_stack]), set([self.mock_stack])
self.mock_stack_actions.stack = self.mock_stack
self.mock_ConfigReader.return_value = self.mock_config_reader
for rel_path in filepaths:
# Set up config with reference to non-existing stack
config = {
"project_code": "project_code",
"region": "region",
"template_path": rel_path,
"dependencies": [dependency]
}
abs_path = os.path.join(config_dir, rel_path)
self.write_config(abs_path, config)
self.context.project_path = project_path
try:
config_reader = ConfigReader(self.context)
all_stacks, command_stacks = config_reader.construct_stacks()
except DependencyDoesNotExistError as e:
# Test that the missing dependency is reported.
assert dependency in str(e)
except Exception:
raise
else:
assert False
):
project_path, config_dir = self.create_project()
for rel_path in filepaths:
config = {
"region": "region",
"project_code": "project_code",
"template_path": rel_path
}
abs_path = os.path.join(config_dir, rel_path)
self.write_config(abs_path, config)
self.context.project_path = project_path
config_reader = ConfigReader(self.context)
all_stacks, command_stacks = config_reader.construct_stacks()
assert {str(stack) for stack in all_stacks} == expected_stacks
stack_group_dir = os.path.join(config_dir, "A")
os.makedirs(stack_group_dir)
config = {"config": "config"}
with open(os.path.join(stack_group_dir, "stack.yaml"), 'w') as\
config_file:
yaml.safe_dump(
config, stream=config_file, default_flow_style=False
)
base_config = {
"base_config": "base_config"
}
self.context.project_path = project_path
config = ConfigReader(self.context).read(
"A/stack.yaml", base_config
)
assert config == {
"project_path": project_path,
"stack_group_path": "A",
"config": "config",
"base_config": "base_config"
}
def test_read_with_empty_config_file(self):
config_reader = ConfigReader(self.context)
config = config_reader.read(
"account/stack-group/region/subnets.yaml"
)
assert config == {
"project_path": self.test_project_path,
"stack_group_path": "account/stack-group/region"
}
def test_config_reader_correctly_initialised(self):
config_reader = ConfigReader(self.context)
assert config_reader.context == self.context
def test_read_with_templated_config_file(self):
self.context.user_variables = {"variable_key": "user_variable_value"}
config_reader = ConfigReader(self.context)
config_reader.templating_vars["stack_group_config"] = {
"region": "region_region",
"project_code": "account_project_code",
"required_version": "'>1.0'",
"template_bucket_name": "stack_group_template_bucket_name"
}
os.environ["TEST_ENV_VAR"] = "environment_variable_value"
config = config_reader.read(
"account/stack-group/region/security_groups.yaml"
)
assert config == {
'project_path': self.context.project_path,
"stack_group_path": "account/stack-group/region",
"parameters": {