2019-03-04 15:08:10 +02:00
package com . sap . piper
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.rules.RuleChain
import util.BasePiperTest
2019-03-15 14:32:02 +02:00
import util.JenkinsLoggingRule
2019-03-04 15:08:10 +02:00
import util.JenkinsReadFileRule
import util.JenkinsWriteFileRule
import util.Rules
2019-03-05 14:59:27 +02:00
import static org . hamcrest . Matchers . containsString
2019-03-15 14:11:34 +02:00
import static org . hamcrest . Matchers . hasItem
2019-03-15 14:32:02 +02:00
import static org . hamcrest . Matchers . not
2019-03-29 14:58:41 +02:00
import static org . hamcrest . Matchers . allOf
2019-03-04 15:08:10 +02:00
import static org . junit . Assert . assertThat
2019-03-22 15:41:10 +02:00
class WhitesourceConfigurationHelperTest extends BasePiperTest {
2019-03-04 15:08:10 +02:00
JenkinsReadFileRule jrfr = new JenkinsReadFileRule ( this , 'test/resources/utilsTest/' )
JenkinsWriteFileRule jwfr = new JenkinsWriteFileRule ( this )
2019-03-15 14:32:02 +02:00
JenkinsLoggingRule jlr = new JenkinsLoggingRule ( this )
2019-03-04 15:08:10 +02:00
@Rule
public RuleChain ruleChain = Rules
. getCommonRules ( this )
. around ( jrfr )
. around ( jwfr )
2019-03-15 14:32:02 +02:00
. around ( jlr )
2019-03-04 15:08:10 +02:00
@Before
void init ( ) {
2019-03-22 15:41:10 +02:00
def p = new Properties ( )
p . put ( "log.level" , "debug" )
helper . registerAllowedMethod ( 'readProperties' , [ Map ] , { return p } )
}
@Test
void testExtendConfigurationFileUnifiedAgentEmptyConfig ( ) {
2019-03-04 15:08:10 +02:00
helper . registerAllowedMethod ( 'readProperties' , [ Map ] , { return new Properties ( ) } )
2019-03-22 15:41:10 +02:00
WhitesourceConfigurationHelper . extendUAConfigurationFile ( nullScript , utils , [ scanType: 'none' , whitesource: [ configFilePath: './config' , serviceUrl: "http://some.host.whitesource.com/api/" , orgToken: 'abcd' , productName: 'DIST - name1' , productToken: '1234' , userKey: '0000' ] ] , "./" )
2019-03-29 14:58:41 +02:00
assertThat ( jwfr . files [ './config.847f9aec2f93de9000d5fa4e6eaace2283ae6377' ] ,
allOf (
not ( containsString ( "log.level=debug" ) ) ,
containsString ( "apiKey=abcd" ) ,
containsString ( "productName=DIST - name1" ) ,
containsString ( "productToken=1234" ) ,
containsString ( "userKey=0000" )
)
)
2019-03-22 15:41:10 +02:00
assertThat ( jlr . log , containsString ( "[Whitesource] Configuration for scanType: 'none' is not yet hardened, please do a quality assessment of your scan results." ) )
}
@Test
void testExtendConfigurationFileUnifiedAgentConfigDeeper ( ) {
helper . registerAllowedMethod ( 'readProperties' , [ Map ] , { m - > if ( ! m . file . contains ( 'testModule' ) ) return new Properties ( ) else return null } )
WhitesourceConfigurationHelper . extendUAConfigurationFile ( nullScript , utils , [ scanType: 'none' , whitesource: [ configFilePath: './config' , serviceUrl: "http://some.host.whitesource.com/api/" , orgToken: 'abcd' , productName: 'DIST - name1' , productToken: '1234' , userKey: '0000' ] ] , "./testModule/" )
2019-05-03 17:33:52 +02:00
assertThat ( jwfr . files [ './testModule/config.13954509c7675edfce373138f51c68464d1abcac' ] ,
2019-03-29 14:58:41 +02:00
allOf (
not ( containsString ( "log.level=debug" ) ) ,
containsString ( "apiKey=abcd" ) ,
containsString ( "productName=DIST - name1" ) ,
containsString ( "productToken=1234" ) ,
containsString ( "userKey=0000" )
)
)
2019-03-22 15:41:10 +02:00
assertThat ( jlr . log , containsString ( "[Whitesource] Configuration for scanType: 'none' is not yet hardened, please do a quality assessment of your scan results." ) )
2019-03-04 15:08:10 +02:00
}
2019-03-15 14:11:34 +02:00
@Test
void testExtendConfigurationFileUnifiedAgentMaven ( ) {
WhitesourceConfigurationHelper . extendUAConfigurationFile ( nullScript , utils , [ scanType: 'none' , whitesource: [ configFilePath: './config' , serviceUrl: "http://some.host.whitesource.com/api/" , orgToken: 'abcd' , productName: 'DIST - name1' , productToken: '1234' , userKey: '0000' ] ] , "./" )
2019-03-29 14:58:41 +02:00
assertThat ( jwfr . files [ './config.847f9aec2f93de9000d5fa4e6eaace2283ae6377' ] ,
allOf (
containsString ( "apiKey=abcd" ) ,
containsString ( "productName=DIST - name1" ) ,
containsString ( "productToken=1234" ) ,
containsString ( "userKey=0000" )
)
)
2019-03-15 14:32:02 +02:00
assertThat ( jlr . log , containsString ( "[Whitesource] Configuration for scanType: 'none' is not yet hardened, please do a quality assessment of your scan results." ) )
2019-03-15 14:11:34 +02:00
}
@Test
void testExtendConfigurationFileUnifiedAgentNpm ( ) {
WhitesourceConfigurationHelper . extendUAConfigurationFile ( nullScript , utils , [ scanType: 'npm' , whitesource: [ configFilePath: './config' , serviceUrl: "http://some.host.whitesource.com/api/" , orgToken: 'abcd' , productName: 'DIST - name1' , productToken: '1234' , userKey: '0000' ] ] , "./" )
2019-03-29 14:58:41 +02:00
assertThat ( jwfr . files [ './config.847f9aec2f93de9000d5fa4e6eaace2283ae6377' ] ,
allOf (
containsString ( "apiKey=abcd" ) ,
containsString ( "productName=DIST - name1" ) ,
containsString ( "productToken=1234" ) ,
containsString ( "userKey=0000" )
)
)
2019-03-15 14:32:02 +02:00
assertThat ( jlr . log , containsString ( "[Whitesource] Configuration for scanType: 'npm' is not yet hardened, please do a quality assessment of your scan results." ) )
2019-03-15 14:11:34 +02:00
}
@Test
void testExtendConfigurationFileUnifiedAgentSbt ( ) {
WhitesourceConfigurationHelper . extendUAConfigurationFile ( nullScript , utils , [ scanType: 'sbt' , whitesource: [ configFilePath: './config' , serviceUrl: "http://some.host.whitesource.com/api/" , orgToken: 'abcd' , productName: 'DIST - name1' , productToken: '1234' , userKey: '0000' ] ] , "./" )
2019-03-29 14:58:41 +02:00
assertThat ( jwfr . files [ './config.847f9aec2f93de9000d5fa4e6eaace2283ae6377' ] ,
allOf (
containsString ( "apiKey=abcd" ) ,
containsString ( "productName=DIST - name1" ) ,
containsString ( "productToken=1234" ) ,
2019-04-04 21:20:25 +02:00
containsString ( "userKey=0000" ) ,
containsString ( "sbt.resolveDependencies=true" ) ,
containsString ( "log.level=debug" )
2019-03-29 14:58:41 +02:00
)
)
2019-03-15 14:11:34 +02:00
}
@Test
2019-07-03 11:27:07 +02:00
void testExtendConfigurationFileUnifiedAgentDub ( ) {
WhitesourceConfigurationHelper . extendUAConfigurationFile ( nullScript , utils , [ scanType: 'dub' , whitesource: [ configFilePath: './config' , serviceUrl: "http://some.host.whitesource.com/api/" , orgToken: 'abcd' , productName: 'DIST - name1' , productToken: '1234' , userKey: '0000' ] ] , "./" )
2019-03-29 14:58:41 +02:00
assertThat ( jwfr . files [ './config.847f9aec2f93de9000d5fa4e6eaace2283ae6377' ] ,
allOf (
containsString ( "apiKey=abcd" ) ,
containsString ( "productName=DIST - name1" ) ,
containsString ( "productToken=1234" ) ,
2019-07-03 12:20:03 +02:00
containsString ( "userKey=0000" ) ,
containsString ( "includes=**/*.d **/*.di" )
2019-03-29 14:58:41 +02:00
)
)
2019-03-15 14:11:34 +02:00
}
2019-03-04 15:08:10 +02:00
@Test
2019-03-05 14:59:27 +02:00
void testExtendConfigurationFileUnifiedAgentPip ( ) {
2019-03-15 14:11:34 +02:00
WhitesourceConfigurationHelper . extendUAConfigurationFile ( nullScript , utils , [ scanType: 'pip' , whitesource: [ configFilePath: './config' , serviceUrl: "http://some.host.whitesource.com/api/" , orgToken: 'abcd' , productName: 'DIST - name1' , productToken: '1234' , userKey: '0000' ] ] , "./" )
2019-03-29 14:58:41 +02:00
assertThat ( jwfr . files [ './config.847f9aec2f93de9000d5fa4e6eaace2283ae6377' ] ,
allOf (
containsString ( "apiKey=abcd" ) ,
containsString ( "productName=DIST - name1" ) ,
containsString ( "productToken=1234" ) ,
containsString ( "userKey=0000" ) ,
containsString ( "python.resolveDependencies=true" )
)
)
2019-03-15 14:32:02 +02:00
assertThat ( jlr . log , not ( containsString ( "[Whitesource] Configuration for scanType: 'pip' is not yet hardened, please do a quality assessment of your scan results." ) ) )
2019-03-04 15:08:10 +02:00
}
@Test
2019-03-22 12:55:50 +02:00
void testExtendConfigurationFileUnifiedAgentGolangVerbose ( ) {
2019-03-15 14:11:34 +02:00
def config = [ scanType: 'golang' , whitesource: [ configFilePath: './config' , serviceUrl: "http://some.host.whitesource.com/api/" , orgToken: 'abcd' , productName: 'SHC - name2' , productToken: '1234' , userKey: '0000' ] , stashContent: [ 'some' , 'stashes' ] , verbose: true ]
WhitesourceConfigurationHelper . extendUAConfigurationFile ( nullScript , utils , config , "./" )
2019-03-29 14:58:41 +02:00
assertThat ( jwfr . files [ './config.847f9aec2f93de9000d5fa4e6eaace2283ae6377' ] ,
allOf (
containsString ( "apiKey=abcd" ) ,
containsString ( "productName=SHC - name2" ) ,
containsString ( "productToken=1234" ) ,
containsString ( "userKey=0000" ) ,
containsString ( "go.resolveDependencies=true" ) ,
containsString ( "log.level=debug" )
)
)
2019-03-15 14:11:34 +02:00
assertThat ( config . stashContent , hasItem ( containsString ( 'modified whitesource config ' ) ) )
2019-03-15 14:32:02 +02:00
assertThat ( jlr . log , not ( containsString ( "[Warning][Whitesource] Configuration for scanType: 'golang' is not yet hardened, please do a quality assessment of your scan results." ) ) )
2019-03-04 15:08:10 +02:00
}
2019-03-14 16:14:09 +02:00
@Test
void testExtendConfigurationFileUnifiedAgentEnforcement ( ) {
def p = new Properties ( )
p . putAll ( [ 'python.resolveDependencies' : 'false' , 'python.ignoreSourceFiles' : 'false' , 'python.ignorePipInstallErrors' : 'true' , 'python.installVirtualenv' : 'false' ] )
helper . registerAllowedMethod ( 'readProperties' , [ Map ] , { return p } )
2019-03-22 15:41:10 +02:00
WhitesourceConfigurationHelper . extendUAConfigurationFile ( nullScript , utils , [ scanType: 'pip' , whitesource: [ configFilePath: './config' , serviceUrl: "http://some.host.whitesource.com/api/" , orgToken: 'cdfg' , productName: 'name' , productToken: '1234' , userKey: '0000' ] , verbose: true ] , "./" )
2019-03-29 14:58:41 +02:00
assertThat ( jwfr . files [ './config.847f9aec2f93de9000d5fa4e6eaace2283ae6377' ] ,
allOf (
containsString ( "apiKey=cdfg" ) ,
containsString ( "productName=name" ) ,
containsString ( "productToken=1234" ) ,
containsString ( "userKey=0000" ) ,
containsString ( "python.resolveDependencies=true" ) ,
containsString ( "log.level=debug" ) ,
containsString ( "python.resolveDependencies=true" ) ,
containsString ( "python.ignoreSourceFiles=true" ) ,
containsString ( "python.ignorePipInstallErrors=true" ) ,
containsString ( "python.installVirtualenv=false" )
)
)
2019-03-14 16:14:09 +02:00
}
2019-03-04 15:08:10 +02:00
}