diff --git a/pom.xml b/pom.xml index 6eaabd2..856b680 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ org.jenkins-ci.plugins plugin - 3.28 + 3.29 @@ -56,6 +56,7 @@ 2.60.3 8 + 1.3 @@ -75,7 +76,20 @@ org.jenkins-ci.plugins credentials - 2.1.5 + 2.1.16 + + + + io.jenkins + configuration-as-code + ${configuration-as-code-plugin.version} + test + + + io.jenkins.configuration-as-code + configuration-as-code-support + ${configuration-as-code-plugin.version} + test diff --git a/src/main/java/org/jenkinsci/plugins/plaincredentials/impl/FileCredentialsImpl.java b/src/main/java/org/jenkinsci/plugins/plaincredentials/impl/FileCredentialsImpl.java index 6c2148c..ccdfa74 100644 --- a/src/main/java/org/jenkinsci/plugins/plaincredentials/impl/FileCredentialsImpl.java +++ b/src/main/java/org/jenkinsci/plugins/plaincredentials/impl/FileCredentialsImpl.java @@ -137,10 +137,10 @@ public FileCredentialsImpl(@CheckForNull CredentialsScope scope, @CheckForNull S */ @DataBoundConstructor public FileCredentialsImpl(@CheckForNull CredentialsScope scope, @CheckForNull String id, - @CheckForNull String description, @Nonnull FileItem file, @CheckForNull String fileName, + @CheckForNull String description, @CheckForNull FileItem file, @CheckForNull String fileName, @CheckForNull SecretBytes secretBytes) throws IOException { super(scope, id, description); - String name = file.getName(); + String name = file != null ? file.getName() : ""; if (name.length() > 0) { this.fileName = name.replaceFirst("^.+[/\\\\]", ""); this.secretBytes = SecretBytes.fromBytes(file.get()); diff --git a/src/test/java/org/jenkinsci/plugins/plaincredentials/ConfigurationAsCodeTest.java b/src/test/java/org/jenkinsci/plugins/plaincredentials/ConfigurationAsCodeTest.java new file mode 100644 index 0000000..677d286 --- /dev/null +++ b/src/test/java/org/jenkinsci/plugins/plaincredentials/ConfigurationAsCodeTest.java @@ -0,0 +1,33 @@ +package org.jenkinsci.plugins.plaincredentials; + +import com.cloudbees.plugins.credentials.CredentialsMatchers; +import com.cloudbees.plugins.credentials.CredentialsProvider; +import com.cloudbees.plugins.credentials.domains.DomainRequirement; +import hudson.security.ACL; +import io.jenkins.plugins.casc.ConfigurationAsCode; +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.jvnet.hudson.test.JenkinsRule; + +/** + * @author Nicolas De Loof + */ +public class ConfigurationAsCodeTest { + + @Rule + public JenkinsRule j = new JenkinsRule(); + + @Test + public void should_configure_file_credentials() throws Exception { + ConfigurationAsCode.get().configure(getClass().getResource("ConfigurationAsCode.yaml").toString()); + final FileCredentials credentials = CredentialsMatchers.firstOrNull( + CredentialsProvider.lookupCredentials(FileCredentials.class, j.jenkins, ACL.SYSTEM, (DomainRequirement) null), + CredentialsMatchers.withId("secret-file")); + Assert.assertNotNull(credentials); + Assert.assertEquals("Some secret file", credentials.getDescription()); + Assert.assertEquals("my-secret-file", credentials.getFileName()); + Assert.assertEquals("FOO_BAR", IOUtils.toString(credentials.getContent())); + } +} diff --git a/src/test/resources/org/jenkinsci/plugins/plaincredentials/ConfigurationAsCode.yaml b/src/test/resources/org/jenkinsci/plugins/plaincredentials/ConfigurationAsCode.yaml new file mode 100644 index 0000000..14eb9b8 --- /dev/null +++ b/src/test/resources/org/jenkinsci/plugins/plaincredentials/ConfigurationAsCode.yaml @@ -0,0 +1,12 @@ +credentials: + system: + domainCredentials: + # global credentials + - credentials: + - file: + id: secret-file + scope: SYSTEM + description: "Some secret file" + fileName: my-secret-file + # FOO_BAR base64 encoded + secretBytes: Rk9PX0JBUg==