github.com/SAP/jenkins-library@v1.362.0/cmd/integrationArtifactTransport_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package cmd 5 6 import ( 7 "fmt" 8 "testing" 9 10 "github.com/SAP/jenkins-library/pkg/apim" 11 apimhttp "github.com/SAP/jenkins-library/pkg/apim" 12 "github.com/SAP/jenkins-library/pkg/mock" 13 "github.com/stretchr/testify/assert" 14 ) 15 16 type integrationArtifactTransportMockUtils struct { 17 *mock.ExecMockRunner 18 *mock.FilesMock 19 } 20 21 func newIntegrationArtifactTransportTestsUtils() integrationArtifactTransportMockUtils { 22 utils := integrationArtifactTransportMockUtils{ 23 ExecMockRunner: &mock.ExecMockRunner{}, 24 FilesMock: &mock.FilesMock{}, 25 } 26 return utils 27 } 28 29 func TestRunIntegrationArtifactTransport(t *testing.T) { 30 t.Parallel() 31 32 t.Run("Create Transport Request Successful test", func(t *testing.T) { 33 config := getDefaultOptionsForIntegrationArtifactTransport() 34 httpClientMock := &apimhttp.HttpMockAPIM{StatusCode: 202, ResponseBody: `{"processId": "100", "state": "FINISHED"}`} 35 apim := apim.Bundle{APIServiceKey: config.CasServiceKey, Client: httpClientMock} 36 // test 37 err := CreateIntegrationArtifactTransportRequest(&config, apim) 38 // assert 39 if assert.NoError(t, err) { 40 t.Run("check url", func(t *testing.T) { 41 assert.Equal(t, "/v1/operations/100", httpClientMock.URL) 42 }) 43 t.Run("check method", func(t *testing.T) { 44 assert.Equal(t, "GET", httpClientMock.Method) 45 }) 46 } 47 }) 48 49 t.Run("getIntegrationTransportProcessingStatus successful test", func(t *testing.T) { 50 config := getDefaultOptionsForIntegrationArtifactTransport() 51 httpClientMock := &apimhttp.HttpMockAPIM{StatusCode: 200, ResponseBody: `{"state": "FINISHED"}`} 52 // test 53 resp, err := getIntegrationTransportProcessingStatus(&config, httpClientMock, "demo", "100") 54 55 // assert 56 assert.Equal(t, "FINISHED", resp) 57 assert.NoError(t, err) 58 }) 59 60 t.Run("getIntegrationTransportError successful test", func(t *testing.T) { 61 config := getDefaultOptionsForIntegrationArtifactTransport() 62 httpClientMock := &apimhttp.HttpMockAPIM{StatusCode: 200, ResponseBody: `{ "logs": [] }`} 63 // test 64 resp, err := getIntegrationTransportError(&config, httpClientMock, "demo", "100") 65 66 // assert 67 assert.Equal(t, "{ \"logs\": [] }", resp) 68 // assert 69 if assert.NoError(t, err) { 70 t.Run("check url", func(t *testing.T) { 71 assert.Equal(t, "demo/v1/operations/100/logs", httpClientMock.URL) 72 }) 73 t.Run("check method", func(t *testing.T) { 74 assert.Equal(t, "GET", httpClientMock.Method) 75 }) 76 } 77 }) 78 79 t.Run("GetCPITransportReqPayload successful test", func(t *testing.T) { 80 config := getDefaultOptionsForIntegrationArtifactTransport() 81 // test 82 resp, err := GetCPITransportReqPayload(&config) 83 fmt.Println(resp.String()) 84 // assert 85 expJson := `{"contentType":"d9c3fe08ceeb47a2991e53049f2ed766","id":"TestTransport","name":"TestTransport","resourceID":"d9c3fe08ceeb47a2991e53049f2ed766","subType":"package","type":"CloudIntegration","version":"1.0"}` 86 actJson := resp.String() 87 assert.Contains(t, actJson, expJson) 88 assert.NoError(t, err) 89 }) 90 91 t.Run("Create Transport Request negative test1", func(t *testing.T) { 92 config := getDefaultOptionsForIntegrationArtifactTransport() 93 httpClientMock := &apimhttp.HttpMockAPIM{StatusCode: 202, ResponseBody: `{"processId": ""}`} 94 apim := apim.Bundle{APIServiceKey: config.CasServiceKey, Client: httpClientMock} 95 // test 96 err := CreateIntegrationArtifactTransportRequest(&config, apim) 97 assert.Equal(t, "/v1/contentResources/export", httpClientMock.URL) 98 assert.Equal(t, "POST", httpClientMock.Method) 99 assert.Error(t, err) 100 }) 101 102 t.Run("Create Transport Request negative test2", func(t *testing.T) { 103 config := getDefaultOptionsForIntegrationArtifactTransport() 104 httpClientMock := &apimhttp.HttpMockAPIM{StatusCode: 400, ResponseBody: ``} 105 apim := apim.Bundle{APIServiceKey: config.CasServiceKey, Client: httpClientMock} 106 // test 107 err := CreateIntegrationArtifactTransportRequest(&config, apim) 108 assert.EqualError(t, err, "HTTP POST request to /v1/contentResources/export failed with error: Bad Request") 109 }) 110 111 } 112 113 func getDefaultOptionsForIntegrationArtifactTransport() integrationArtifactTransportOptions { 114 115 apiServiceKey := `{ 116 "oauth": { 117 "url": "https://demo", 118 "clientid": "sb-2d0622c9", 119 "clientsecret": "edb5c506=", 120 "tokenurl": "https://demo/oauth/token" 121 } 122 }` 123 124 return integrationArtifactTransportOptions{ 125 CasServiceKey: apiServiceKey, 126 IntegrationPackageID: "TestTransport", 127 ResourceID: "d9c3fe08ceeb47a2991e53049f2ed766", 128 Name: "TestTransport", 129 Version: "1.0", 130 } 131 }