mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-12 10:55:20 +02:00
41ed285afa
* checkChangeInDevelopment to GO - add groovy step isChangeInDevelopment - direct to new Groovy - direct to GO
215 lines
7.2 KiB
Groovy
215 lines
7.2 KiB
Groovy
import static org.hamcrest.Matchers.*
|
|
import static org.junit.Assert.assertThat
|
|
|
|
import org.junit.Before
|
|
import org.junit.After
|
|
import org.junit.Rule
|
|
import org.junit.Test
|
|
import org.junit.rules.ExpectedException
|
|
import org.junit.rules.RuleChain
|
|
|
|
import com.sap.piper.cm.BackendType
|
|
import com.sap.piper.cm.ChangeManagement
|
|
import com.sap.piper.cm.ChangeManagementException
|
|
import com.sap.piper.Utils
|
|
|
|
import hudson.AbortException
|
|
import util.BasePiperTest
|
|
import util.JenkinsCredentialsRule
|
|
import util.JenkinsLoggingRule
|
|
import util.JenkinsReadYamlRule
|
|
import util.JenkinsStepRule
|
|
import util.Rules
|
|
|
|
class CheckChangeInDevelopmentTest extends BasePiperTest {
|
|
|
|
private ExpectedException thrown = ExpectedException.none()
|
|
private JenkinsStepRule stepRule = new JenkinsStepRule(this)
|
|
private JenkinsLoggingRule loggingRule = new JenkinsLoggingRule(this)
|
|
|
|
@Rule
|
|
public RuleChain ruleChain = Rules
|
|
.getCommonRules(this)
|
|
.around(new JenkinsReadYamlRule(this))
|
|
.around(thrown)
|
|
.around(stepRule)
|
|
.around(loggingRule)
|
|
.around(new JenkinsCredentialsRule(this)
|
|
.withCredentials('CM', 'anonymous', '********'))
|
|
|
|
@Before
|
|
public void setup() {
|
|
Utils.metaClass.echo = { def m -> }
|
|
|
|
nullScript.commonPipelineEnvironment.configuration = [general:
|
|
[changeManagement:
|
|
[
|
|
credentialsId: 'CM',
|
|
type: 'SOLMAN',
|
|
endpoint: 'https://example.org/cm'
|
|
]
|
|
]
|
|
]
|
|
helper.registerAllowedMethod('addBadge', [Map], {return})
|
|
helper.registerAllowedMethod('createSummary', [Map], {return})
|
|
}
|
|
|
|
@After
|
|
public void tearDown() {
|
|
cmUtilReceivedParams.clear()
|
|
Utils.metaClass = null
|
|
}
|
|
|
|
private Map cmUtilReceivedParams = [:]
|
|
|
|
@Test
|
|
public void changeIsInStatusDevelopmentTest() {
|
|
|
|
def calledWithParameters,
|
|
calledWithStepName
|
|
|
|
helper.registerAllowedMethod('piperExecuteBin', [Map, String, String, List], {
|
|
params, stepName, metaData, creds ->
|
|
if(stepName.equals("isChangeInDevelopment")) {
|
|
nullScript.commonPipelineEnvironment.setValue('isChangeInDevelopment', true)
|
|
}
|
|
})
|
|
|
|
stepRule.step.checkChangeInDevelopment(
|
|
script: nullScript,
|
|
changeDocumentId: '001',
|
|
failIfStatusIsNotInDevelopment: true)
|
|
|
|
assertThat(nullScript.commonPipelineEnvironment.getValue('isChangeInDevelopment'), is(true))
|
|
|
|
// no exception in thrown, so the change is in status 'in development'.
|
|
}
|
|
|
|
@Test
|
|
public void changeIsNotInStatusDevelopmentTest() {
|
|
|
|
thrown.expect(AbortException)
|
|
thrown.expectMessage("Change '001' is not in status 'in development'")
|
|
|
|
def calledWithParameters,
|
|
calledWithStepName
|
|
|
|
helper.registerAllowedMethod('piperExecuteBin', [Map, String, String, List], {
|
|
params, stepName, metaData, creds ->
|
|
if(stepName.equals("isChangeInDevelopment")) {
|
|
nullScript.commonPipelineEnvironment.setValue('isChangeInDevelopment', false)
|
|
}
|
|
})
|
|
|
|
stepRule.step.checkChangeInDevelopment(
|
|
script: nullScript,
|
|
changeDocumentId: '001',
|
|
failIfStatusIsNotInDevelopment: true)
|
|
}
|
|
|
|
@Test
|
|
public void changeIsNotInStatusDevelopmentButWeWouldLikeToSkipFailureTest() {
|
|
|
|
def calledWithParameters,
|
|
calledWithStepName
|
|
|
|
helper.registerAllowedMethod('piperExecuteBin', [Map, String, String, List], {
|
|
params, stepName, metaData, creds ->
|
|
if(stepName.equals("isChangeInDevelopment")) {
|
|
nullScript.commonPipelineEnvironment.setValue('isChangeInDevelopment', false)
|
|
}
|
|
})
|
|
|
|
stepRule.step.checkChangeInDevelopment(
|
|
script: nullScript,
|
|
changeDocumentId: '001',
|
|
failIfStatusIsNotInDevelopment: false)
|
|
|
|
assertThat(nullScript.commonPipelineEnvironment.getValue('isChangeInDevelopment'), is(false))
|
|
}
|
|
|
|
@Test
|
|
public void nullChangeDocumentIdTest() {
|
|
|
|
thrown.expect(IllegalArgumentException)
|
|
thrown.expectMessage("No changeDocumentId provided. Neither via parameter 'changeDocumentId' nor via " +
|
|
"label 'ChangeDocument\\s?:' in commit range [from: origin/master, to: HEAD].")
|
|
|
|
def calledWithParameters,
|
|
calledWithStepName
|
|
|
|
helper.registerAllowedMethod('piperExecuteBin', [Map, String, String, List], {
|
|
params, stepName, metaData, creds ->
|
|
if(stepName.equals("transportRequestDocIDFromGit")) {
|
|
calledWithParameters = params
|
|
}
|
|
})
|
|
|
|
stepRule.step.checkChangeInDevelopment(
|
|
script: nullScript)
|
|
|
|
assertThat(calledWithParameters,is(not(null)))
|
|
}
|
|
|
|
@Test
|
|
public void emptyChangeDocumentIdTest() {
|
|
|
|
thrown.expect(IllegalArgumentException)
|
|
thrown.expectMessage("No changeDocumentId provided. Neither via parameter 'changeDocumentId' " +
|
|
"nor via label 'ChangeDocument\\s?:' in commit range " +
|
|
"[from: origin/master, to: HEAD].")
|
|
|
|
def calledWithParameters,
|
|
calledWithStepName
|
|
|
|
helper.registerAllowedMethod('piperExecuteBin', [Map, String, String, List], {
|
|
params, stepName, metaData, creds ->
|
|
if(stepName.equals("transportRequestDocIDFromGit")) {
|
|
calledWithParameters = params
|
|
nullScript.commonPipelineEnvironment.setValue('changeDocumentId', '')
|
|
}
|
|
})
|
|
|
|
stepRule.step.checkChangeInDevelopment(
|
|
script: nullScript)
|
|
|
|
assertThat(calledWithParameters,is(not(null)))
|
|
}
|
|
|
|
@Test
|
|
public void cmIntegrationSwichtedOffTest() {
|
|
|
|
loggingRule.expect('[INFO] Change management integration intentionally switched off.')
|
|
|
|
stepRule.step.checkChangeInDevelopment(
|
|
script: nullScript,
|
|
changeManagement: [type: 'NONE'])
|
|
|
|
}
|
|
|
|
@Test
|
|
public void stageConfigIsNotConsideredWithParamKeysTest() {
|
|
|
|
nullScript.commonPipelineEnvironment.configuration.stages = [foo:[changeDocumentId:'12345']]
|
|
|
|
thrown.expect(IllegalArgumentException)
|
|
thrown.expectMessage('No changeDocumentId provided.')
|
|
|
|
def calledWithParameters,
|
|
calledWithStepName
|
|
|
|
helper.registerAllowedMethod('piperExecuteBin', [Map, String, String, List], {
|
|
params, stepName, metaData, creds ->
|
|
if(stepName.equals("transportRequestDocIDFromGit")) {
|
|
calledWithParameters = params
|
|
}
|
|
})
|
|
|
|
stepRule.step.checkChangeInDevelopment(
|
|
script: nullScript,
|
|
stageName: 'foo')
|
|
|
|
assertThat(calledWithParameters,is(not(null)))
|
|
}
|
|
}
|