Skip to content

Commit

Permalink
Merge pull request #282 from marcusholl/pr/credentialsRule
Browse files Browse the repository at this point in the history
Tests: make use of JenkinsCredentialsRule
  • Loading branch information
marcusholl committed Sep 21, 2018
2 parents e2e6f5d + 9cd31e7 commit afca9ca
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 44 deletions.
22 changes: 2 additions & 20 deletions test/groovy/CloudFoundryDeployTest.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import org.junit.rules.ExpectedException
import org.junit.rules.RuleChain
import org.yaml.snakeyaml.Yaml
import util.BasePiperTest
import util.JenkinsCredentialsRule
import util.JenkinsEnvironmentRule
import util.JenkinsDockerExecuteRule
import util.JenkinsLoggingRule
Expand Down Expand Up @@ -42,28 +43,9 @@ class CloudFoundryDeployTest extends BasePiperTest {
.around(jwfr)
.around(jedr)
.around(jer)
.around(new JenkinsCredentialsRule(this).withCredentials('test_cfCredentialsId', 'test_cf', '********'))
.around(jsr) // needs to be activated after jedr, otherwise executeDocker is not mocked

@Before
void init() throws Throwable {
helper.registerAllowedMethod('usernamePassword', [Map], { m -> return m })
helper.registerAllowedMethod('withCredentials', [List, Closure], { l, c ->
if(l[0].credentialsId == 'test_cfCredentialsId') {
binding.setProperty('username', 'test_cf')
binding.setProperty('password', '********')
} else if(l[0].credentialsId == 'test_camCredentialsId') {
binding.setProperty('username', 'test_cam')
binding.setProperty('password', '********')
}
try {
c()
} finally {
binding.setProperty('username', null)
binding.setProperty('password', null)
}
})
}

@Test
void testNoTool() throws Exception {
nullScript.commonPipelineEnvironment.configuration = [
Expand Down
27 changes: 7 additions & 20 deletions test/groovy/NeoDeployTest.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ import org.junit.rules.TemporaryFolder
import org.junit.BeforeClass
import org.junit.ClassRule
import org.junit.Ignore

import org.hamcrest.BaseMatcher
import org.hamcrest.Description
import org.jenkinsci.plugins.credentialsbinding.impl.CredentialNotFoundException
import org.junit.Assert
import org.junit.Before
import org.junit.Rule
Expand All @@ -15,6 +17,7 @@ import org.junit.rules.ExpectedException
import org.junit.rules.RuleChain

import util.BasePiperTest
import util.JenkinsCredentialsRule
import util.JenkinsLoggingRule
import util.JenkinsReadYamlRule
import util.JenkinsShellCallRule
Expand All @@ -40,6 +43,9 @@ class NeoDeployTest extends BasePiperTest {
.around(thrown)
.around(jlr)
.around(jscr)
.around(new JenkinsCredentialsRule(this)
.withCredentials('myCredentialsId', 'anonymous', '********')
.withCredentials('CI_CREDENTIALS_ID', 'defaultUser', '********'))
.around(jsr)

private static workspacePath
Expand All @@ -66,24 +72,6 @@ class NeoDeployTest extends BasePiperTest {

helper.registerAllowedMethod('dockerExecute', [Map, Closure], null)
helper.registerAllowedMethod('fileExists', [String], { s -> return new File(workspacePath, s).exists() })
helper.registerAllowedMethod('usernamePassword', [Map], { m -> return m })
helper.registerAllowedMethod('withCredentials', [List, Closure], { l, c ->
if(l[0].credentialsId == 'myCredentialsId') {
binding.setProperty('username', 'anonymous')
binding.setProperty('password', '********')
} else if(l[0].credentialsId == 'CI_CREDENTIALS_ID') {
binding.setProperty('username', 'defaultUser')
binding.setProperty('password', '********')
}
try {
c()
} finally {
binding.setProperty('username', null)
binding.setProperty('password', null)
}

})

helper.registerAllowedMethod('sh', [Map], { Map m -> getVersionWithEnvVars(m) })

nullScript.commonPipelineEnvironment.configuration = [steps:[neoDeploy: [host: 'test.deploy.host.com', account: 'trialuser123']]]
Expand Down Expand Up @@ -179,8 +167,7 @@ class NeoDeployTest extends BasePiperTest {
@Test
void badCredentialsIdTest() {

thrown.expect(MissingPropertyException)
thrown.expectMessage('No such property: username')
thrown.expect(CredentialNotFoundException)

jsr.step.call(script: nullScript,
archivePath: archiveName,
Expand Down
12 changes: 8 additions & 4 deletions test/groovy/util/JenkinsCredentialsRule.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import static org.hamcrest.Matchers.nullValue
import static org.junit.Assert.assertThat;

import org.hamcrest.Matchers
import org.jenkinsci.plugins.credentialsbinding.impl.CredentialNotFoundException

/**
* By default a user "anonymous" with password "********"
Expand Down Expand Up @@ -47,16 +48,19 @@ class JenkinsCredentialsRule implements TestRule {
@Override
void evaluate() throws Throwable {

testInstance.helper.registerAllowedMethod('usernamePassword', [Map.class], {m -> return m})
testInstance.helper.registerAllowedMethod('usernamePassword', [Map.class],
{ m -> if (credentials.keySet().contains(m.credentialsId)) return m;
// this is what really happens in case of an unknown credentials id,
// checked with reality using credentials plugin 2.1.18.
throw new CredentialNotFoundException(
"Could not find credentials entry with ID '${m.credentialsId}'")
})

testInstance.helper.registerAllowedMethod('withCredentials', [List, Closure], { l, c ->

def credsId = l[0].credentialsId
def creds = credentials.get(credsId)

assertThat("Unexpected credentialsId received: '${credsId}'.",
creds, is(not(nullValue())))

binding.setProperty('username', creds?.user)
binding.setProperty('password', creds?.passwd)
try {
Expand Down

0 comments on commit afca9ca

Please sign in to comment.