1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-14 11:03:09 +02:00

Introduce test for pipeline step checkChangeInDevelopment

This commit is contained in:
Marcus Holl 2018-06-22 13:56:33 +02:00
parent 8eb8f23069
commit cdb26e6b91

View File

@ -0,0 +1,156 @@
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.rules.ExpectedException
import org.junit.rules.RuleChain
import com.sap.piper.GitUtils
import com.sap.piper.cm.ChangeManagement
import com.sap.piper.cm.ChangeManagementException
import hudson.AbortException
import util.BasePiperTest
import util.JenkinsStepRule
import util.Rules
class CheckChangeInDevelopmentTest extends BasePiperTest {
private ExpectedException thrown = ExpectedException.none()
private JenkinsStepRule jsr = new JenkinsStepRule(this)
@Rule
public RuleChain ruleChain = Rules
.getCommonRules(this)
.around(thrown)
.around(jsr)
@Before
public void setup() {
helper.registerAllowedMethod('usernamePassword', [Map], { Map m ->
binding.setProperty('username', 'defaultUser')
binding.setProperty('password', '********')
})
helper.registerAllowedMethod('withCredentials', [List, Closure], { List l, Closure c ->
c()
})
}
@After
public void tearDown() {
cmUtilReceivedParams.clear()
}
private Map cmUtilReceivedParams = [:]
@Test
public void changeIsInStatusDevelopmentTest() {
ChangeManagement cm = getChangeManagementUtils(true)
boolean inDevelopment = jsr.step.checkChangeInDevelopment(
cmUtils: cm,
endpoint: 'https://example.org/cm')
assert inDevelopment
assert cmUtilReceivedParams == [
changeId: '001',
endpoint: 'https://example.org/cm',
userName: 'defaultUser',
password: '********'
]
}
@Test
public void changeIsNotInStatusDevelopmentTest() {
thrown.expect(AbortException)
thrown.expectMessage("Change '001' is not in status 'in development'")
ChangeManagement cm = getChangeManagementUtils(false)
jsr.step.checkChangeInDevelopment(
cmUtils: cm,
endpoint: 'https://example.org/cm')
}
@Test
public void changeIsNotInStatusDevelopmentButWeWouldLikeToSkipFailureTest() {
ChangeManagement cm = getChangeManagementUtils(false)
boolean inDevelopment = jsr.step.checkChangeInDevelopment(
cmUtils: cm,
endpoint: 'https://example.org/cm',
failIfStatusIsNotInDevelopment: false)
assert !inDevelopment
}
@Test
public void changeDocumentIdRetrievalFailsTest() {
thrown.expect(AbortException)
thrown.expectMessage('Something went wrong')
ChangeManagement cm = new ChangeManagement(nullScript, null) {
String getChangeDocumentId(
String filter,
String from,
String to,
String format) {
throw new ChangeManagementException('Something went wrong')
}
}
jsr.step.checkChangeInDevelopment(
cmUtils: cm,
endpoint: 'https://example.org/cm')
}
@Test
public void nullChangeDocumentIdTest() {
thrown.expect(AbortException)
thrown.expectMessage("ChangeId is null or empty.")
ChangeManagement cm = getChangeManagementUtils(false, null)
jsr.step.checkChangeInDevelopment(
cmUtils: cm,
endpoint: 'https://example.org/cm')
}
@Test
public void emptyChangeDocumentIdTest() {
thrown.expect(AbortException)
thrown.expectMessage("ChangeId is null or empty.")
ChangeManagement cm = getChangeManagementUtils(false, '')
jsr.step.checkChangeInDevelopment(
cmUtils: cm,
endpoint: 'https://example.org/cm')
}
private ChangeManagement getChangeManagementUtils(boolean inDevelopment, String changeDocumentId = '001') {
return new ChangeManagement(nullScript, null) {
String getChangeDocumentId(
String filter,
String from,
String to,
String format) {
return changeDocumentId
}
boolean isChangeInDevelopment(String changeId, String endpoint, String userName, String password) {
cmUtilReceivedParams.changeId = changeId
cmUtilReceivedParams.endpoint = endpoint
cmUtilReceivedParams.userName = userName
cmUtilReceivedParams.password = password
return inDevelopment
}
}
}
}