github.com/jaylevin/jenkins-library@v1.230.4/cmd/integrationArtifactGetMplStatus_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	piperhttp "github.com/SAP/jenkins-library/pkg/http"
     8  	"github.com/SAP/jenkins-library/pkg/mock"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  type integrationArtifactGetMplStatusMockUtils struct {
    13  	*mock.ExecMockRunner
    14  	*mock.FilesMock
    15  }
    16  
    17  func newIntegrationArtifactGetMplStatusTestsUtils() integrationArtifactGetMplStatusMockUtils {
    18  	utils := integrationArtifactGetMplStatusMockUtils{
    19  		ExecMockRunner: &mock.ExecMockRunner{},
    20  		FilesMock:      &mock.FilesMock{},
    21  	}
    22  	return utils
    23  }
    24  
    25  func TestRunIntegrationArtifactGetMplStatus(t *testing.T) {
    26  	t.Parallel()
    27  
    28  	t.Run("Successfully Test of Get Integration Flow MPL Status", func(t *testing.T) {
    29  		apiServiceKey := `{
    30  			"oauth": {
    31  				"url": "https://demo",
    32  				"clientid": "demouser",
    33  				"clientsecret": "******",
    34  				"tokenurl": "https://demo/oauth/token"
    35  			}
    36  		}`
    37  		config := integrationArtifactGetMplStatusOptions{
    38  			APIServiceKey:     apiServiceKey,
    39  			IntegrationFlowID: "flow1",
    40  		}
    41  
    42  		httpClient := httpMockCpis{CPIFunction: "IntegrationArtifactGetMplStatus", ResponseBody: ``, TestType: "Positive"}
    43  		seOut := integrationArtifactGetMplStatusCommonPipelineEnvironment{}
    44  		err := runIntegrationArtifactGetMplStatus(&config, nil, &httpClient, &seOut)
    45  
    46  		if assert.NoError(t, err) {
    47  			assert.EqualValues(t, seOut.custom.integrationFlowMplStatus, "COMPLETED")
    48  
    49  			t.Run("check url", func(t *testing.T) {
    50  				assert.Equal(t, "https://demo/api/v1/MessageProcessingLogs?$filter=IntegrationArtifact/Id+eq+'flow1'+and+Status+ne+'DISCARDED'&$orderby=LogEnd+desc&$top=1", httpClient.URL)
    51  			})
    52  
    53  			t.Run("check method", func(t *testing.T) {
    54  				assert.Equal(t, "GET", httpClient.Method)
    55  			})
    56  		}
    57  
    58  	})
    59  
    60  	t.Run("Failed Test of Get Integration Flow MPL Status", func(t *testing.T) {
    61  		apiServiceKey := `{
    62  			"oauth": {
    63  				"url": "https://demo",
    64  				"clientid": "demouser",
    65  				"clientsecret": "******",
    66  				"tokenurl": "https://demo/oauth/token"
    67  			}
    68  		}`
    69  		config := integrationArtifactGetMplStatusOptions{
    70  			APIServiceKey:     apiServiceKey,
    71  			IntegrationFlowID: "flow1",
    72  		}
    73  
    74  		httpClient := httpMockCpis{CPIFunction: "IntegrationArtifactGetMplStatus", ResponseBody: ``, TestType: "Negative"}
    75  
    76  		seOut := integrationArtifactGetMplStatusCommonPipelineEnvironment{}
    77  		err := runIntegrationArtifactGetMplStatus(&config, nil, &httpClient, &seOut)
    78  		assert.EqualValues(t, seOut.custom.integrationFlowMplStatus, "")
    79  		assert.EqualError(t, err, "HTTP GET request to https://demo/api/v1/MessageProcessingLogs?$filter=IntegrationArtifact/"+
    80  			"Id+eq+'flow1'+and+Status+ne+'DISCARDED'&$orderby=LogEnd+desc&$top=1 failed with error: "+
    81  			"Unable to get integration flow MPL status, Response Status code:400")
    82  	})
    83  
    84  	t.Run(" Integration flow message processing get Error message test", func(t *testing.T) {
    85  		clientOptions := piperhttp.ClientOptions{}
    86  		clientOptions.Token = fmt.Sprintf("Bearer %s", "Demo")
    87  		httpClient := httpMockCpis{CPIFunction: "IntegrationArtifactGetMplStatusError", Options: clientOptions, ResponseBody: ``, TestType: "Negative"}
    88  		seOut := integrationArtifactGetMplStatusCommonPipelineEnvironment{}
    89  		message, err := getIntegrationArtifactMPLError(&seOut, "1000111", &httpClient, "demo")
    90  		assert.NoError(t, err)
    91  		assert.NotNil(t, message)
    92  		assert.EqualValues(t, seOut.custom.integrationFlowMplError, "{\"message\": \"java.lang.IllegalStateException: No credentials for 'smtp' found\"}")
    93  	})
    94  
    95  }