public boolean doesTemplateExist(CaseInsensitiveString template) { return cruiseConfig.getTemplates().hasTemplateNamed(template); }
@Override public PipelineTemplateConfig getTemplateByName(CaseInsensitiveString pipeline) { PipelineTemplateConfig template = getTemplates().templateByName(pipeline); if (template == null) { throw bomb(String.format("Template %s was not found.", pipeline)); } return template; }
@Override public boolean canViewAndEditTemplates(CaseInsensitiveString username) { return isAdministrator(username.toString()) || getTemplates().canViewAndEditTemplate(username, rolesForUser(username)); }
@Override public boolean isAuthorizedToViewTemplates(CaseInsensitiveString username) { return canViewAndEditTemplates(username) || getTemplates().canUserViewTemplates(username, rolesForUser(username), isGroupAdministrator(username)); }
@Override public Map<CaseInsensitiveString, Map<CaseInsensitiveString, Authorization>> templatesWithAssociatedPipelines() { if (allTemplatesWithAssociatedPipelines == null) { allTemplatesWithAssociatedPipelines = new AllTemplatesWithAssociatedPipelines(); for (PipelineTemplateConfig templateConfig : getTemplates()) { if (!allTemplatesWithAssociatedPipelines.containsKey(templateConfig.name())) { allTemplatesWithAssociatedPipelines.put(templateConfig.name(), new HashMap<>()); } } for (PipelineConfigs pipelineConfigs : getGroups()) { List<PipelineConfig> pipelines = pipelineConfigs.getPipelines(); for (PipelineConfig pipeline : pipelines) { if (pipeline.hasTemplate()) { Map<CaseInsensitiveString, Authorization> authorizationMap = allTemplatesWithAssociatedPipelines.get(pipeline.getTemplateName()); authorizationMap.put(pipeline.getName(), pipelineConfigs.getAuthorization()); } } } } return allTemplatesWithAssociatedPipelines; }
@Test public void shouldNotCloneAllTemplatesWithAssociatedPipelines() { PipelineTemplateConfig template = PipelineTemplateConfigMother.createTemplate("template-1"); BasicCruiseConfig config = GoConfigMother.defaultCruiseConfig(); config.addTemplate(template); config.addPipelineWithoutValidation("g1", PipelineConfigMother.pipelineConfigWithTemplate("p1", template.name().toString())); //to prime cache config.templatesWithAssociatedPipelines(); //change state config.findGroup("g1").remove(0); config.getTemplates().removeTemplateNamed(template.name()); BasicCruiseConfig cloned = new GoConfigCloner().deepClone(config); assertThat(ReflectionUtil.getField(config, "allTemplatesWithAssociatedPipelines"), is(not((nullValue())))); assertThat(ReflectionUtil.getField(cloned, "allTemplatesWithAssociatedPipelines"), is(nullValue())); assertThat(cloned.templatesWithAssociatedPipelines().size(), is(0)); }