github.com/xgoffin/jenkins-library@v1.154.0/cmd/abapAddonAssemblyKitCheckCVs_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 TestCheckCVsStep(t *testing.T) {
    15  	var config abapAddonAssemblyKitCheckCVsOptions
    16  	var cpe abapAddonAssemblyKitCheckCVsCommonPipelineEnvironment
    17  	bundle := aakaas.NewAakBundleMock()
    18  	bundle.SetBody(responseCheckCVs)
    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 := runAbapAddonAssemblyKitCheckCVs(&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, "0001", addonDescriptorFinal.Repositories[0].Version)
    29  		assert.Equal(t, "0002", addonDescriptorFinal.Repositories[0].SpLevel)
    30  		assert.Equal(t, "0003", addonDescriptorFinal.Repositories[0].PatchLevel)
    31  		assert.Equal(t, "HUGO1234", addonDescriptorFinal.Repositories[0].CommitID)
    32  	})
    33  	t.Run("step error - in validate(no CommitID)", func(t *testing.T) {
    34  		config.AddonDescriptorFileName = "noCommitID"
    35  		err := runAbapAddonAssemblyKitCheckCVs(&config, nil, &utils, &cpe)
    36  		assert.Error(t, err, "Must end with error")
    37  		assert.Contains(t, err.Error(), "CommitID missing in repo")
    38  	})
    39  	t.Run("step error - in ReadAddonDescriptor", func(t *testing.T) {
    40  		config.AddonDescriptorFileName = "failing"
    41  		err := runAbapAddonAssemblyKitCheckCVs(&config, nil, &utils, &cpe)
    42  		assert.Error(t, err, "Must end with error")
    43  		assert.Contains(t, "error in ReadAddonDescriptor", err.Error())
    44  	})
    45  	t.Run("step error - in validate", func(t *testing.T) {
    46  		config.AddonDescriptorFileName = "success"
    47  		bundle.SetBody("ErrorBody")
    48  		bundle.SetError("error during validation")
    49  		err := runAbapAddonAssemblyKitCheckCVs(&config, nil, &utils, &cpe)
    50  		assert.Error(t, err, "Must end with error")
    51  	})
    52  }
    53  
    54  func TestInitCV(t *testing.T) {
    55  	t.Run("test init", func(t *testing.T) {
    56  		conn := new(abapbuild.Connector)
    57  		conn.Client = &abaputils.ClientMock{}
    58  		repo := abaputils.Repository{
    59  			Name:        "/DRNMSPC/COMP01",
    60  			VersionYAML: "1.2.3",
    61  		}
    62  		var c componentVersion
    63  		c.initCV(repo, *conn)
    64  		assert.Equal(t, "/DRNMSPC/COMP01", c.Name)
    65  		assert.Equal(t, "1.2.3", c.VersionYAML)
    66  	})
    67  }
    68  
    69  func TestValidateCV(t *testing.T) {
    70  	conn := new(abapbuild.Connector)
    71  	t.Run("test validate - success", func(t *testing.T) {
    72  		conn.Client = &abaputils.ClientMock{
    73  			Body: responseCheckCVs,
    74  		}
    75  		c := componentVersion{
    76  			Connector:   *conn,
    77  			Name:        "/DRNMSPC/COMP01",
    78  			VersionYAML: "1.2.3",
    79  			CommitID:    "HUGO1234",
    80  		}
    81  		conn.Client = &abaputils.ClientMock{
    82  			Body: responseCheckCVs,
    83  		}
    84  		err := c.validate()
    85  		assert.NoError(t, err)
    86  		assert.Equal(t, "0001", c.Version)
    87  		assert.Equal(t, "0002", c.SpLevel)
    88  		assert.Equal(t, "0003", c.PatchLevel)
    89  	})
    90  	t.Run("test validate - with error", func(t *testing.T) {
    91  		conn.Client = &abaputils.ClientMock{
    92  			Body:  "ErrorBody",
    93  			Error: errors.New("Validation failed"),
    94  		}
    95  		c := componentVersion{
    96  			Connector:   *conn,
    97  			Name:        "/DRNMSPC/COMP01",
    98  			VersionYAML: "1.2.3",
    99  			CommitID:    "HUGO1234",
   100  		}
   101  		err := c.validate()
   102  		assert.Error(t, err)
   103  		assert.Equal(t, "", c.Version)
   104  		assert.Equal(t, "", c.SpLevel)
   105  		assert.Equal(t, "", c.PatchLevel)
   106  	})
   107  }
   108  
   109  func TestCopyFieldsCV(t *testing.T) {
   110  	t.Run("test copyFieldsToRepo", func(t *testing.T) {
   111  		repo := abaputils.Repository{
   112  			Name:        "/DRNMSPC/COMP01",
   113  			VersionYAML: "1.2.3",
   114  		}
   115  		var c componentVersion
   116  		c.Version = "0001"
   117  		c.SpLevel = "0002"
   118  		c.PatchLevel = "0003"
   119  		c.copyFieldsToRepo(&repo)
   120  		assert.Equal(t, "0001", repo.Version)
   121  		assert.Equal(t, "0002", repo.SpLevel)
   122  		assert.Equal(t, "0003", repo.PatchLevel)
   123  	})
   124  }
   125  
   126  func TestCombineYAMLRepositoriesWithCPEProduct(t *testing.T) {
   127  	t.Run("test combineYAMLRepositoriesWithCPEProduct", func(t *testing.T) {
   128  		addonDescriptor := abaputils.AddonDescriptor{
   129  			Repositories: []abaputils.Repository{
   130  				{
   131  					Name:        "/DRNMSPC/COMP01",
   132  					VersionYAML: "1.2.3",
   133  				},
   134  				{
   135  					Name:        "/DRNMSPC/COMP02",
   136  					VersionYAML: "3.2.1",
   137  				},
   138  			},
   139  		}
   140  		addonDescriptorFromCPE := abaputils.AddonDescriptor{
   141  			AddonProduct:     "/DRNMSP/PROD",
   142  			AddonVersionYAML: "1.2.3",
   143  		}
   144  		finalAddonDescriptor := combineYAMLRepositoriesWithCPEProduct(addonDescriptor, addonDescriptorFromCPE)
   145  		assert.Equal(t, "/DRNMSP/PROD", finalAddonDescriptor.AddonProduct)
   146  		assert.Equal(t, "1.2.3", finalAddonDescriptor.AddonVersionYAML)
   147  		assert.Equal(t, "/DRNMSPC/COMP01", finalAddonDescriptor.Repositories[0].Name)
   148  		assert.Equal(t, "/DRNMSPC/COMP02", finalAddonDescriptor.Repositories[1].Name)
   149  		assert.Equal(t, "1.2.3", finalAddonDescriptor.Repositories[0].VersionYAML)
   150  		assert.Equal(t, "3.2.1", finalAddonDescriptor.Repositories[1].VersionYAML)
   151  	})
   152  }
   153  
   154  var responseCheckCVs = `{
   155      "d": {
   156          "__metadata": {
   157              "id": "https://W7Q.DMZWDF.SAP.CORP:443/odata/aas_ocs_package/SoftwareComponentVersionSet(Name='%2FDRNMSPC%2FCOMP01',Version='0001')",
   158              "uri": "https://W7Q.DMZWDF.SAP.CORP:443/odata/aas_ocs_package/SoftwareComponentVersionSet(Name='%2FDRNMSPC%2FCOMP01',Version='0001')",
   159              "type": "SSDA.AAS_ODATA_PACKAGE_SRV.SoftwareComponentVersion"
   160          },
   161          "Name": "/DRNMSPC/COMP01",
   162          "Version": "0001",
   163          "SpLevel": "0002",
   164          "PatchLevel": "0003",
   165          "Vendor": "",
   166          "VendorType": ""
   167      }
   168  }`