1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-12 10:55:20 +02:00
sap-jenkins-library/cmd/abapAddonAssemblyKitCheckCVs_test.go
tiloKo 427f78b3ed
AAKaaS: 2 Check Product Version (#2037)
* adding my steps

* messy step

* Update abapEnvironmentAssembly.go

* clean up

* change yaml

* corrections

* Update cloudFoundryDeploy.go

* update

* delete simulation step

* remove simulate

* Update PiperGoUtils.groovy

* Update PiperGoUtils.groovy

* Update CommonStepsTest.groovy

* add docu

* Update abapEnvironmentAssembly.md

* changes due to PR

* Update .gitignore

* b

* CV list

* Update abapEnvironmentAssembly.go

* testing with simulation

* Update abapEnvironmentAssembly.go

* remove simulation

* renaming

* Update mkdocs.yml

* moving service key to yaml and fixing code climate

* Update abapEnvironmentAssemblePackages.go

* Update abapEnvironmentAssemblePackages.go

* Update abapEnvironmentAssemblePackages.go

* Update abapEnvironmentAssemblePackages.go

* change input

* Update abapEnvironmentAssemblePackages.go

* change json tag

* fixed error handling

* documentation

* Update abapEnvironmentAssemblePackages.md

* Update abapEnvironmentAssemblePackages.md

* fixing code climate issues

* fixing code climate issues

* Update abapEnvironmentAssemblePackages.yaml

* fixing code climate issues

* Update abapEnvironmentAssemblePackages.yaml

* adding unittests

* adding unittests and improved logging

* yaml -> json

* change scope of cfServiceKeyName

* correct indentation

* Update CommonStepsTest.groovy

* maintain correct step order

* AAKaaS CheckPV step

* AAKaaS CheckPV step #2

* AAKaaS CheckPV step #3

* AAKaaS CheckPV step #4

* AAKaaS CheckPV step #5

* Update resources/metadata/abapAddonAssemblyKitCheckCVs.yaml

Co-authored-by: Daniel Mieg <56156797+DanielMieg@users.noreply.github.com>

* Update resources/metadata/abapAddonAssemblyKitCheckPV.yaml

Co-authored-by: Daniel Mieg <56156797+DanielMieg@users.noreply.github.com>

* Update resources/metadata/abapAddonAssemblyKitCheckPV.yaml

Co-authored-by: Daniel Mieg <56156797+DanielMieg@users.noreply.github.com>

* Update resources/metadata/abapAddonAssemblyKitCheckCVs.yaml

Co-authored-by: Daniel Mieg <56156797+DanielMieg@users.noreply.github.com>

* AAKaaS CheckPV step #6

Co-authored-by: rosemarieB <45030247+rosemarieB@users.noreply.github.com>
Co-authored-by: Daniel Mieg <56156797+DanielMieg@users.noreply.github.com>
Co-authored-by: Christopher Fenner <26137398+CCFenner@users.noreply.github.com>
2020-09-17 15:56:14 +02:00

184 lines
5.6 KiB
Go

package cmd
import (
"encoding/json"
"testing"
abapbuild "github.com/SAP/jenkins-library/pkg/abap/build"
"github.com/SAP/jenkins-library/pkg/abaputils"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
)
func mockReadAddonDescriptor(FileName string) (abaputils.AddonDescriptor, error) {
var addonDescriptor abaputils.AddonDescriptor
var err error
switch FileName {
case "success":
{
addonDescriptor = abaputils.AddonDescriptor{
AddonProduct: "/DRNMSPC/PRD01",
AddonVersionYAML: "3.2.1",
Repositories: []abaputils.Repository{
{
Name: "/DRNMSPC/COMP01",
VersionYAML: "1.2.3",
},
},
}
}
case "failing":
{
err = errors.New("error in ReadAddonDescriptor")
}
}
return addonDescriptor, err
}
func TestCheckCVsStep(t *testing.T) {
var config abapAddonAssemblyKitCheckCVsOptions
var cpe abapAddonAssemblyKitCheckCVsCommonPipelineEnvironment
client := &abaputils.ClientMock{
Body: responseCheckCVs,
}
t.Run("step success", func(t *testing.T) {
config.AddonDescriptorFileName = "success"
err := runAbapAddonAssemblyKitCheckCVs(&config, nil, client, &cpe, mockReadAddonDescriptor)
assert.NoError(t, err, "Did not expect error")
var addonDescriptorFinal abaputils.AddonDescriptor
json.Unmarshal([]byte(cpe.abap.addonDescriptor), &addonDescriptorFinal)
assert.Equal(t, "0001", addonDescriptorFinal.Repositories[0].Version)
assert.Equal(t, "0002", addonDescriptorFinal.Repositories[0].SpLevel)
assert.Equal(t, "0003", addonDescriptorFinal.Repositories[0].PatchLevel)
})
t.Run("step error - in ReadAddonDescriptor", func(t *testing.T) {
config.AddonDescriptorFileName = "failing"
err := runAbapAddonAssemblyKitCheckCVs(&config, nil, client, &cpe, mockReadAddonDescriptor)
assert.Error(t, err, "Must end with error")
assert.Equal(t, "error in ReadAddonDescriptor", err.Error())
})
t.Run("step error - in validate", func(t *testing.T) {
config.AddonDescriptorFileName = "success"
client := &abaputils.ClientMock{
Body: "ErrorBody",
Error: errors.New("error during validation"),
}
err := runAbapAddonAssemblyKitCheckCVs(&config, nil, client, &cpe, mockReadAddonDescriptor)
assert.Error(t, err, "Must end with error")
})
}
func TestInitCV(t *testing.T) {
t.Run("test init", func(t *testing.T) {
conn := new(abapbuild.Connector)
conn.Client = &abaputils.ClientMock{}
repo := abaputils.Repository{
Name: "/DRNMSPC/COMP01",
VersionYAML: "1.2.3",
}
var c componentVersion
c.initCV(repo, *conn)
assert.Equal(t, "/DRNMSPC/COMP01", c.Name)
assert.Equal(t, "1.2.3", c.VersionYAML)
})
}
func TestValidateCV(t *testing.T) {
conn := new(abapbuild.Connector)
t.Run("test validate - success", func(t *testing.T) {
conn.Client = &abaputils.ClientMock{
Body: responseCheckCVs,
}
c := componentVersion{
Connector: *conn,
Name: "/DRNMSPC/COMP01",
VersionYAML: "1.2.3",
}
conn.Client = &abaputils.ClientMock{
Body: responseCheckCVs,
}
err := c.validate()
assert.NoError(t, err)
assert.Equal(t, "0001", c.Version)
assert.Equal(t, "0002", c.SpLevel)
assert.Equal(t, "0003", c.PatchLevel)
})
t.Run("test validate - with error", func(t *testing.T) {
conn.Client = &abaputils.ClientMock{
Body: "ErrorBody",
Error: errors.New("Validation failed"),
}
c := componentVersion{
Connector: *conn,
Name: "/DRNMSPC/COMP01",
VersionYAML: "1.2.3",
}
err := c.validate()
assert.Error(t, err)
assert.Equal(t, "", c.Version)
assert.Equal(t, "", c.SpLevel)
assert.Equal(t, "", c.PatchLevel)
})
}
func TestCopyFieldsCV(t *testing.T) {
t.Run("test copyFieldsToRepo", func(t *testing.T) {
repo := abaputils.Repository{
Name: "/DRNMSPC/COMP01",
VersionYAML: "1.2.3",
}
var c componentVersion
c.Version = "0001"
c.SpLevel = "0002"
c.PatchLevel = "0003"
c.copyFieldsToRepo(&repo)
assert.Equal(t, "0001", repo.Version)
assert.Equal(t, "0002", repo.SpLevel)
assert.Equal(t, "0003", repo.PatchLevel)
})
}
func TestCombineYAMLRepositoriesWithCPEProduct(t *testing.T) {
t.Run("test combineYAMLRepositoriesWithCPEProduct", func(t *testing.T) {
addonDescriptor := abaputils.AddonDescriptor{
Repositories: []abaputils.Repository{
{
Name: "/DRNMSPC/COMP01",
VersionYAML: "1.2.3",
},
{
Name: "/DRNMSPC/COMP02",
VersionYAML: "3.2.1",
},
},
}
addonDescriptorFromCPE := abaputils.AddonDescriptor{
AddonProduct: "/DRNMSP/PROD",
AddonVersionYAML: "1.2.3",
}
finalAddonDescriptor := combineYAMLRepositoriesWithCPEProduct(addonDescriptor, addonDescriptorFromCPE)
assert.Equal(t, "/DRNMSP/PROD", finalAddonDescriptor.AddonProduct)
assert.Equal(t, "1.2.3", finalAddonDescriptor.AddonVersionYAML)
assert.Equal(t, "/DRNMSPC/COMP01", finalAddonDescriptor.Repositories[0].Name)
assert.Equal(t, "/DRNMSPC/COMP02", finalAddonDescriptor.Repositories[1].Name)
assert.Equal(t, "1.2.3", finalAddonDescriptor.Repositories[0].VersionYAML)
assert.Equal(t, "3.2.1", finalAddonDescriptor.Repositories[1].VersionYAML)
})
}
var responseCheckCVs = `{
"d": {
"__metadata": {
"id": "https://W7Q.DMZWDF.SAP.CORP:443/odata/aas_ocs_package/SoftwareComponentVersionSet(Name='%2FDRNMSPC%2FCOMP01',Version='0001')",
"uri": "https://W7Q.DMZWDF.SAP.CORP:443/odata/aas_ocs_package/SoftwareComponentVersionSet(Name='%2FDRNMSPC%2FCOMP01',Version='0001')",
"type": "SSDA.AAS_ODATA_PACKAGE_SRV.SoftwareComponentVersion"
},
"Name": "/DRNMSPC/COMP01",
"Version": "0001",
"SpLevel": "0002",
"PatchLevel": "0003",
"Vendor": "",
"VendorType": ""
}
}`