github.com/jaylevin/jenkins-library@v1.230.4/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 }`