mirror of
https://github.com/SAP/jenkins-library.git
synced 2025-01-18 05:18:24 +02:00
Improve coverage
This commit is contained in:
parent
99f853e207
commit
7dba1dadc9
@ -47,40 +47,6 @@ class WhitesourceRepository implements Serializable {
|
||||
return fetchedVulnerabilities
|
||||
}
|
||||
|
||||
List fetchLibraries(whitesourceProjectsMetaInformation) {
|
||||
def fetchedLibraries = []
|
||||
if (config.projectNames) {
|
||||
for (int i = 0; i < whitesourceProjectsMetaInformation.size(); i++) {
|
||||
def metaInfo = whitesourceProjectsMetaInformation[i]
|
||||
def requestBody = [
|
||||
requestType : "getProjectLicenses",
|
||||
projectToken: metaInfo.token
|
||||
]
|
||||
|
||||
def response = fetchWhitesourceResource(requestBody)
|
||||
fetchedLibraries.addAll(response.libraries)
|
||||
}
|
||||
} else {
|
||||
def requestBody = [
|
||||
requestType : "getProductLicenses",
|
||||
productToken: config.productToken
|
||||
]
|
||||
|
||||
def response = fetchWhitesourceResource(requestBody)
|
||||
fetchedLibraries.addAll(response.libraries)
|
||||
}
|
||||
|
||||
sortLibrariesAlphabeticallyGAV(fetchedLibraries)
|
||||
|
||||
return listUniqueEntries(fetchedLibraries)
|
||||
}
|
||||
|
||||
@NonCPS
|
||||
def listUniqueEntries(Collection list) {
|
||||
return list.unique()
|
||||
}
|
||||
|
||||
|
||||
protected def fetchWhitesourceResource(Map requestBody) {
|
||||
final def response = httpWhitesource(requestBody)
|
||||
def parsedResponse = new JsonUtils().parseJsonSerializable(response.content)
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.sap.piper.integration
|
||||
|
||||
import com.lesfurets.jenkins.unit.PipelineTestHelper
|
||||
import org.codehaus.groovy.runtime.InvokerHelper
|
||||
import hudson.AbortException
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
@ -9,23 +8,28 @@ import org.junit.Test
|
||||
import org.junit.rules.RuleChain
|
||||
import util.BasePiperTest
|
||||
import util.JenkinsEnvironmentRule
|
||||
import util.JenkinsErrorRule
|
||||
import util.JenkinsLoggingRule
|
||||
import util.LibraryLoadingTestExecutionListener
|
||||
import util.Rules
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat
|
||||
import static org.hamcrest.Matchers.containsString
|
||||
import static org.hamcrest.Matchers.is
|
||||
import static org.hamcrest.Matchers.isA
|
||||
|
||||
class WhitesourceOrgAdminRepositoryTest extends BasePiperTest {
|
||||
|
||||
private JenkinsLoggingRule jlr = new JenkinsLoggingRule(this)
|
||||
private JenkinsEnvironmentRule jer = new JenkinsEnvironmentRule(this)
|
||||
private JenkinsErrorRule thrown = new JenkinsErrorRule(this)
|
||||
private JenkinsLoggingRule loggingRule = new JenkinsLoggingRule(this)
|
||||
private JenkinsEnvironmentRule environmentRule = new JenkinsEnvironmentRule(this)
|
||||
|
||||
@Rule
|
||||
public RuleChain ruleChain = Rules
|
||||
.getCommonRules(this)
|
||||
.around(jlr)
|
||||
.around(jer)
|
||||
.around(thrown)
|
||||
.around(loggingRule)
|
||||
.around(environmentRule)
|
||||
|
||||
WhitesourceOrgAdminRepository repository
|
||||
|
||||
@ -96,4 +100,169 @@ class WhitesourceOrgAdminRepositoryTest extends BasePiperTest {
|
||||
]
|
||||
))
|
||||
}
|
||||
|
||||
@Test
|
||||
void testHttpWhitesourceInternalCallUserKeyVerboseProxy() {
|
||||
def config = [ serviceUrl: "http://some.host.whitesource.com/api/", verbose: true, orgAdminUserKey: "4711"]
|
||||
nullScript.env['HTTP_PROXY'] = "http://test.sap.com:8080"
|
||||
repository.config.putAll(config)
|
||||
def requestBody = ["someJson" : [ "someObject" : "abcdef" ]]
|
||||
|
||||
def requestParams
|
||||
helper.registerAllowedMethod('httpRequest', [Map], { p ->
|
||||
requestParams = p
|
||||
})
|
||||
|
||||
repository.httpWhitesource(requestBody)
|
||||
|
||||
assertThat(requestParams, is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody,
|
||||
quiet : false,
|
||||
userKey : config.orgAdminUserKey,
|
||||
httpProxy : "http://test.sap.com:8080"
|
||||
]
|
||||
))
|
||||
|
||||
assertThat(loggingRule.log, containsString("Sending http request with parameters"))
|
||||
assertThat(loggingRule.log, containsString("Received response"))
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCreateProduct() {
|
||||
def config = [
|
||||
serviceUrl: "http://some.host.whitesource.com/api/",
|
||||
verbose: false,
|
||||
orgAdminUserKey: "4711",
|
||||
orgToken: "abcd1234",
|
||||
productName: "testProduct",
|
||||
emailAddressesOfInitialProductAdmins: ['some@somewhere.com', 'some2@somewhere.com']
|
||||
]
|
||||
repository.config.putAll(config)
|
||||
def requestBody1 = [
|
||||
requestType: "getOrganizationProductVitals",
|
||||
orgToken: config.orgToken,
|
||||
userKey: "4711"
|
||||
]
|
||||
|
||||
def requestBody2 = [
|
||||
"requestType" : "setProductAssignments",
|
||||
"productToken" : "54785",
|
||||
"productMembership" : ["userAssignments":[], "groupAssignments":[]],
|
||||
"productAdmins" : ["userAssignments":[[ "email": "some@somewhere.com" ], ["email": "some2@somewhere.com"]]],
|
||||
"alertsEmailReceivers" : ["userAssignments":[]],
|
||||
"userKey": "4711"
|
||||
]
|
||||
|
||||
def requestParams = []
|
||||
helper.registerAllowedMethod('httpRequest', [Map], { p ->
|
||||
requestParams.add(p)
|
||||
return [ content : "{ \"productToken\" : \"54785\" }" ]
|
||||
})
|
||||
|
||||
repository.createProduct()
|
||||
|
||||
assertThat(requestParams[0], is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody1,
|
||||
quiet : false,
|
||||
userKey : config.orgAdminUserKey,
|
||||
httpProxy : "http://test.sap.com:8080"
|
||||
]
|
||||
))
|
||||
|
||||
assertThat(requestParams[1], is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody2,
|
||||
quiet : false,
|
||||
userKey : config.orgAdminUserKey,
|
||||
httpProxy : "http://test.sap.com:8080"
|
||||
]
|
||||
))
|
||||
}
|
||||
|
||||
@Test
|
||||
void testIssueHttpRequestError() {
|
||||
def config = [ serviceUrl: "http://some.host.whitesource.com/api/", verbose: false, orgAdminUserKey: "4711"]
|
||||
repository.config.putAll(config)
|
||||
def requestBody = ["someJson" : [ "someObject" : "abcdef" ]]
|
||||
|
||||
def requestParams
|
||||
helper.registerAllowedMethod('httpRequest', [Map], { p ->
|
||||
requestParams = p
|
||||
return [content: "{ \"error\" : \"4546\", \"errorMessage\" : \"some text\" } }"]
|
||||
})
|
||||
|
||||
def errorCaught = false
|
||||
try {
|
||||
repository.issueHttpRequest(requestBody)
|
||||
} catch (e) {
|
||||
errorCaught = true
|
||||
assertThat(e, isA(AbortException.class))
|
||||
assertThat(e.getMessage(), equals("[WhiteSource] Request failed with error message 'some text' (4546)."))
|
||||
}
|
||||
assertThat(errorCaught, is(true))
|
||||
|
||||
assertThat(requestParams, is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody,
|
||||
quiet : true,
|
||||
userKey : config.orgAdminUserKey
|
||||
]
|
||||
))
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFetchProductMetaInfo() {
|
||||
def config = [ serviceUrl: "http://some.host.whitesource.com/api/", verbose: true, orgAdminUserKey: "4711", orgToken: "12345", productName: "testProduct"]
|
||||
nullScript.env['HTTP_PROXY'] = "http://test.sap.com:8080"
|
||||
repository.config.putAll(config)
|
||||
|
||||
def requestBody = [
|
||||
requestType: "getOrganizationProductVitals",
|
||||
orgToken: config.orgToken,
|
||||
userKey: "4711"
|
||||
]
|
||||
|
||||
def requestParams
|
||||
helper.registerAllowedMethod('httpRequest', [Map], { p ->
|
||||
requestParams = p
|
||||
return [ content: "{ \"productVitals\" : [ { \"name\": \"testProduct\"} ] }"]
|
||||
})
|
||||
|
||||
def result = repository.fetchProductMetaInfo()
|
||||
|
||||
assertThat(requestParams, is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody,
|
||||
quiet : false,
|
||||
userKey : config.orgAdminUserKey,
|
||||
httpProxy : "http://test.sap.com:8080"
|
||||
]
|
||||
))
|
||||
|
||||
assertThat(result, is([ name: "testProduct"]))
|
||||
assertThat(loggingRule.log, containsString("Sending http request with parameters"))
|
||||
assertThat(loggingRule.log, containsString("Received response"))
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,8 @@ import util.LibraryLoadingTestExecutionListener
|
||||
import util.Rules
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat
|
||||
import static org.hamcrest.Matchers.containsString
|
||||
import static org.hamcrest.Matchers.containsString
|
||||
import static org.hamcrest.Matchers.is
|
||||
import static org.hamcrest.Matchers.isA
|
||||
|
||||
@ -49,8 +51,6 @@ class WhitesourceRepositoryTest extends BasePiperTest {
|
||||
|
||||
@Test
|
||||
void testResolveProjectsMeta() {
|
||||
|
||||
|
||||
def whitesourceMetaResponse = [
|
||||
projectVitals: [
|
||||
[
|
||||
@ -341,4 +341,199 @@ curl -o test.file -X POST http://some.host.whitesource.com/api/ -H 'Content-Type
|
||||
}'''
|
||||
))
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFetchProductLicenseAlerts() {
|
||||
def config = [ serviceUrl: "http://some.host.whitesource.com/api/", userKey: "4711", productToken: "8547"]
|
||||
nullScript.env['HTTP_PROXY'] = "http://test.sap.com:8080"
|
||||
repository.config.putAll(config)
|
||||
|
||||
def requestBody = [
|
||||
requestType: "getProductAlertsByType",
|
||||
alertType: "REJECTED_BY_POLICY_RESOURCE",
|
||||
productToken: config.productToken
|
||||
]
|
||||
|
||||
def requestParams
|
||||
helper.registerAllowedMethod('httpRequest', [Map], { p ->
|
||||
requestParams = p
|
||||
return [ content: "{ \"alerts\" : [] }"]
|
||||
})
|
||||
|
||||
repository.fetchProductLicenseAlerts()
|
||||
|
||||
assertThat(requestParams, is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody,
|
||||
quiet : false,
|
||||
userKey : config.userKey,
|
||||
httpProxy : "http://test.sap.com:8080"
|
||||
]
|
||||
))
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFetchProjectLicenseAlerts() {
|
||||
def projectToken = "8547"
|
||||
def config = [ serviceUrl: "http://some.host.whitesource.com/api/", userKey: "4711"]
|
||||
nullScript.env['HTTP_PROXY'] = "http://test.sap.com:8080"
|
||||
repository.config.putAll(config)
|
||||
|
||||
def requestBody = [
|
||||
requestType: "getProjectAlertsByType",
|
||||
alertType: "REJECTED_BY_POLICY_RESOURCE",
|
||||
projectToken: projectToken
|
||||
]
|
||||
|
||||
def requestParams
|
||||
helper.registerAllowedMethod('httpRequest', [Map], { p ->
|
||||
requestParams = p
|
||||
return [ content: "{ \"alerts\" : [] }"]
|
||||
})
|
||||
|
||||
repository.fetchProjectLicenseAlerts(projectToken)
|
||||
|
||||
assertThat(requestParams, is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody,
|
||||
quiet : false,
|
||||
userKey : config.userKey,
|
||||
httpProxy : "http://test.sap.com:8080"
|
||||
]
|
||||
))
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFetchProdjectsMetaInfo() {
|
||||
def config = [ serviceUrl: "http://some.host.whitesource.com/api/", userKey: "4711", productToken: '8475', projectNames: ['testProject1', 'testProject2']]
|
||||
nullScript.env['HTTP_PROXY'] = "http://test.sap.com:8080"
|
||||
repository.config.putAll(config)
|
||||
|
||||
def requestBody = [
|
||||
requestType: "getProductProjectVitals",
|
||||
productToken: config.productToken
|
||||
]
|
||||
|
||||
def requestParams
|
||||
helper.registerAllowedMethod('httpRequest', [Map], { p ->
|
||||
requestParams = p
|
||||
return [ content: "{ \"projectVitals\" : [ { \"name\": \"testProject1\"}, { \"name\": \"testProject2\"} ] }"]
|
||||
})
|
||||
|
||||
def result = repository.fetchProjectsMetaInfo()
|
||||
|
||||
assertThat(requestParams, is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody,
|
||||
quiet : false,
|
||||
userKey : config.userKey,
|
||||
httpProxy : "http://test.sap.com:8080"
|
||||
]
|
||||
))
|
||||
|
||||
assertThat(result, is([[ name: "testProduct1"], [ name: "testProduct2"]]))
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFetchVulnerabilitiesOnProjects() {
|
||||
def config = [ serviceUrl: "http://some.host.whitesource.com/api/", userKey: "4711", productToken: '8475', projectNames: ['testProject1', 'testProject2']]
|
||||
nullScript.env['HTTP_PROXY'] = "http://test.sap.com:8080"
|
||||
repository.config.putAll(config)
|
||||
|
||||
def requestBody1 = [
|
||||
requestType : "getProjectAlertsByType",
|
||||
alertType : "SECURITY_VULNERABILITY",
|
||||
projectToken: "1234"
|
||||
]
|
||||
|
||||
def requestBody2 = [
|
||||
requestType : "getProjectAlertsByType",
|
||||
alertType : "SECURITY_VULNERABILITY",
|
||||
projectToken: "2345"
|
||||
]
|
||||
|
||||
def requestParams = []
|
||||
helper.registerAllowedMethod('httpRequest', [Map], { p ->
|
||||
requestParams.add(p)
|
||||
return [ content: "{ \"alerts\" : [ { \"vulnerability\" : { \"cvss3_score\" : \"7\"} } ] }"]
|
||||
})
|
||||
|
||||
def result = repository.fetchVulnerabilities([ [name: "testProject1", token: "1234"], [name: "testProject2", token: "2345"] ])
|
||||
|
||||
assertThat(requestParams[0], is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody1,
|
||||
quiet : false,
|
||||
userKey : config.userKey,
|
||||
httpProxy : "http://test.sap.com:8080"
|
||||
]
|
||||
))
|
||||
|
||||
assertThat(requestParams[1], is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody2,
|
||||
quiet : false,
|
||||
userKey : config.userKey,
|
||||
httpProxy : "http://test.sap.com:8080"
|
||||
]
|
||||
))
|
||||
|
||||
assertThat(result.size(), is(2))
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFetchVulnerabilitiesOnProduct() {
|
||||
def config = [ serviceUrl: "http://some.host.whitesource.com/api/", userKey: "4711", productToken: '8475', productName : 'testProduct']
|
||||
nullScript.env['HTTP_PROXY'] = "http://test.sap.com:8080"
|
||||
repository.config.putAll(config)
|
||||
|
||||
def requestBody = [
|
||||
requestType : "getProductAlertsByType",
|
||||
alertType : "SECURITY_VULNERABILITY",
|
||||
productToken: config.productToken,
|
||||
]
|
||||
|
||||
def requestParams = []
|
||||
helper.registerAllowedMethod('httpRequest', [Map], { p ->
|
||||
requestParams.add(p)
|
||||
return [ content: "{ \"alerts\" : [ { \"vulnerability\" : { \"cvss3_score\" : \"7\"} } ] }"]
|
||||
})
|
||||
|
||||
def result = repository.fetchVulnerabilities([ [name: "testProject1", token: "1234"], [name: "testProject2", token: "2345"] ])
|
||||
|
||||
assertThat(requestParams[0], is(
|
||||
[
|
||||
url : config.serviceUrl,
|
||||
httpMode : 'POST',
|
||||
acceptType : 'APPLICATION_JSON',
|
||||
contentType: 'APPLICATION_JSON',
|
||||
requestBody: requestBody,
|
||||
quiet : false,
|
||||
userKey : config.userKey,
|
||||
httpProxy : "http://test.sap.com:8080"
|
||||
]
|
||||
))
|
||||
|
||||
assertThat(result.size(), is(1))
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user