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