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  }`