github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/whitesource/scanMTA_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package whitesource 5 6 import ( 7 "testing" 8 9 "github.com/SAP/jenkins-library/pkg/mock" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestExecuteScanMTA(t *testing.T) { 15 const pomXML = `<?xml version="1.0" encoding="UTF-8"?> 16 <project xmlns="http://maven.apache.org/POM/4.0.0" 17 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 18 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 19 <modelVersion>4.0.0</modelVersion> 20 <artifactId>my-artifact-id</artifactId> 21 <packaging>jar</packaging> 22 </project> 23 ` 24 config := ScanOptions{ 25 ScanType: "mta", 26 OrgToken: "org-token", 27 UserToken: "user-token", 28 ProductName: "mock-product", 29 ProductVersion: "product-version", 30 ProjectName: "mock-project", 31 } 32 33 t.Parallel() 34 t.Run("happy path MTA", func(t *testing.T) { 35 // init 36 utilsMock := NewScanUtilsMock() 37 utilsMock.AddFile("pom.xml", []byte(pomXML)) 38 utilsMock.AddFile("package.json", []byte(`{"name":"my-module-name"}`)) 39 scan := newTestScan(&config) 40 // test 41 err := scan.ExecuteMTAScan(&config, utilsMock) 42 // assert 43 require.NoError(t, err) 44 expectedCalls := []mock.ExecCall{ 45 { 46 Exec: "mvn", 47 Params: []string{ 48 "--file", 49 "pom.xml", 50 "-Dorg.whitesource.orgToken=org-token", 51 "-Dorg.whitesource.product=mock-product", 52 "-Dorg.whitesource.checkPolicies=true", 53 "-Dorg.whitesource.failOnError=true", 54 "-Dorg.whitesource.forceUpdate=true", 55 "-Dorg.whitesource.aggregateProjectName=mock-project", 56 "-Dorg.whitesource.aggregateModules=true", 57 "-Dorg.whitesource.userKey=user-token", 58 "-Dorg.whitesource.productVersion=product-version", 59 "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", 60 "--batch-mode", 61 "org.whitesource:whitesource-maven-plugin:19.5.1:update", 62 }, 63 }, 64 { 65 Exec: "npm", 66 Params: []string{ 67 "ls", 68 }, 69 }, 70 { 71 Exec: "npx", 72 Params: []string{ 73 "whitesource", 74 "run", 75 }, 76 }, 77 } 78 assert.Equal(t, expectedCalls, utilsMock.Calls) 79 assert.True(t, utilsMock.HasWrittenFile(whiteSourceConfig)) 80 assert.True(t, utilsMock.HasRemovedFile(whiteSourceConfig)) 81 assert.Equal(t, expectedCalls, utilsMock.Calls) 82 }) 83 t.Run("MTA with only maven modules", func(t *testing.T) { 84 // init 85 utilsMock := NewScanUtilsMock() 86 utilsMock.AddFile("pom.xml", []byte(pomXML)) 87 scan := newTestScan(&config) 88 // test 89 err := scan.ExecuteMTAScan(&config, utilsMock) 90 // assert 91 require.NoError(t, err) 92 expectedCalls := []mock.ExecCall{ 93 { 94 Exec: "mvn", 95 Params: []string{ 96 "--file", 97 "pom.xml", 98 "-Dorg.whitesource.orgToken=org-token", 99 "-Dorg.whitesource.product=mock-product", 100 "-Dorg.whitesource.checkPolicies=true", 101 "-Dorg.whitesource.failOnError=true", 102 "-Dorg.whitesource.forceUpdate=true", 103 "-Dorg.whitesource.aggregateProjectName=mock-project", 104 "-Dorg.whitesource.aggregateModules=true", 105 "-Dorg.whitesource.userKey=user-token", 106 "-Dorg.whitesource.productVersion=product-version", 107 "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", 108 "--batch-mode", 109 "org.whitesource:whitesource-maven-plugin:19.5.1:update", 110 }, 111 }, 112 } 113 assert.Equal(t, expectedCalls, utilsMock.Calls) 114 assert.False(t, utilsMock.HasWrittenFile(whiteSourceConfig)) 115 assert.Equal(t, expectedCalls, utilsMock.Calls) 116 }) 117 t.Run("MTA with only NPM modules", func(t *testing.T) { 118 // init 119 utilsMock := NewScanUtilsMock() 120 utilsMock.AddFile("package.json", []byte(`{"name":"my-module-name"}`)) 121 scan := newTestScan(&config) 122 // test 123 err := scan.ExecuteMTAScan(&config, utilsMock) 124 // assert 125 require.NoError(t, err) 126 expectedCalls := []mock.ExecCall{ 127 { 128 Exec: "npm", 129 Params: []string{ 130 "ls", 131 }, 132 }, 133 { 134 Exec: "npx", 135 Params: []string{ 136 "whitesource", 137 "run", 138 }, 139 }, 140 } 141 assert.Equal(t, expectedCalls, utilsMock.Calls) 142 assert.True(t, utilsMock.HasWrittenFile(whiteSourceConfig)) 143 assert.True(t, utilsMock.HasRemovedFile(whiteSourceConfig)) 144 assert.Equal(t, expectedCalls, utilsMock.Calls) 145 }) 146 t.Run("MTA with neither Maven nor NPM modules results in error", func(t *testing.T) { 147 // init 148 utilsMock := NewScanUtilsMock() 149 scan := newTestScan(&config) 150 // test 151 err := scan.ExecuteMTAScan(&config, utilsMock) 152 // assert 153 assert.EqualError(t, err, "neither Maven nor NPM modules found, no scan performed") 154 }) 155 }