github.com/SAP/jenkins-library@v1.362.0/cmd/abapAddonAssemblyKitReleasePackages_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package cmd 5 6 import ( 7 "encoding/json" 8 "testing" 9 "time" 10 11 "github.com/SAP/jenkins-library/pkg/abap/aakaas" 12 "github.com/SAP/jenkins-library/pkg/abaputils" 13 "github.com/stretchr/testify/assert" 14 ) 15 16 func TestReleasePackagesStep(t *testing.T) { 17 var config abapAddonAssemblyKitReleasePackagesOptions 18 var cpe abapAddonAssemblyKitReleasePackagesCommonPipelineEnvironment 19 bundle := aakaas.NewAakBundleMock() 20 bundle.SetBody(responseRelease) 21 utils := bundle.GetUtils() 22 23 config.Username = "dummyUser" 24 config.Password = "dummyPassword" 25 t.Run("step success", func(t *testing.T) { 26 //arrange 27 addonDescriptor := abaputils.AddonDescriptor{ 28 Repositories: []abaputils.Repository{ 29 { 30 PackageName: "SAPK-002AAINDRNMSPC", 31 Status: "L", 32 }, 33 { 34 PackageName: "SAPK-001AAINDRNMSPC", 35 Status: "R", 36 }, 37 }, 38 } 39 adoDesc, _ := json.Marshal(addonDescriptor) 40 config.AddonDescriptor = string(adoDesc) 41 //act 42 err := runAbapAddonAssemblyKitReleasePackages(&config, nil, &utils, &cpe) 43 //assert 44 assert.NoError(t, err, "Did not expect error") 45 var addonDescriptorFinal abaputils.AddonDescriptor 46 err = json.Unmarshal([]byte(cpe.abap.addonDescriptor), &addonDescriptorFinal) 47 assert.NoError(t, err) 48 assert.Equal(t, "R", addonDescriptorFinal.Repositories[0].Status) 49 }) 50 51 t.Run("step error - invalid input", func(t *testing.T) { 52 //arrange 53 addonDescriptor := abaputils.AddonDescriptor{ 54 Repositories: []abaputils.Repository{ 55 { 56 Status: "L", 57 }, 58 }, 59 } 60 adoDesc, _ := json.Marshal(addonDescriptor) 61 config.AddonDescriptor = string(adoDesc) 62 //act 63 err := runAbapAddonAssemblyKitReleasePackages(&config, nil, &utils, &cpe) 64 //assert 65 assert.Error(t, err, "Did expect error") 66 assert.Equal(t, err.Error(), "Parameter missing. Please provide the name of the package which should be released") 67 }) 68 69 t.Run("step error - timeout single", func(t *testing.T) { 70 //arrange 71 bundle.SetError("Release not finished") 72 bundle.SetMaxRuntime(1 * time.Microsecond) 73 addonDescriptor := abaputils.AddonDescriptor{ 74 Repositories: []abaputils.Repository{ 75 { 76 PackageName: "SAPK-001AAINDRNMSPC", 77 Status: "L", 78 }, 79 }, 80 } 81 adoDesc, _ := json.Marshal(addonDescriptor) 82 config.AddonDescriptor = string(adoDesc) 83 //act 84 err := runAbapAddonAssemblyKitReleasePackages(&config, nil, &utils, &cpe) 85 //assert 86 assert.Error(t, err, "Did expect error") 87 assert.Equal(t, err.Error(), "Release of all packages failed/timed out - Aborting as abapEnvironmentAssembleConfirm step is not needed: Timed out") 88 }) 89 } 90 func TestReleasePackagesStepMix(t *testing.T) { 91 var config abapAddonAssemblyKitReleasePackagesOptions 92 var cpe abapAddonAssemblyKitReleasePackagesCommonPipelineEnvironment 93 bundle := aakaas.NewAakBundleMock() 94 bundle.SetBody(responseRelease) 95 utils := bundle.GetUtils() 96 97 config.Username = "dummyUser" 98 config.Password = "dummyPassword" 99 t.Run("step error - timeout mix", func(t *testing.T) { 100 //arrange 101 bundle.SetBodyList([]string{responseRelease, responseRelease}) //Head + Post 102 bundle.SetMaxRuntime(500 * time.Microsecond) 103 bundle.SetErrorInsteadOfDumpToTrue() 104 addonDescriptor := abaputils.AddonDescriptor{ 105 Repositories: []abaputils.Repository{ 106 { 107 PackageName: "SAPK-002AAINDRNMSPC", 108 Status: "L", 109 }, 110 { 111 PackageName: "SAPK-001AAINDRNMSPC", 112 Status: "L", 113 }, 114 }, 115 } 116 adoDesc, _ := json.Marshal(addonDescriptor) 117 config.AddonDescriptor = string(adoDesc) 118 //act 119 err := runAbapAddonAssemblyKitReleasePackages(&config, nil, &utils, &cpe) 120 //assert 121 assert.NoError(t, err, "Did not expect error") 122 var addonDescriptorFinal abaputils.AddonDescriptor 123 err = json.Unmarshal([]byte(cpe.abap.addonDescriptor), &addonDescriptorFinal) 124 assert.NoError(t, err) 125 assert.Equal(t, "R", addonDescriptorFinal.Repositories[0].Status) 126 assert.Equal(t, "L", addonDescriptorFinal.Repositories[1].Status) 127 }) 128 } 129 130 var responseRelease = `{ 131 "d": { 132 "__metadata": { 133 "id": "https://W7Q.DMZWDF.SAP.CORP:443/odata/aas_ocs_package/OcsPackageSet('SAPK-001AAINDRNMSPC')", 134 "uri": "https://W7Q.DMZWDF.SAP.CORP:443/odata/aas_ocs_package/OcsPackageSet('SAPK-001AAINDRNMSPC')", 135 "type": "SSDA.AAS_ODATA_PACKAGE_SRV.OcsPackage" 136 }, 137 "Name": "SAPK-001AAINDRNMSPC", 138 "Type": "AOI", 139 "Component": "/DRNMSPC/COMP01", 140 "Release": "0001", 141 "Level": "0000", 142 "Status": "R", 143 "Operation": "", 144 "Namespace": "/DRNMSPC/", 145 "Vendorid": "0000203069" 146 } 147 }`