github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/cmd/apiProxyUpload_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package cmd 5 6 import ( 7 "path/filepath" 8 "testing" 9 10 "github.com/SAP/jenkins-library/pkg/mock" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestRunApiProxyUpload(t *testing.T) { 15 t.Parallel() 16 17 t.Run("Successfull Api Proxy Create Test", func(t *testing.T) { 18 filesMock := mock.FilesMock{} 19 path := filepath.Join("tempDir", "apiproxy.zip") 20 filesMock.AddFile(path, []byte("dummy content")) 21 exists, err := filesMock.FileExists(path) 22 if err != nil { 23 t.Fatal("Failed to create temporary file") 24 } 25 assert.True(t, exists) 26 apiServiceKey := `{ 27 "oauth": { 28 "url": "https://demo", 29 "clientid": "demouser", 30 "clientsecret": "******", 31 "tokenurl": "https://demo/oauth/token" 32 } 33 }` 34 35 config := apiProxyUploadOptions{ 36 APIServiceKey: apiServiceKey, 37 FilePath: path, 38 } 39 40 httpClient := httpMockCpis{CPIFunction: "ApiProxyUpload", ResponseBody: ``, TestType: "ApiProxyUploadPositiveCase"} 41 42 err = runApiProxyUpload(&config, nil, &filesMock, &httpClient) 43 44 if assert.NoError(t, err) { 45 46 t.Run("check url", func(t *testing.T) { 47 assert.Equal(t, "https://demo/apiportal/api/1.0/Transport.svc/APIProxies", httpClient.URL) 48 }) 49 50 t.Run("check method", func(t *testing.T) { 51 assert.Equal(t, "POST", httpClient.Method) 52 }) 53 } 54 }) 55 56 t.Run("Failed case of API Proxy Create Test", func(t *testing.T) { 57 filesMock := mock.FilesMock{} 58 path := filepath.Join("tempDir", "apiproxy.zip") 59 filesMock.AddFile(path, []byte("dummy content")) 60 exists, err := filesMock.FileExists(path) 61 assert.NoError(t, err) 62 assert.True(t, exists) 63 apiServiceKey := `{ 64 "oauth": { 65 "url": "https://demo", 66 "clientid": "demouser", 67 "clientsecret": "******", 68 "tokenurl": "https://demo/oauth/token" 69 } 70 }` 71 72 config := apiProxyUploadOptions{ 73 APIServiceKey: apiServiceKey, 74 FilePath: path, 75 } 76 77 httpClient := httpMockCpis{CPIFunction: "ApiProxyArtifactFail", ResponseBody: ``, TestType: "NegativeApiProxyArtifactUploadResBody"} 78 79 uploadErr := runApiProxyUpload(&config, nil, &filesMock, &httpClient) 80 assert.EqualError(t, uploadErr, "HTTP POST request to https://demo/apiportal/api/1.0/Transport.svc/APIProxies failed with error: : Service not Found") 81 }) 82 83 t.Run("file not exist", func(t *testing.T) { 84 filesMock := mock.FilesMock{} 85 apiServiceKey := `{ 86 "oauth": { 87 "url": "https://demo", 88 "clientid": "demouser", 89 "clientsecret": "******", 90 "tokenurl": "https://demo/oauth/token" 91 } 92 }` 93 94 config := apiProxyUploadOptions{ 95 APIServiceKey: apiServiceKey, 96 FilePath: "", 97 } 98 99 httpClient := httpMockCpis{CPIFunction: "ApiProxyArtifactFail", ResponseBody: ``, TestType: "NegativeApiProxyArtifactUploadResBody"} 100 101 uploadErr := runApiProxyUpload(&config, nil, &filesMock, &httpClient) 102 assert.EqualError(t, uploadErr, "Error reading file: could not read ''") 103 }) 104 105 t.Run("file not zip", func(t *testing.T) { 106 filesMock := mock.FilesMock{} 107 path := filepath.Join("tempDir", "apiproxy.pptx") 108 filesMock.AddFile(path, []byte("dummy content")) 109 apiServiceKey := `{ 110 "oauth": { 111 "url": "https://demo", 112 "clientid": "demouser", 113 "clientsecret": "******", 114 "tokenurl": "https://demo/oauth/token" 115 } 116 }` 117 118 config := apiProxyUploadOptions{ 119 APIServiceKey: apiServiceKey, 120 FilePath: path, 121 } 122 123 httpClient := httpMockCpis{CPIFunction: "ApiProxyArtifactFail", ResponseBody: ``, TestType: "NegativeApiProxyArtifactUploadResBody"} 124 125 uploadErr := runApiProxyUpload(&config, nil, &filesMock, &httpClient) 126 assert.EqualError(t, uploadErr, "not valid zip archive") 127 }) 128 }