github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/cmd/integrationArtifactGetMplStatus_test.go (about)

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