mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-14 11:03:09 +02:00
fd568c9174
* do not swallow exception triggered inside SWA handling --> write it to the log The real change is in src/com/sap/piper/Utils.groovy All the changes in the tests are dealing with mocking the echo method used in the Utils class mentioned above.
96 lines
3.5 KiB
Groovy
96 lines
3.5 KiB
Groovy
import org.junit.After
|
|
import org.junit.Before
|
|
import org.junit.Rule
|
|
import org.junit.Test
|
|
import org.junit.rules.RuleChain
|
|
import util.BasePiperTest
|
|
import util.JenkinsLoggingRule
|
|
import util.JenkinsReadYamlRule
|
|
import util.JenkinsStepRule
|
|
import util.Rules
|
|
import com.sap.piper.Utils
|
|
|
|
import static org.junit.Assert.*
|
|
|
|
class SlackSendNotificationTest extends BasePiperTest {
|
|
def slackCallMap = [:]
|
|
|
|
private JenkinsLoggingRule loggingRule = new JenkinsLoggingRule(this)
|
|
private JenkinsStepRule stepRule = new JenkinsStepRule(this)
|
|
|
|
@Rule
|
|
public RuleChain ruleChain = Rules
|
|
.getCommonRules(this)
|
|
.around(new JenkinsReadYamlRule(this))
|
|
.around(loggingRule)
|
|
.around(stepRule)
|
|
|
|
@Before
|
|
void init() throws Exception {
|
|
helper.registerAllowedMethod("slackSend", [Map.class], {m -> slackCallMap = m})
|
|
Utils.metaClass.echo = { def m -> }
|
|
}
|
|
|
|
@After
|
|
public void tearDown() {
|
|
Utils.metaClass = null
|
|
}
|
|
|
|
@Test
|
|
void testNotificationBuildSuccessDefaultChannel() throws Exception {
|
|
stepRule.step.slackSendNotification(script: [currentBuild: [result: 'SUCCESS']])
|
|
// asserts
|
|
assertEquals('Message not set correctly', 'SUCCESS: Job p <http://build.url|#1>', slackCallMap.message.toString())
|
|
assertNull('Channel not set correctly', slackCallMap.channel)
|
|
assertEquals('Color not set correctly', '#008000', slackCallMap.color)
|
|
assertJobStatusSuccess()
|
|
}
|
|
|
|
@Test
|
|
void testNotificationBuildSuccessCustomChannel() throws Exception {
|
|
stepRule.step.slackSendNotification(script: [currentBuild: [result: 'SUCCCESS']], channel: 'Test')
|
|
// asserts
|
|
assertEquals('Channel not set correctly', 'Test', slackCallMap.channel)
|
|
assertJobStatusSuccess()
|
|
}
|
|
|
|
@Test
|
|
void testNotificationBuildFailed() throws Exception {
|
|
stepRule.step.slackSendNotification(script: [currentBuild: [result: 'FAILURE']])
|
|
// asserts
|
|
assertEquals('Message not set correctly', 'FAILURE: Job p <http://build.url|#1>', slackCallMap.message.toString())
|
|
assertEquals('Color not set correctly', '#E60000', slackCallMap.color)
|
|
}
|
|
|
|
@Test
|
|
void testNotificationBuildStatusNull() throws Exception {
|
|
stepRule.step.slackSendNotification(script: [currentBuild: [:]])
|
|
// asserts
|
|
assertTrue('Missing build status not detected', loggingRule.log.contains('currentBuild.result is not set. Skipping Slack notification'))
|
|
assertJobStatusSuccess()
|
|
}
|
|
|
|
@Test
|
|
void testNotificationCustomMessageAndColor() throws Exception {
|
|
stepRule.step.slackSendNotification(script: [currentBuild: [:]], message: 'Custom Message', color: '#AAAAAA')
|
|
// asserts
|
|
assertEquals('Custom message not set correctly', 'Custom Message', slackCallMap.message.toString())
|
|
assertEquals('Custom color not set correctly', '#AAAAAA', slackCallMap.color)
|
|
assertJobStatusSuccess()
|
|
}
|
|
|
|
@Test
|
|
void testNotificationWithCustomCredentials() throws Exception {
|
|
stepRule.step.slackSendNotification(
|
|
script: [currentBuild: [:]],
|
|
message: 'I am no Message',
|
|
baseUrl: 'https://my.base.url',
|
|
credentialsId: 'MY_TOKEN_ID'
|
|
)
|
|
// asserts
|
|
assertEquals('Custom base url not set correctly', 'https://my.base.url', slackCallMap.baseUrl)
|
|
assertEquals('Custom token id not set correctly', 'MY_TOKEN_ID', slackCallMap.tokenCredentialId)
|
|
assertJobStatusSuccess()
|
|
}
|
|
}
|