github.com/jaylevin/jenkins-library@v1.230.4/cmd/apiProviderUpload_test.go (about) 1 package cmd 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 8 "github.com/SAP/jenkins-library/pkg/apim" 9 apimhttp "github.com/SAP/jenkins-library/pkg/apim" 10 "github.com/SAP/jenkins-library/pkg/mock" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestRunApiProviderUpload(t *testing.T) { 15 t.Parallel() 16 17 t.Run("API Provider upload succesfull test", func(t *testing.T) { 18 file, tmpErr := ioutil.TempFile("", "test.json") 19 if tmpErr != nil { 20 t.FailNow() 21 } 22 defer os.RemoveAll(file.Name()) // clean up 23 filesMock := mock.FilesMock{} 24 filesMock.AddFile(file.Name(), []byte(apimhttp.GetServiceKey())) 25 config := getDefaultOptionsForApiProvider() 26 config.FilePath = file.Name() 27 httpClientMock := &apimhttp.HttpMockAPIM{StatusCode: 201, ResponseBody: ``} 28 apim := apim.Bundle{APIServiceKey: config.APIServiceKey, Client: httpClientMock} 29 // test 30 err := createApiProvider(&config, apim, filesMock.FileRead) 31 32 // assert 33 if assert.NoError(t, err) { 34 t.Run("check url", func(t *testing.T) { 35 assert.Equal(t, "/apiportal/api/1.0/Management.svc/APIProviders", httpClientMock.URL) 36 }) 37 t.Run("check method", func(t *testing.T) { 38 assert.Equal(t, "POST", httpClientMock.Method) 39 }) 40 } 41 }) 42 43 t.Run("API Provider upload failed test", func(t *testing.T) { 44 file, tmpErr := ioutil.TempFile("", "test.json") 45 if tmpErr != nil { 46 t.FailNow() 47 } 48 defer os.RemoveAll(file.Name()) // clean up 49 filesMock := mock.FilesMock{} 50 filesMock.AddFile(file.Name(), []byte(apimhttp.GetServiceKey())) 51 config := getDefaultOptionsForApiProvider() 52 config.FilePath = file.Name() 53 httpClientMock := &apimhttp.HttpMockAPIM{StatusCode: 400} 54 apim := apim.Bundle{APIServiceKey: config.APIServiceKey, Client: httpClientMock} 55 // test 56 err := createApiProvider(&config, apim, filesMock.FileRead) 57 // assert 58 assert.EqualError(t, err, "HTTP POST request to /apiportal/api/1.0/Management.svc/APIProviders failed with error: : Bad Request") 59 }) 60 61 t.Run("valid api provider payload test", func(t *testing.T) { 62 apiProviderPayload := `{ 63 "oauth": { 64 "url": "https://demo", 65 "clientid": "demouser", 66 "clientsecret": "******", 67 "tokenurl": "https://demo/oauth/token" 68 } 69 }` 70 apimData := apim.Bundle{Payload: apiProviderPayload} 71 assert.Equal(t, apimData.IsPayloadJSON(), true) 72 }) 73 74 t.Run("invalid api provider payload test", func(t *testing.T) { 75 apiProviderPayload := `this is not json` 76 apimData := apim.Bundle{Payload: apiProviderPayload} 77 assert.Equal(t, apimData.IsPayloadJSON(), false) 78 }) 79 80 } 81 82 func getDefaultOptionsForApiProvider() apiProviderUploadOptions { 83 return apiProviderUploadOptions{ 84 APIServiceKey: apimhttp.GetServiceKey(), 85 FilePath: "test.json", 86 } 87 }