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

     1  package cmd
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/SAP/jenkins-library/pkg/abap/aakaas"
     8  	abapbuild "github.com/SAP/jenkins-library/pkg/abap/build"
     9  	"github.com/SAP/jenkins-library/pkg/abaputils"
    10  	"github.com/pkg/errors"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestCheckPVStep(t *testing.T) {
    15  	var config abapAddonAssemblyKitCheckPVOptions
    16  	var cpe abapAddonAssemblyKitCheckPVCommonPipelineEnvironment
    17  	bundle := aakaas.NewAakBundleMock()
    18  	bundle.SetBody(responseCheckPV)
    19  	utils := bundle.GetUtils()
    20  	config.Username = "dummyUser"
    21  	config.Password = "dummyPassword"
    22  	t.Run("step success", func(t *testing.T) {
    23  		config.AddonDescriptorFileName = "success"
    24  		err := runAbapAddonAssemblyKitCheckPV(&config, nil, &utils, &cpe)
    25  		assert.NoError(t, err, "Did not expect error")
    26  		var addonDescriptorFinal abaputils.AddonDescriptor
    27  		json.Unmarshal([]byte(cpe.abap.addonDescriptor), &addonDescriptorFinal)
    28  		assert.Equal(t, "0003", addonDescriptorFinal.AddonVersion)
    29  		assert.Equal(t, "0002", addonDescriptorFinal.AddonSpsLevel)
    30  		assert.Equal(t, "0001", addonDescriptorFinal.AddonPatchLevel)
    31  	})
    32  	t.Run("step error - in ReadAddonDescriptor", func(t *testing.T) {
    33  		config.AddonDescriptorFileName = "failing"
    34  		err := runAbapAddonAssemblyKitCheckPV(&config, nil, &utils, &cpe)
    35  		assert.Error(t, err, "Did expect error")
    36  		assert.Equal(t, err.Error(), "error in ReadAddonDescriptor")
    37  	})
    38  	t.Run("step error - in validate", func(t *testing.T) {
    39  		config.AddonDescriptorFileName = "success"
    40  		bundle.SetBody("ErrorBody")
    41  		bundle.SetError("error during validation")
    42  		err := runAbapAddonAssemblyKitCheckPV(&config, nil, &utils, &cpe)
    43  		assert.Error(t, err, "Did expect error")
    44  	})
    45  }
    46  
    47  func TestInitPV(t *testing.T) {
    48  	t.Run("test init", func(t *testing.T) {
    49  		conn := new(abapbuild.Connector)
    50  		conn.Client = &abaputils.ClientMock{}
    51  		prodvers := abaputils.AddonDescriptor{
    52  			AddonProduct:     "/DRNMSPC/PRD01",
    53  			AddonVersionYAML: "3.2.1",
    54  		}
    55  
    56  		var pv productVersion
    57  		pv.init(prodvers, *conn)
    58  		assert.Equal(t, "/DRNMSPC/PRD01", pv.Name)
    59  		assert.Equal(t, "3.2.1", pv.VersionYAML)
    60  	})
    61  }
    62  
    63  func TestValidatePV(t *testing.T) {
    64  	conn := new(abapbuild.Connector)
    65  	t.Run("test validate - success", func(t *testing.T) {
    66  		conn.Client = &abaputils.ClientMock{
    67  			Body: responseCheckPV,
    68  		}
    69  		pv := productVersion{
    70  			Connector:   *conn,
    71  			Name:        "/DRNMSPC/PRD01",
    72  			VersionYAML: "3.2.1",
    73  		}
    74  		err := pv.validateAndResolveVersionFields()
    75  		assert.NoError(t, err)
    76  		assert.Equal(t, "0003", pv.Version)
    77  		assert.Equal(t, "0002", pv.SpsLevel)
    78  		assert.Equal(t, "0001", pv.PatchLevel)
    79  	})
    80  	t.Run("test validate - with error", func(t *testing.T) {
    81  		conn.Client = &abaputils.ClientMock{
    82  			Body:  "ErrorBody",
    83  			Error: errors.New("Validation failed"),
    84  		}
    85  		pv := productVersion{
    86  			Connector:   *conn,
    87  			Name:        "/DRNMSPC/PRD01",
    88  			VersionYAML: "3.2.1",
    89  		}
    90  		err := pv.validateAndResolveVersionFields()
    91  		assert.Error(t, err)
    92  		assert.Equal(t, "", pv.Version)
    93  		assert.Equal(t, "", pv.SpsLevel)
    94  		assert.Equal(t, "", pv.PatchLevel)
    95  	})
    96  }
    97  
    98  func TestCopyFieldsPV(t *testing.T) {
    99  	t.Run("test copyFieldsToRepo", func(t *testing.T) {
   100  		prodVers := abaputils.AddonDescriptor{
   101  			AddonProduct:     "/DRNMSPC/PRD01",
   102  			AddonVersionYAML: "1.2.3",
   103  		}
   104  		var pv productVersion
   105  		pv.Version = "0003"
   106  		pv.SpsLevel = "0002"
   107  		pv.PatchLevel = "0001"
   108  		pv.transferVersionFields(&prodVers)
   109  		assert.Equal(t, "0003", prodVers.AddonVersion)
   110  		assert.Equal(t, "0002", prodVers.AddonSpsLevel)
   111  		assert.Equal(t, "0001", prodVers.AddonPatchLevel)
   112  	})
   113  }
   114  
   115  var responseCheckPV = `{
   116      "d": {
   117          "__metadata": {
   118              "id": "https://W7Q.DMZWDF.SAP.CORP:443/odata/aas_ocs_package/ProductVersionSet(Name='%2FDRNMSPC%2FPRD01',Version='0001')",
   119              "uri": "https://W7Q.DMZWDF.SAP.CORP:443/odata/aas_ocs_package/ProductVersionSet(Name='%2FDRNMSPC%2FPRD01',Version='0001')",
   120              "type": "SSDA.AAS_ODATA_PACKAGE_SRV.ProductVersion"
   121          },
   122          "Name": "/DRNMSPC/PRD01",
   123          "Version": "0003",
   124          "SpsLevel": "0002",
   125          "PatchLevel": "0001",
   126          "Vendor": "",
   127          "VendorType": ""
   128      }
   129  }`