github.com/jaylevin/jenkins-library@v1.230.4/cmd/npmExecuteScripts_test.go (about) 1 package cmd 2 3 import ( 4 "testing" 5 6 "github.com/SAP/jenkins-library/pkg/mock" 7 "github.com/SAP/jenkins-library/pkg/npm" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 // NpmMockUtilsBundle for mocking 12 type NpmMockUtilsBundle struct { 13 *mock.FilesMock 14 execRunner *mock.ExecMockRunner 15 } 16 17 // GetExecRunner return the execRunner mock 18 func (u *NpmMockUtilsBundle) GetExecRunner() npm.ExecRunner { 19 return u.execRunner 20 } 21 22 // newNpmMockUtilsBundle creates an instance of NpmMockUtilsBundle 23 func newNpmMockUtilsBundle() NpmMockUtilsBundle { 24 utils := NpmMockUtilsBundle{FilesMock: &mock.FilesMock{}, execRunner: &mock.ExecMockRunner{}} 25 return utils 26 } 27 28 func TestNpmExecuteScripts(t *testing.T) { 29 cpe := npmExecuteScriptsCommonPipelineEnvironment{} 30 31 t.Run("Call with packagesList", func(t *testing.T) { 32 config := npmExecuteScriptsOptions{Install: true, RunScripts: []string{"ci-build", "ci-test"}, BuildDescriptorList: []string{"package.json", "src/package.json"}} 33 utils := npm.NewNpmMockUtilsBundle() 34 utils.AddFile("package.json", []byte("{\"name\": \"Test\" }")) 35 utils.AddFile("src/package.json", []byte("{\"name\": \"Test\" }")) 36 37 npmExecutor := npm.NpmExecutorMock{Utils: utils, Config: npm.NpmConfig{Install: config.Install, RunScripts: config.RunScripts, PackagesList: config.BuildDescriptorList}} 38 err := runNpmExecuteScripts(&npmExecutor, &config, &cpe) 39 40 assert.NoError(t, err) 41 }) 42 43 t.Run("Call with excludeList", func(t *testing.T) { 44 config := npmExecuteScriptsOptions{Install: true, RunScripts: []string{"ci-build", "ci-test"}, BuildDescriptorExcludeList: []string{"**/path/**"}} 45 utils := npm.NewNpmMockUtilsBundle() 46 utils.AddFile("package.json", []byte("{\"name\": \"Test\" }")) 47 utils.AddFile("src/package.json", []byte("{\"name\": \"Test\" }")) 48 49 npmExecutor := npm.NpmExecutorMock{Utils: utils, Config: npm.NpmConfig{Install: config.Install, RunScripts: config.RunScripts, ExcludeList: config.BuildDescriptorExcludeList}} 50 err := runNpmExecuteScripts(&npmExecutor, &config, &cpe) 51 52 assert.NoError(t, err) 53 }) 54 55 t.Run("Call with scriptOptions", func(t *testing.T) { 56 config := npmExecuteScriptsOptions{Install: true, RunScripts: []string{"ci-build", "ci-test"}, ScriptOptions: []string{"--run"}} 57 utils := npm.NewNpmMockUtilsBundle() 58 utils.AddFile("package.json", []byte("{\"name\": \"Test\" }")) 59 utils.AddFile("src/package.json", []byte("{\"name\": \"Test\" }")) 60 61 npmExecutor := npm.NpmExecutorMock{Utils: utils, Config: npm.NpmConfig{Install: config.Install, RunScripts: config.RunScripts, ScriptOptions: config.ScriptOptions}} 62 err := runNpmExecuteScripts(&npmExecutor, &config, &cpe) 63 64 assert.NoError(t, err) 65 }) 66 67 t.Run("Call with install", func(t *testing.T) { 68 config := npmExecuteScriptsOptions{Install: true, RunScripts: []string{"ci-build", "ci-test"}} 69 utils := npm.NewNpmMockUtilsBundle() 70 utils.AddFile("package.json", []byte("{\"name\": \"Test\" }")) 71 utils.AddFile("src/package.json", []byte("{\"name\": \"Test\" }")) 72 73 npmExecutor := npm.NpmExecutorMock{Utils: utils, Config: npm.NpmConfig{Install: config.Install, RunScripts: config.RunScripts}} 74 err := runNpmExecuteScripts(&npmExecutor, &config, &cpe) 75 76 assert.NoError(t, err) 77 }) 78 79 t.Run("Call without install", func(t *testing.T) { 80 config := npmExecuteScriptsOptions{Install: true, RunScripts: []string{"ci-build", "ci-test"}} 81 utils := npm.NewNpmMockUtilsBundle() 82 utils.AddFile("package.json", []byte("{\"name\": \"Test\" }")) 83 utils.AddFile("src/package.json", []byte("{\"name\": \"Test\" }")) 84 85 npmExecutor := npm.NpmExecutorMock{Utils: utils, Config: npm.NpmConfig{Install: config.Install, RunScripts: config.RunScripts}} 86 err := runNpmExecuteScripts(&npmExecutor, &config, &cpe) 87 88 assert.NoError(t, err) 89 }) 90 91 t.Run("Call with virtualFrameBuffer", func(t *testing.T) { 92 config := npmExecuteScriptsOptions{Install: true, RunScripts: []string{"ci-build", "ci-test"}, VirtualFrameBuffer: true} 93 utils := npm.NewNpmMockUtilsBundle() 94 utils.AddFile("package.json", []byte("{\"name\": \"Test\" }")) 95 utils.AddFile("src/package.json", []byte("{\"name\": \"Test\" }")) 96 97 npmExecutor := npm.NpmExecutorMock{Utils: utils, Config: npm.NpmConfig{Install: config.Install, RunScripts: config.RunScripts, VirtualFrameBuffer: config.VirtualFrameBuffer}} 98 err := runNpmExecuteScripts(&npmExecutor, &config, &cpe) 99 100 assert.NoError(t, err) 101 }) 102 103 t.Run("Test integration with npm pkg", func(t *testing.T) { 104 config := npmExecuteScriptsOptions{Install: true, RunScripts: []string{"ci-build"}} 105 106 options := npm.ExecutorOptions{DefaultNpmRegistry: config.DefaultNpmRegistry} 107 108 utils := newNpmMockUtilsBundle() 109 utils.AddFile("package.json", []byte("{\"scripts\": { \"ci-build\": \"\" } }")) 110 utils.AddFile("package-lock.json", []byte("")) 111 112 npmExecutor := npm.Execute{Utils: &utils, Options: options} 113 114 err := runNpmExecuteScripts(&npmExecutor, &config, &cpe) 115 116 if assert.NoError(t, err) { 117 if assert.Equal(t, 4, len(utils.execRunner.Calls)) { 118 assert.Equal(t, mock.ExecCall{Exec: "npm", Params: []string{"config", "get", "registry"}}, utils.execRunner.Calls[0]) 119 assert.Equal(t, mock.ExecCall{Exec: "npm", Params: []string{"ci"}}, utils.execRunner.Calls[1]) 120 assert.Equal(t, mock.ExecCall{Exec: "npm", Params: []string{"run", "ci-build"}}, utils.execRunner.Calls[3]) 121 } 122 } 123 }) 124 125 t.Run("Call with createBOM", func(t *testing.T) { 126 config := npmExecuteScriptsOptions{CreateBOM: true, RunScripts: []string{"ci-build", "ci-test"}} 127 128 options := npm.ExecutorOptions{DefaultNpmRegistry: config.DefaultNpmRegistry} 129 130 utils := newNpmMockUtilsBundle() 131 utils.AddFile("package.json", []byte("{\"name\": \"Test\" }")) 132 utils.AddFile("src/package.json", []byte("{\"name\": \"Test\" }")) 133 134 npmExecutor := npm.Execute{Utils: &utils, Options: options} 135 err := runNpmExecuteScripts(&npmExecutor, &config, &cpe) 136 137 assert.NoError(t, err) 138 }) 139 }