github.com/xgoffin/jenkins-library@v1.154.0/cmd/integrationArtifactUpload_test.go (about) 1 package cmd 2 3 import ( 4 "path/filepath" 5 "testing" 6 7 "github.com/SAP/jenkins-library/pkg/mock" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 type integrationArtifactUploadMockUtils struct { 12 *mock.ExecMockRunner 13 *mock.FilesMock 14 } 15 16 func newIntegrationArtifactUploadTestsUtils() integrationArtifactUploadMockUtils { 17 utils := integrationArtifactUploadMockUtils{ 18 ExecMockRunner: &mock.ExecMockRunner{}, 19 FilesMock: &mock.FilesMock{}, 20 } 21 return utils 22 } 23 24 func TestRunIntegrationArtifactUpload(t *testing.T) { 25 t.Parallel() 26 27 t.Run("Successfull Integration Flow Create Test", func(t *testing.T) { 28 filesMock := mock.FilesMock{} 29 path := filepath.Join("tempDir", "iflow4.zip") 30 filesMock.AddFile(path, []byte("dummy content")) 31 exists, err := filesMock.FileExists(path) 32 assert.NoError(t, err) 33 assert.True(t, exists) 34 35 apiServiceKey := `{ 36 "oauth": { 37 "url": "https://demo", 38 "clientid": "demouser", 39 "clientsecret": "******", 40 "tokenurl": "https://demo/oauth/token" 41 } 42 }` 43 44 config := integrationArtifactUploadOptions{ 45 APIServiceKey: apiServiceKey, 46 IntegrationFlowName: "flow4", 47 IntegrationFlowID: "flow4", 48 PackageID: "CICD", 49 FilePath: path, 50 } 51 52 httpClient := httpMockCpis{CPIFunction: "", ResponseBody: ``, TestType: "PositiveAndCreateIntegrationDesigntimeArtifactResBody"} 53 54 err = runIntegrationArtifactUpload(&config, nil, &filesMock, &httpClient) 55 56 if assert.NoError(t, err) { 57 58 t.Run("check url", func(t *testing.T) { 59 assert.Equal(t, "https://demo/api/v1/IntegrationDesigntimeArtifacts(Id='flow4',Version='Active')", httpClient.URL) 60 }) 61 62 t.Run("check method", func(t *testing.T) { 63 assert.Equal(t, "PUT", httpClient.Method) 64 }) 65 } 66 }) 67 68 t.Run("Successfull Integration Flow Update Test", func(t *testing.T) { 69 70 files := mock.FilesMock{} 71 path := filepath.Join("tempDir", "iflow4.zip") 72 files.AddFile(path, []byte("dummy content")) 73 exists, err := files.FileExists(path) 74 assert.NoError(t, err) 75 assert.True(t, exists) 76 apiServiceKey := `{ 77 "oauth": { 78 "url": "https://demo", 79 "clientid": "demouser", 80 "clientsecret": "******", 81 "tokenurl": "https://demo/oauth/token" 82 } 83 }` 84 config := integrationArtifactUploadOptions{ 85 APIServiceKey: apiServiceKey, 86 IntegrationFlowName: "flow4", 87 IntegrationFlowID: "flow4", 88 PackageID: "CICD", 89 FilePath: path, 90 } 91 92 httpClient := httpMockCpis{CPIFunction: "", ResponseBody: ``, TestType: "PositiveAndUpdateIntegrationDesigntimeArtifactResBody"} 93 94 err = runIntegrationArtifactUpload(&config, nil, &files, &httpClient) 95 96 if assert.NoError(t, err) { 97 98 t.Run("check url", func(t *testing.T) { 99 assert.Equal(t, "https://demo/api/v1/IntegrationDesigntimeArtifacts", httpClient.URL) 100 }) 101 102 t.Run("check method", func(t *testing.T) { 103 assert.Equal(t, "POST", httpClient.Method) 104 }) 105 } 106 }) 107 108 t.Run("Failed case of Integration Flow Get Test", func(t *testing.T) { 109 110 apiServiceKey := `{ 111 "oauth": { 112 "url": "https://demo", 113 "clientid": "demouser", 114 "clientsecret": "******", 115 "tokenurl": "https://demo/oauth/token" 116 } 117 }` 118 config := integrationArtifactUploadOptions{ 119 APIServiceKey: apiServiceKey, 120 IntegrationFlowName: "flow4", 121 IntegrationFlowID: "flow4", 122 PackageID: "CICD", 123 FilePath: "path", 124 } 125 126 httpClient := httpMockCpis{CPIFunction: "", ResponseBody: ``, TestType: "NegativeAndGetIntegrationDesigntimeArtifactResBody"} 127 128 err := runIntegrationArtifactUpload(&config, nil, nil, &httpClient) 129 assert.Error(t, err) 130 }) 131 132 t.Run("Failed case of Integration Flow Update Test", func(t *testing.T) { 133 files := mock.FilesMock{} 134 path := filepath.Join("tempDir", "iflow4.zip") 135 files.AddFile(path, []byte("dummy content")) 136 exists, err := files.FileExists(path) 137 assert.NoError(t, err) 138 assert.True(t, exists) 139 140 apiServiceKey := `{ 141 "oauth": { 142 "url": "https://demo", 143 "clientid": "demouser", 144 "clientsecret": "******", 145 "tokenurl": "https://demo/oauth/token" 146 } 147 }` 148 config := integrationArtifactUploadOptions{ 149 APIServiceKey: apiServiceKey, 150 IntegrationFlowName: "flow4", 151 IntegrationFlowID: "flow4", 152 PackageID: "CICD", 153 FilePath: path, 154 } 155 156 httpClient := httpMockCpis{CPIFunction: "", ResponseBody: ``, TestType: "NegativeAndCreateIntegrationDesigntimeArtifactResBody"} 157 158 err = runIntegrationArtifactUpload(&config, nil, &files, &httpClient) 159 assert.EqualError(t, err, "HTTP PUT request to https://demo/api/v1/IntegrationDesigntimeArtifacts(Id='flow4',Version='Active') failed with error: : 401 Unauthorized") 160 }) 161 162 t.Run("Failed case of Integration Flow Create Test", func(t *testing.T) { 163 filesMock := mock.FilesMock{} 164 path := filepath.Join("tempDir", "iflow4.zip") 165 filesMock.AddFile(path, []byte("dummy content")) 166 exists, err := filesMock.FileExists(path) 167 assert.NoError(t, err) 168 assert.True(t, exists) 169 170 apiServiceKey := `{ 171 "oauth": { 172 "url": "https://demo", 173 "clientid": "demouser", 174 "clientsecret": "******", 175 "tokenurl": "https://demo/oauth/token" 176 } 177 }` 178 config := integrationArtifactUploadOptions{ 179 APIServiceKey: apiServiceKey, 180 IntegrationFlowName: "flow4", 181 IntegrationFlowID: "flow4", 182 PackageID: "CICD", 183 FilePath: path, 184 } 185 186 httpClient := httpMockCpis{CPIFunction: "", ResponseBody: ``, TestType: "NegativeAndUpdateIntegrationDesigntimeArtifactResBody"} 187 188 err = runIntegrationArtifactUpload(&config, nil, &filesMock, &httpClient) 189 assert.EqualError(t, err, "HTTP POST request to https://demo/api/v1/IntegrationDesigntimeArtifacts failed with error: : 401 Unauthorized") 190 }) 191 }