move all init logic to special rule @ConfiguredWithCode
This commit is contained in:
parent
60c4063f15
commit
c67dddccaf
|
|
@ -3,8 +3,12 @@ package org.jenkinsci.plugins.casc;
|
|||
import hudson.plugins.active_directory.ActiveDirectoryDomain;
|
||||
import hudson.plugins.active_directory.ActiveDirectorySecurityRealm;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExternalResource;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
|
@ -15,16 +19,22 @@ import static org.junit.Assert.assertTrue;
|
|||
*/
|
||||
public class ActiveDirectoryTest {
|
||||
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public RuleChain chain = RuleChain.outerRule(j)
|
||||
.around(new ExternalResource() {
|
||||
@Override
|
||||
protected void before() {
|
||||
System.setProperty("BIND_PASSWORD", "ADMIN123");
|
||||
}
|
||||
})
|
||||
.around(config);
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode(value = "ActiveDirectoryTest.yml")
|
||||
public void configure_active_directory() throws Exception {
|
||||
System.setProperty("BIND_PASSWORD", "ADMIN123");
|
||||
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("ActiveDirectoryTest.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
final ActiveDirectorySecurityRealm realm = (ActiveDirectorySecurityRealm) jenkins.getSecurityRealm();
|
||||
assertEquals(1, realm.domains.size());
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
package org.jenkinsci.plugins.casc;
|
||||
|
||||
import jenkins.model.Jenkins;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
|
@ -17,13 +19,15 @@ import static org.junit.Assert.assertEquals;
|
|||
*/
|
||||
public class AgentProtocolsTest {
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public RuleChain chain = RuleChain.outerRule(j).around(config);
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode(value = "AgentProtocolsTest.yml")
|
||||
public void configure_agent_protocols() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("AgentProtocolsTest.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
final Set<String> agentProtocols =
|
||||
Arrays.stream(new String[]{"JNLP4-connect", "Ping"}).collect(Collectors.toSet());
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package org.jenkinsci.plugins.casc;
|
||||
|
||||
import hudson.model.AbstractDescribableImpl;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
|
@ -9,7 +8,7 @@ import org.kohsuke.stapler.DataBoundConstructor;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
|
||||
|
|
@ -46,4 +45,4 @@ public class DataBoundConfiguratorTest {
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,12 @@ import com.nirima.jenkins.plugins.docker.DockerCloud;
|
|||
import com.nirima.jenkins.plugins.docker.DockerTemplate;
|
||||
import hudson.model.Label;
|
||||
import io.jenkins.docker.connector.DockerComputerAttachConnector;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.jenkinsci.plugins.casc.misc.TestConfiguration;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
|
@ -16,14 +20,15 @@ import static org.junit.Assert.assertNotNull;
|
|||
*/
|
||||
public class DockerCloudTest {
|
||||
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public RuleChain chain = RuleChain.outerRule(j).around(config);
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("DockerCloudTest.yml")
|
||||
public void configure_docker_cloud() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("DockerCloudTest.yml"));
|
||||
|
||||
final DockerCloud docker = DockerCloud.getCloudByName("docker");
|
||||
assertNotNull(docker);
|
||||
assertNotNull(docker.getDockerApi());
|
||||
|
|
@ -34,10 +39,8 @@ public class DockerCloudTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("DockerCloudTest/update_docker_cloud/DockerCloudTest1.yml")
|
||||
public void update_docker_cloud() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream(
|
||||
"DockerCloudTest/update_docker_cloud/DockerCloudTest1.yml"));
|
||||
|
||||
DockerCloud docker = DockerCloud.getCloudByName("docker");
|
||||
assertNotNull(docker);
|
||||
assertNotNull(docker.getDockerApi());
|
||||
|
|
@ -47,8 +50,7 @@ public class DockerCloudTest {
|
|||
DockerTemplate template = docker.getTemplate(Label.get("docker-agent"));
|
||||
checkTemplate(template, "docker-agent", "jenkins", "/home/jenkins/agent", "10");
|
||||
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream(
|
||||
"DockerCloudTest/update_docker_cloud/DockerCloudTest2.yml"));
|
||||
new TestConfiguration("DockerCloudTest/update_docker_cloud/DockerCloudTest2.yml").configure(getClass());
|
||||
|
||||
docker = DockerCloud.getCloudByName("docker");
|
||||
assertNotNull(docker);
|
||||
|
|
@ -65,7 +67,7 @@ public class DockerCloudTest {
|
|||
}
|
||||
|
||||
private void checkTemplate(DockerTemplate template, String labelString, String user, String remoteFs,
|
||||
String instanceCapStr){
|
||||
String instanceCapStr) {
|
||||
assertNotNull(template);
|
||||
assertEquals(labelString, template.getLabelString());
|
||||
assertEquals(user, ((DockerComputerAttachConnector) template.getConnector()).getUser());
|
||||
|
|
|
|||
|
|
@ -2,8 +2,11 @@ package org.jenkinsci.plugins.casc;
|
|||
|
||||
import hudson.plugins.git.GitTool;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
|
@ -13,14 +16,15 @@ import static org.junit.Assert.assertEquals;
|
|||
*/
|
||||
public class GitToolInstallationTest {
|
||||
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public RuleChain chain = RuleChain.outerRule(j).around(config);
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("GitToolInstallationTest.yml")
|
||||
public void configure_git_installations() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("GitToolInstallationTest.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
final GitTool.DescriptorImpl descriptor = (GitTool.DescriptorImpl) jenkins.getDescriptor(GitTool.class);
|
||||
assertEquals(2, descriptor.getInstallations().length);
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
package org.jenkinsci.plugins.casc;
|
||||
|
||||
import com.nirima.jenkins.plugins.docker.DockerCloud;
|
||||
import com.nirima.jenkins.plugins.docker.DockerTemplate;
|
||||
import hudson.model.TopLevelItem;
|
||||
import jenkins.branch.OrganizationFolder;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.jenkinsci.plugins.github_branch_source.GitHubSCMNavigator;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
|
@ -19,15 +19,16 @@ import static org.junit.Assert.assertTrue;
|
|||
*/
|
||||
public class GithubOrganisationFolderTest {
|
||||
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public RuleChain chain = RuleChain.outerRule(j).around(config);
|
||||
|
||||
// @Test
|
||||
// Fails as Items do override submit() with manual data-binding implementation
|
||||
@ConfiguredWithCode("GithubOrganisationFolderTest.yml")
|
||||
public void configure_github_organisation_folder_seed_job() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("GithubOrganisationFolderTest.yml"));
|
||||
|
||||
final TopLevelItem job = Jenkins.getInstance().getItem("ndeloof");
|
||||
assertNotNull(job);
|
||||
assertTrue(job instanceof OrganizationFolder);
|
||||
|
|
|
|||
|
|
@ -1,20 +1,17 @@
|
|||
package org.jenkinsci.plugins.casc;
|
||||
|
||||
import com.nirima.jenkins.plugins.docker.DockerCloud;
|
||||
import com.nirima.jenkins.plugins.docker.DockerTemplate;
|
||||
import io.jenkins.docker.connector.DockerComputerAttachConnector;
|
||||
import jenkins.plugins.git.GitSCMSource;
|
||||
import jenkins.scm.api.SCMSource;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.jenkinsci.plugins.workflow.libs.GlobalLibraries;
|
||||
import org.jenkinsci.plugins.workflow.libs.LibraryConfiguration;
|
||||
import org.jenkinsci.plugins.workflow.libs.LibraryRetriever;
|
||||
import org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
|
||||
|
|
@ -22,13 +19,16 @@ import static org.junit.Assert.assertNotNull;
|
|||
public class GlobalLibrariesTest {
|
||||
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public RuleChain chain = RuleChain.outerRule(j).around(config);
|
||||
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("GlobalLibrariesTest.yml")
|
||||
public void configure_global_library() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("GlobalLibrariesTest.yml"));
|
||||
|
||||
assertEquals(1, GlobalLibraries.get().getLibraries().size());
|
||||
final LibraryConfiguration library = GlobalLibraries.get().getLibraries().get(0);
|
||||
assertEquals("awesome-lib", library.getName());
|
||||
|
|
|
|||
|
|
@ -5,34 +5,43 @@ import hudson.security.FullControlOnceLoggedInAuthorizationStrategy;
|
|||
import hudson.security.HudsonPrivateSecurityRealm;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.hamcrest.CoreMatchers;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.Issue;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
|
||||
*/
|
||||
public class JenkinsConfiguratorTest {
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public RuleChain chain = RuleChain.outerRule(j).around(config);
|
||||
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("Primitives.yml")
|
||||
public void jenkins_primitive_attributes() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("Primitives.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
assertEquals(6666, jenkins.getSlaveAgentPort());
|
||||
assertEquals(false, jenkins.isUsageStatisticsCollected());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("HeteroDescribable.yml")
|
||||
public void jenkins_abstract_describable_attributes() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("HeteroDescribable.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
assertTrue(jenkins.getSecurityRealm() instanceof HudsonPrivateSecurityRealm);
|
||||
assertTrue(jenkins.getAuthorizationStrategy() instanceof FullControlOnceLoggedInAuthorizationStrategy);
|
||||
|
|
|
|||
|
|
@ -2,8 +2,12 @@ package org.jenkinsci.plugins.casc;
|
|||
|
||||
import javaposse.jobdsl.plugin.GlobalJobDslSecurityConfiguration;
|
||||
import jenkins.model.GlobalConfiguration;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExternalResource;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
|
|
@ -14,19 +18,29 @@ import static org.junit.Assert.assertTrue;
|
|||
*/
|
||||
public class JobDslGlobaSecurityConfigurationTest {
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public RuleChain chain = RuleChain.outerRule(j)
|
||||
.around(new ExternalResource() {
|
||||
@Override
|
||||
protected void before() throws Throwable {
|
||||
final GlobalJobDslSecurityConfiguration dslSecurity =
|
||||
GlobalConfiguration.all().get(GlobalJobDslSecurityConfiguration.class);
|
||||
|
||||
dslSecurity.setUseScriptSecurity(true);
|
||||
assertTrue(dslSecurity.isUseScriptSecurity());
|
||||
}
|
||||
})
|
||||
.around(config);
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("JobDslGlobaSecurityConfigurationTest.yml")
|
||||
public void global_dsl_security() throws Exception {
|
||||
final GlobalJobDslSecurityConfiguration dslSecurity =
|
||||
GlobalConfiguration.all().get(GlobalJobDslSecurityConfiguration.class);
|
||||
|
||||
dslSecurity.setUseScriptSecurity(true);
|
||||
assertTrue(dslSecurity.isUseScriptSecurity());
|
||||
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("JobDslGlobaSecurityConfigurationTest.yml"));
|
||||
|
||||
assertFalse(dslSecurity.isUseScriptSecurity());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,15 @@
|
|||
package org.jenkinsci.plugins.casc;
|
||||
|
||||
import hudson.security.LDAPSecurityRealm;
|
||||
import hudson.security.SecurityRealm;
|
||||
import hudson.tasks.Mailer;
|
||||
import jenkins.model.IdStrategy;
|
||||
import jenkins.model.Jenkins;
|
||||
import jenkins.security.plugins.ldap.LDAPConfiguration;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExternalResource;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
|
@ -18,15 +20,22 @@ import static org.junit.Assert.assertTrue;
|
|||
*/
|
||||
public class LDAPSecurityRealmTest {
|
||||
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public RuleChain chain = RuleChain.outerRule(j)
|
||||
.around(new ExternalResource() {
|
||||
@Override
|
||||
protected void before() throws Throwable {
|
||||
System.setProperty("LDAP_PASSWORD", "SECRET");
|
||||
}
|
||||
})
|
||||
.around(config);
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("LDAPSecurityRealmTest.yml")
|
||||
public void configure_securityRealm() throws Exception {
|
||||
System.setProperty("LDAP_PASSWORD", "SECRET");
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("LDAPSecurityRealmTest.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
final LDAPSecurityRealm securityRealm = (LDAPSecurityRealm) jenkins.getSecurityRealm();
|
||||
assertEquals(1, securityRealm.getConfigurations().size());
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
package org.jenkinsci.plugins.casc;
|
||||
|
||||
import hudson.plugins.git.GitTool;
|
||||
import hudson.tasks.Mailer;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
|
@ -14,14 +16,16 @@ import static org.junit.Assert.assertEquals;
|
|||
*/
|
||||
public class MailerTest {
|
||||
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public RuleChain chain = RuleChain.outerRule(j).around(config);
|
||||
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("MailerTest.yml")
|
||||
public void configure_mailer() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("MailerTest.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
final Mailer.DescriptorImpl descriptor = (Mailer.DescriptorImpl) jenkins.getDescriptor(Mailer.class);
|
||||
assertEquals("4441", descriptor.getSmtpPort());
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@ import org.junit.Test;
|
|||
import org.junit.contrib.java.lang.system.EnvironmentVariables;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
|
||||
|
|
@ -55,10 +56,10 @@ public class PrimitiveConfiguratorTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void _string_env() throws Exception {
|
||||
public void _string_env() throws Exception {
|
||||
environment.set("ENV_FOR_TEST", "abc");
|
||||
Configurator c = Configurator.lookup(String.class);
|
||||
final Object value = c.configure("${ENV_FOR_TEST}");
|
||||
assertEquals("abc", value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,9 +2,12 @@ package org.jenkinsci.plugins.casc;
|
|||
|
||||
import hudson.model.TopLevelItem;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
|
@ -15,12 +18,15 @@ import static org.junit.Assert.assertTrue;
|
|||
*/
|
||||
public class SeedJobTest {
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public RuleChain chain = RuleChain.outerRule(j).around(config);
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("SeedJobTest.yml")
|
||||
public void configure_seed_job() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("SeedJobTest.yml"));
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
final TopLevelItem test = jenkins.getItem("configuration-as-code");
|
||||
assertNotNull(test);
|
||||
|
|
|
|||
|
|
@ -4,8 +4,12 @@ import com.cloudbees.plugins.credentials.CredentialsProvider;
|
|||
import com.cloudbees.plugins.credentials.common.CertificateCredentials;
|
||||
import com.cloudbees.plugins.credentials.common.UsernamePasswordCredentials;
|
||||
import hudson.security.ACL;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExternalResource;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import java.util.Collections;
|
||||
|
|
@ -18,23 +22,29 @@ import static org.junit.Assert.assertEquals;
|
|||
*/
|
||||
public class SystemCredentialsTest {
|
||||
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public RuleChain chain = RuleChain.outerRule(j)
|
||||
.around(new ExternalResource() {
|
||||
@Override
|
||||
protected void before() {
|
||||
System.setProperty("SUDO_PASSWORD", "1234");
|
||||
System.setProperty("SSH_KEY_PASSWORD", "ABCD");
|
||||
}
|
||||
})
|
||||
.around(config);
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("SystemCredentialsTest.yml")
|
||||
public void configure_system_credentials() throws Exception {
|
||||
System.setProperty("SUDO_PASSWORD", "1234");
|
||||
System.setProperty("SSH_KEY_PASSWORD", "ABCD");
|
||||
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("SystemCredentialsTest.yml"));
|
||||
|
||||
List<UsernamePasswordCredentials> ups = CredentialsProvider.lookupCredentials(UsernamePasswordCredentials.class, j.jenkins, ACL.SYSTEM, Collections.EMPTY_LIST);
|
||||
List<UsernamePasswordCredentials> ups = CredentialsProvider.lookupCredentials(UsernamePasswordCredentials.class, j.jenkins, ACL.SYSTEM, Collections.emptyList());
|
||||
assertEquals(1, ups.size());
|
||||
final UsernamePasswordCredentials up = ups.get(0);
|
||||
assertEquals("1234", up.getPassword().getPlainText());
|
||||
|
||||
List<CertificateCredentials> certs = CredentialsProvider.lookupCredentials(CertificateCredentials.class, j.jenkins, ACL.SYSTEM, Collections.EMPTY_LIST);
|
||||
List<CertificateCredentials> certs = CredentialsProvider.lookupCredentials(CertificateCredentials.class, j.jenkins, ACL.SYSTEM, Collections.emptyList());
|
||||
assertEquals(1, certs.size());
|
||||
final CertificateCredentials cert = certs.get(0);
|
||||
assertEquals("ABCD", cert.getPassword().getPlainText());
|
||||
|
|
|
|||
|
|
@ -22,9 +22,11 @@ package org.jenkinsci.plugins.casc.core;
|
|||
|
||||
import jenkins.model.Jenkins;
|
||||
import jenkins.security.s2m.AdminWhitelistRule;
|
||||
import org.jenkinsci.plugins.casc.ConfigurationAsCode;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Assert;
|
||||
import org.junit.ClassRule;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.jvnet.hudson.test.For;
|
||||
import org.jvnet.hudson.test.Issue;
|
||||
|
|
@ -36,11 +38,13 @@ public class AdminWhitelistRuleConfiguratorTest {
|
|||
@ClassRule
|
||||
public static JenkinsRule j = new JenkinsRule();
|
||||
|
||||
@Rule
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Test
|
||||
@Issue("Issue #28")
|
||||
@ConfiguredWithCode("AdminWhitelistRuleConfigurator/Slave2MasterSecurityKillSwitch_enabled.yml")
|
||||
public void checkM2SSecurityKillSwitch_enabled() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("AdminWhitelistRuleConfigurator/Slave2MasterSecurityKillSwitch_enabled.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
AdminWhitelistRule rule = jenkins.getInjector().getInstance(AdminWhitelistRule.class);
|
||||
Assert.assertTrue("MasterToSlave Security should be enabled", rule.getMasterKillSwitch());
|
||||
|
|
@ -48,9 +52,8 @@ public class AdminWhitelistRuleConfiguratorTest {
|
|||
|
||||
@Test
|
||||
@Issue("Issue #28")
|
||||
@ConfiguredWithCode("AdminWhitelistRuleConfigurator/Slave2MasterSecurityKillSwitch_disabled.yml")
|
||||
public void checkM2SSecurityKillSwitch_disabled() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("AdminWhitelistRuleConfigurator/Slave2MasterSecurityKillSwitch_disabled.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
AdminWhitelistRule rule = jenkins.getInjector().getInstance(AdminWhitelistRule.class);
|
||||
Assert.assertFalse("MasterToSlave Security should be disabled", rule.getMasterKillSwitch());
|
||||
|
|
|
|||
|
|
@ -1,29 +1,34 @@
|
|||
package org.jenkinsci.plugins.casc.core;
|
||||
|
||||
import hudson.model.User;
|
||||
import hudson.security.AuthorizationStrategy;
|
||||
import hudson.security.FullControlOnceLoggedInAuthorizationStrategy;
|
||||
import hudson.security.HudsonPrivateSecurityRealm;
|
||||
import jenkins.model.Jenkins;
|
||||
import org.jenkinsci.plugins.casc.ConfigurationAsCode;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
|
||||
*/
|
||||
public class HudsonPrivateSecurityRealmConfiguratorTest {
|
||||
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public RuleChain chain = RuleChain.outerRule(j).around(config);
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("HudsonPrivateSecurityRealmConfiguratorTest.yml")
|
||||
public void configure_local_security_and_admin_user() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("HudsonPrivateSecurityRealmConfiguratorTest.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
final HudsonPrivateSecurityRealm securityRealm = (HudsonPrivateSecurityRealm) jenkins.getSecurityRealm();
|
||||
assertFalse(securityRealm.allowsSignup());
|
||||
|
|
|
|||
|
|
@ -1,23 +1,28 @@
|
|||
package org.jenkinsci.plugins.casc.core;
|
||||
|
||||
import hudson.security.AuthorizationStrategy;
|
||||
import org.jenkinsci.plugins.casc.ConfigurationAsCode;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.RuleChain;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertSame;
|
||||
|
||||
/**
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
public class UnsecuredAuthorizationStrategyConfiguratorTest {
|
||||
@Rule
|
||||
public JenkinsRule j = new JenkinsRule();
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Rule
|
||||
public RuleChain chain = RuleChain.outerRule(j).around(config);
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("UnsecuredAuthorizationStrategyConfiguratorTest.yml")
|
||||
public void unsecured() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("UnsecuredAuthorizationStrategyConfiguratorTest.yml"));
|
||||
assertSame(AuthorizationStrategy.UNSECURED, j.jenkins.getAuthorizationStrategy());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,10 @@ import hudson.security.GlobalMatrixAuthorizationStrategy;
|
|||
import jenkins.model.Jenkins;
|
||||
import org.jenkinsci.plugins.casc.ConfigurationAsCode;
|
||||
import org.jenkinsci.plugins.casc.Configurator;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.ClassRule;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
||||
|
|
@ -24,6 +27,9 @@ public class GlobalMatrixAuthorizationTest {
|
|||
@ClassRule
|
||||
public static JenkinsRule j = new JenkinsRule();
|
||||
|
||||
@Rule
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Test
|
||||
public void shouldReturnCustomConfigurator() {
|
||||
Configurator configurator = Configurator.lookup(GlobalMatrixAuthorizationStrategy.class);
|
||||
|
|
@ -40,8 +46,8 @@ public class GlobalMatrixAuthorizationTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
@ConfiguredWithCode("GlobalMatrixStrategy.yml")
|
||||
public void checkCorrectlyConfiguredPermissions() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("GlobalMatrixStrategy.yml"));
|
||||
assertEquals("The configured instance must use the Global Matrix Authentication Strategy", GlobalMatrixAuthorizationStrategy.class, Jenkins.getInstance().getAuthorizationStrategy().getClass());
|
||||
GlobalMatrixAuthorizationStrategy gms = (GlobalMatrixAuthorizationStrategy)Jenkins.getInstance().getAuthorizationStrategy();
|
||||
|
||||
|
|
|
|||
|
|
@ -3,13 +3,12 @@ package org.jenkinsci.plugins.casc.integrations.rolebasedauth;
|
|||
import com.michelin.cio.hudson.plugins.rolestrategy.Role;
|
||||
import com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy;
|
||||
import hudson.security.AuthorizationStrategy;
|
||||
import hudson.security.Permission;
|
||||
import jenkins.model.Jenkins;
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import org.jenkinsci.plugins.casc.ConfigurationAsCode;
|
||||
import org.jenkinsci.plugins.casc.Configurator;
|
||||
import org.jenkinsci.plugins.casc.integrations.rolebasedauth.RoleBasedAuthorizationStrategyConfigurator;
|
||||
import org.jenkinsci.plugins.casc.misc.CodeConfiguratorRunner;
|
||||
import org.jenkinsci.plugins.casc.misc.ConfiguredWithCode;
|
||||
import org.junit.ClassRule;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.jvnet.hudson.test.Issue;
|
||||
import org.jvnet.hudson.test.JenkinsRule;
|
||||
|
|
@ -17,6 +16,8 @@ import org.jvnet.hudson.test.JenkinsRule;
|
|||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
|
@ -30,6 +31,9 @@ public class RoleStrategyTest {
|
|||
@ClassRule
|
||||
public static JenkinsRule j = new JenkinsRule();
|
||||
|
||||
@Rule
|
||||
public CodeConfiguratorRunner config = new CodeConfiguratorRunner();
|
||||
|
||||
@Test
|
||||
public void shouldReturnCustomConfigurator() {
|
||||
Configurator c = Configurator.lookup(RoleBasedAuthorizationStrategy.class);
|
||||
|
|
@ -49,15 +53,14 @@ public class RoleStrategyTest {
|
|||
|
||||
@Test
|
||||
@Issue("Issue #48")
|
||||
@ConfiguredWithCode("RoleStrategy1.yml")
|
||||
public void shouldReadRolesCorrectly() throws Exception {
|
||||
ConfigurationAsCode.configure(getClass().getResourceAsStream("RoleStrategy1.yml"));
|
||||
|
||||
final Jenkins jenkins = Jenkins.getInstance();
|
||||
|
||||
AuthorizationStrategy s = jenkins.getAuthorizationStrategy();
|
||||
assertThat("Authorization Strategy has been read incorrectly",
|
||||
s, instanceOf(RoleBasedAuthorizationStrategy.class));
|
||||
RoleBasedAuthorizationStrategy rbas = (RoleBasedAuthorizationStrategy)s;
|
||||
RoleBasedAuthorizationStrategy rbas = (RoleBasedAuthorizationStrategy) s;
|
||||
|
||||
Map<Role, Set<String>> globalRoles = rbas.getGrantedRoles(RoleBasedAuthorizationStrategy.GLOBAL);
|
||||
assertThat(globalRoles.size(), equalTo(2));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
package org.jenkinsci.plugins.casc.misc;
|
||||
|
||||
import org.junit.rules.TestRule;
|
||||
import org.junit.runner.Description;
|
||||
import org.junit.runners.model.Statement;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Reads value of {@link ConfiguredWithCode} and evaluates config same way as plugin.
|
||||
* Requires Jenkins instance already up and running
|
||||
*
|
||||
* @see ConfiguredWithCode
|
||||
*/
|
||||
public class CodeConfiguratorRunner implements TestRule {
|
||||
@Override
|
||||
public Statement apply(Statement base, Description description) {
|
||||
return new Statement() {
|
||||
@Override
|
||||
public void evaluate() throws Throwable {
|
||||
ConfiguredWithCode configuredWithCode = description.getAnnotation(ConfiguredWithCode.class);
|
||||
|
||||
if (Objects.nonNull(configuredWithCode)) {
|
||||
new TestConfiguration(configuredWithCode.value()).configure(description.getTestClass());
|
||||
}
|
||||
|
||||
base.evaluate();
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package org.jenkinsci.plugins.casc.misc;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import static java.lang.annotation.ElementType.METHOD;
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
/**
|
||||
* To load specified config with plugin
|
||||
*/
|
||||
@Target(METHOD)
|
||||
@Retention(RUNTIME)
|
||||
public @interface ConfiguredWithCode {
|
||||
|
||||
/**
|
||||
* resource path in classpath
|
||||
*/
|
||||
String value();
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
package org.jenkinsci.plugins.casc.misc;
|
||||
|
||||
import org.jenkinsci.plugins.casc.ConfigurationAsCode;
|
||||
import org.yaml.snakeyaml.Yaml;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.util.Map;
|
||||
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
|
||||
/**
|
||||
* Loads resource as configuration-as-code
|
||||
*/
|
||||
public class TestConfiguration {
|
||||
private final String resource;
|
||||
|
||||
public TestConfiguration(String resource) {
|
||||
this.resource = resource;
|
||||
}
|
||||
|
||||
public void configure(Class<?> clazz) {
|
||||
try {
|
||||
ConfigurationAsCode.configure(clazz.getResourceAsStream(resource));
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Can't configure test with " + resource, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue