1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-14 11:03:09 +02:00
sap-jenkins-library/test/groovy/com/sap/piper/MtaUtilsTest.groovy
Marcus Holl 8a019f5b86 Remove read yaml rule from common rules
read yaml rule is a very frequently used rule. But having the rule in the common rules
means we cannot register text or files to that rule, which makes it less handy to work
with yaml files in the tests.
2018-08-31 10:22:46 +02:00

230 lines
7.2 KiB
Groovy

package com.sap.piper
import org.junit.Before
import org.junit.ClassRule
import org.junit.Rule
import org.junit.Test
import org.junit.rules.ExpectedException
import org.junit.rules.RuleChain
import org.junit.rules.TemporaryFolder
import org.yaml.snakeyaml.Yaml
import groovy.json.JsonSlurper
import hudson.AbortException
import util.BasePiperTest
import util.JenkinsReadYamlRule
import util.Rules
class MtaUtilsTest extends BasePiperTest {
private static srcPackageJson = 'test/resources/MtaUtils/package.json'
private static mtaTemplate = 'resources/template_mta.yml'
private static data
private static String generatedFile
private static String targetMtaDescriptor
private File badJson
private mtaUtils
private ExpectedException thrown= ExpectedException.none();
@ClassRule
public static TemporaryFolder tmp = new TemporaryFolder()
@Rule
public RuleChain ruleChain = Rules
.getCommonRules(this)
.around(new JenkinsReadYamlRule(this))
.around(thrown)
@Before
void init() {
targetMtaDescriptor = "${tmp.getRoot()}/generated_mta.yml"
def script = new Object()
mtaUtils = new MtaUtils(script)
prepareObjectInterceptors(script)
this.helper.registerAllowedMethod('readJSON', [Map], { Map parameters ->
return new JsonSlurper().parse(new File(parameters.file))
})
this.helper.registerAllowedMethod('libraryResource', [Map], { Map parameters ->
new Yaml().load(new File(mtaTemplate).text)
})
this.helper.registerAllowedMethod('readYaml', [], {
return new Yaml().load(new FileReader(mtaTemplate))
})
this.helper.registerAllowedMethod('writeYaml', [Map], { Map parameters ->
generatedFile = parameters.file
data = parameters.data
})
this.helper.registerAllowedMethod('fileExists', [String.class], { true })
}
@Test
void testStraightForward(){
mtaUtils.generateMtaDescriptorFromPackageJson(srcPackageJson, targetMtaDescriptor, 'testAppName')
assert data.ID == 'com.mycompany.northwind'
assert data.version == '1.0.3'
assert data.modules.name[0] == 'testAppName'
assert data.modules.parameters.version[0] == '1.0.3-${timestamp}'
}
@Test
void testSrcPackageJsonEmpty() {
thrown.expect(IllegalArgumentException)
thrown.expectMessage("The parameter 'srcPackageJson' can not be null or empty.")
mtaUtils.generateMtaDescriptorFromPackageJson('', targetMtaDescriptor, 'testApplicationName')
}
@Test
void testSrcPackageJsonNull() {
thrown.expect(IllegalArgumentException)
thrown.expectMessage("The parameter 'srcPackageJson' can not be null or empty.")
mtaUtils.generateMtaDescriptorFromPackageJson(null, targetMtaDescriptor, 'testApplicationName')
}
@Test
void testTargetMtaDescriptorEmpty() {
thrown.expect(IllegalArgumentException)
thrown.expectMessage("The parameter 'targetMtaDescriptor' can not be null or empty.")
mtaUtils.generateMtaDescriptorFromPackageJson(srcPackageJson, '', 'testApplicationName')
}
@Test
void testTargetMtaDescriptorNull() {
thrown.expect(IllegalArgumentException)
thrown.expectMessage("The parameter 'targetMtaDescriptor' can not be null or empty.")
mtaUtils.generateMtaDescriptorFromPackageJson(srcPackageJson, null, 'testApplicationName')
}
@Test
void testApplicationNameEmpty() {
thrown.expect(IllegalArgumentException)
thrown.expectMessage("The parameter 'applicationName' can not be null or empty.")
mtaUtils.generateMtaDescriptorFromPackageJson(srcPackageJson, targetMtaDescriptor, '')
}
@Test
void testApplicationNameNull() {
thrown.expect(IllegalArgumentException)
thrown.expectMessage("The parameter 'applicationName' can not be null or empty.")
mtaUtils.generateMtaDescriptorFromPackageJson(srcPackageJson, targetMtaDescriptor, null)
}
@Test
void testMissingNameInJson() {
badJson = tmp.newFile('missingName.json')
badJson.text = missingNameInJson()
badJson.dump()
thrown.expect(AbortException)
thrown.expectMessage("'name' not set in the given package.json.")
mtaUtils.generateMtaDescriptorFromPackageJson(badJson.absolutePath, targetMtaDescriptor, 'testApplicationName')
}
@Test
void testEmptyNameInJson() {
badJson = tmp.newFile('emptyName.json')
badJson.text = emptyNameInJson()
badJson.dump()
thrown.expect(AbortException)
thrown.expectMessage("'name' not set in the given package.json.")
mtaUtils.generateMtaDescriptorFromPackageJson(badJson.absolutePath, targetMtaDescriptor, 'testApplicationName')
}
@Test
void testMissingVersionInJson() {
badJson = tmp.newFile('missingVersion.json')
badJson.text = missingVersionInJson()
badJson.dump()
thrown.expect(AbortException)
thrown.expectMessage("'version' not set in the given package.json.")
mtaUtils.generateMtaDescriptorFromPackageJson(badJson.absolutePath, targetMtaDescriptor, 'testApplicationName')
}
@Test
void testEmptyVersionInJson() {
badJson = tmp.newFile('emptyVersion.json')
badJson.text = emptyVersionInJson()
badJson.dump()
thrown.expect(AbortException)
thrown.expectMessage("'version' not set in the given package.json.")
mtaUtils.generateMtaDescriptorFromPackageJson(badJson.absolutePath, targetMtaDescriptor, 'testApplicationName')
}
@Test
void testFileGenerated() {
mtaUtils.generateMtaDescriptorFromPackageJson(srcPackageJson, targetMtaDescriptor, 'testApplicationName')
assert generatedFile.equals(targetMtaDescriptor)
}
private missingNameInJson() {
return '''
{
"version": "1.0.3",
"description": "Webshop application for test purposes",
"private": true,
"devDependencies": {
"grunt": "1.0.1",
"@sap/grunt-sapui5-bestpractice-build": "^1.3.17"
}
}
'''
}
private emptyNameInJson() {
return '''
{
"name": "",
"version": "1.0.3",
"description": "Webshop application for test purposes",
"private": true,
"devDependencies": {
"grunt": "1.0.1",
"@sap/grunt-sapui5-bestpractice-build": "^1.3.17"
}
}
'''
}
private missingVersionInJson() {
return '''
{
"name": "com.mycompany.northwind",
"description": "Webshop application for test purposes",
"private": true,
"devDependencies": {
"grunt": "1.0.1",
"@sap/grunt-sapui5-bestpractice-build": "^1.3.17"
}
}
'''
}
private emptyVersionInJson() {
return '''
{
"name": "com.mycompany.northwind",
"version": "",
"description": "Webshop application for test purposes",
"private": true,
"devDependencies": {
"grunt": "1.0.1",
"@sap/grunt-sapui5-bestpractice-build": "^1.3.17"
}
}
'''
}
}