github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/cmd/tmsUpload_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package cmd 5 6 import ( 7 "encoding/json" 8 "fmt" 9 "os" 10 "strconv" 11 "testing" 12 13 "github.com/SAP/jenkins-library/pkg/mock" 14 "github.com/SAP/jenkins-library/pkg/tms" 15 "github.com/pkg/errors" 16 "github.com/stretchr/testify/assert" 17 ) 18 19 const NODE_ID = 777 20 const ID_OF_MTA_EXT_DESCRIPTOR = 456 21 const FILE_ID = 333 22 const NODE_NAME = "TEST_NODE" 23 const MTA_PATH_LOCAL = "example.mtar" 24 const MTA_NAME = "example.mtar" 25 const MTA_ID = "com.sap.tms.upload.test" 26 const MTA_EXT_ID = "com.sap.tms.upload.test_ext" 27 const MTA_YAML_PATH_LOCAL = "mta.yaml" 28 const MTA_YAML_PATH = "./testdata/TestRunTmsUpload/valid/mta.yaml" 29 const INVALID_MTA_YAML_PATH = "./testdata/TestRunTmsUpload/invalid/mta_not_a_yaml.yaml" 30 const INVALID_MTA_YAML_PATH_2 = "./testdata/TestRunTmsUpload/invalid/mta_no_id_and_version_parameters.yaml" 31 const MTA_EXT_DESCRIPTOR_PATH_LOCAL = "test.mtaext" 32 const INVALID_MTA_EXT_DESCRIPTOR_PATH_LOCAL = "wrong_content.mtaext" 33 const INVALID_MTA_EXT_DESCRIPTOR_PATH_LOCAL_2 = "wrong_extends_parameter.mtaext" 34 const INVALID_MTA_EXT_DESCRIPTOR_PATH_LOCAL_3 = "missing_extends_parameter.mtaext" 35 const MTA_EXT_DESCRIPTOR_PATH = "./testdata/TestRunTmsUpload/valid/test.mtaext" 36 const INVALID_MTA_EXT_DESCRIPTOR_PATH = "./testdata/TestRunTmsUpload/invalid/wrong_content.mtaext" 37 const INVALID_MTA_EXT_DESCRIPTOR_PATH_2 = "./testdata/TestRunTmsUpload/invalid/wrong_extends_parameter.mtaext" 38 const INVALID_MTA_EXT_DESCRIPTOR_PATH_3 = "./testdata/TestRunTmsUpload/invalid/missing_extends_parameter.mtaext" 39 const CUSTOM_DESCRIPTION = "This is a test description" 40 const NAMED_USER = "techUser" 41 const MTA_VERSION = "1.0.0" 42 const WRONG_MTA_VERSION = "3.2.1" 43 const LAST_CHANGED_AT = "2021-11-16T13:06:05.711Z" 44 const INVALID_INPUT_MSG = "Invalid input parameter(s) when getting MTA extension descriptor" 45 46 type tmsMockUtils struct { 47 *mock.ExecMockRunner 48 *mock.FilesMock 49 } 50 51 func newTmsTestsUtils() tmsMockUtils { 52 utils := tmsMockUtils{ 53 ExecMockRunner: &mock.ExecMockRunner{}, 54 FilesMock: &mock.FilesMock{}, 55 } 56 return utils 57 } 58 59 type communicationInstanceMock struct { 60 getNodesResponse []tms.Node 61 getMtaExtDescriptorResponse tms.MtaExtDescriptor 62 updateMtaExtDescriptorResponse tms.MtaExtDescriptor 63 uploadMtaExtDescriptorToNodeResponse tms.MtaExtDescriptor 64 uploadFileResponse tms.FileInfo 65 uploadFileToNodeResponse tms.NodeUploadResponseEntity 66 exportFileToNodeResponse tms.NodeUploadResponseEntity 67 isErrorOnGetNodes bool 68 isErrorOnGetMtaExtDescriptor bool 69 isErrorOnUpdateMtaExtDescriptor bool 70 isErrorOnUploadMtaExtDescriptorToNode bool 71 isErrorOnUploadFile bool 72 isErrorOnUploadFileToNode bool 73 isErrorOnExportFileToNode bool 74 } 75 76 func (cim *communicationInstanceMock) GetNodes() ([]tms.Node, error) { 77 if cim.isErrorOnGetNodes { 78 var nodes []tms.Node 79 return nodes, errors.New("Something went wrong on getting nodes") 80 } else { 81 return cim.getNodesResponse, nil 82 } 83 } 84 85 func (cim *communicationInstanceMock) GetMtaExtDescriptor(nodeId int64, mtaId, mtaVersion string) (tms.MtaExtDescriptor, error) { 86 var mtaExtDescriptor tms.MtaExtDescriptor 87 if mtaVersion != MTA_VERSION || nodeId != NODE_ID || mtaId != MTA_ID { 88 return mtaExtDescriptor, errors.New(INVALID_INPUT_MSG) 89 } 90 91 if cim.isErrorOnGetMtaExtDescriptor { 92 return mtaExtDescriptor, errors.New("Something went wrong on getting MTA extension descriptor") 93 } else { 94 return cim.getMtaExtDescriptorResponse, nil 95 } 96 } 97 98 func (cim *communicationInstanceMock) UpdateMtaExtDescriptor(nodeId, idOfMtaExtDescriptor int64, file, mtaVersion, description, namedUser string) (tms.MtaExtDescriptor, error) { 99 var mtaExtDescriptor tms.MtaExtDescriptor 100 if mtaVersion != MTA_VERSION || description != CUSTOM_DESCRIPTION || nodeId != NODE_ID || idOfMtaExtDescriptor != ID_OF_MTA_EXT_DESCRIPTOR || file != MTA_EXT_DESCRIPTOR_PATH_LOCAL || namedUser != NAMED_USER { 101 return mtaExtDescriptor, errors.New(INVALID_INPUT_MSG) 102 } 103 104 if cim.isErrorOnUpdateMtaExtDescriptor { 105 return mtaExtDescriptor, errors.New("Something went wrong on updating MTA extension descriptor") 106 } else { 107 return cim.updateMtaExtDescriptorResponse, nil 108 } 109 } 110 111 func (cim *communicationInstanceMock) UploadMtaExtDescriptorToNode(nodeId int64, file, mtaVersion, description, namedUser string) (tms.MtaExtDescriptor, error) { 112 var mtaExtDescriptor tms.MtaExtDescriptor 113 if mtaVersion != MTA_VERSION || description != CUSTOM_DESCRIPTION || nodeId != NODE_ID || file != MTA_EXT_DESCRIPTOR_PATH_LOCAL || namedUser != NAMED_USER { 114 return mtaExtDescriptor, errors.New(INVALID_INPUT_MSG) 115 } 116 117 if cim.isErrorOnUploadMtaExtDescriptorToNode { 118 return mtaExtDescriptor, errors.New("Something went wrong on uploading MTA extension descriptor to node") 119 } else { 120 return cim.uploadMtaExtDescriptorToNodeResponse, nil 121 } 122 } 123 124 func (cim *communicationInstanceMock) UploadFile(file, namedUser string) (tms.FileInfo, error) { 125 var fileInfo tms.FileInfo 126 if file != MTA_PATH_LOCAL || namedUser != NAMED_USER { 127 return fileInfo, errors.New(INVALID_INPUT_MSG) 128 } 129 130 if cim.isErrorOnUploadFile { 131 return fileInfo, errors.New("Something went wrong on uploading file") 132 } else { 133 return cim.uploadFileResponse, nil 134 } 135 } 136 137 func (cim *communicationInstanceMock) UploadFileToNode(fileInfo tms.FileInfo, nodeName, description, namedUser string) (tms.NodeUploadResponseEntity, error) { 138 fileId := strconv.FormatInt(fileInfo.Id, 10) 139 var nodeUploadResponseEntity tms.NodeUploadResponseEntity 140 if description != CUSTOM_DESCRIPTION || nodeName != NODE_NAME || fileId != strconv.FormatInt(FILE_ID, 10) || namedUser != NAMED_USER { 141 return nodeUploadResponseEntity, errors.New(INVALID_INPUT_MSG) 142 } 143 144 if cim.isErrorOnUploadFileToNode { 145 return nodeUploadResponseEntity, errors.New("Something went wrong on uploading file to node") 146 } else { 147 return cim.uploadFileToNodeResponse, nil 148 } 149 } 150 151 func mapToJson(m map[string]interface{}) (string, error) { 152 b, err := json.Marshal(m) 153 if err != nil { 154 return "", err 155 } 156 return string(b), nil 157 } 158 159 func TestRunTmsUpload(t *testing.T) { 160 t.Parallel() 161 162 t.Run("happy path: 1. get nodes 2. get MTA ext descriptor -> nothing obtained 3. upload MTA ext descriptor to node 4. upload file 5. upload file to node", func(t *testing.T) { 163 t.Parallel() 164 165 // init 166 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 167 fileInfo := tms.FileInfo{Id: FILE_ID, Name: MTA_NAME} 168 communicationInstance := communicationInstanceMock{getNodesResponse: nodes, uploadFileResponse: fileInfo} 169 170 utils := newTmsTestsUtils() 171 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 172 173 mtaYamlBytes, _ := os.ReadFile(MTA_YAML_PATH) 174 utils.AddFile(MTA_YAML_PATH_LOCAL, mtaYamlBytes) 175 176 mtaExtDescriptorBytes, _ := os.ReadFile(MTA_EXT_DESCRIPTOR_PATH) 177 utils.AddFile(MTA_EXT_DESCRIPTOR_PATH_LOCAL, mtaExtDescriptorBytes) 178 179 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 180 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 181 182 // test 183 err := runTmsUpload(config, &communicationInstance, utils) 184 185 // assert 186 assert.NoError(t, err) 187 }) 188 189 t.Run("happy path: no mapping between node names and MTA extension descriptors is provided -> only upload file and upload file to node calls will be executed", func(t *testing.T) { 190 t.Parallel() 191 192 // init 193 fileInfo := tms.FileInfo{Id: FILE_ID, Name: MTA_NAME} 194 communicationInstance := communicationInstanceMock{uploadFileResponse: fileInfo} 195 196 utils := newTmsTestsUtils() 197 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 198 199 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION} 200 201 // test 202 err := runTmsUpload(config, &communicationInstance, utils) 203 204 // assert 205 assert.NoError(t, err) 206 }) 207 208 t.Run("happy path: 1. get nodes 2. get MTA ext descriptor 3. update the MTA ext descriptor 4. upload file 5. upload file to node", func(t *testing.T) { 209 t.Parallel() 210 211 // init 212 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 213 mtaExtDescriptor := tms.MtaExtDescriptor{Id: ID_OF_MTA_EXT_DESCRIPTOR, Description: "Some existing description", MtaId: MTA_ID, MtaExtId: MTA_EXT_ID, MtaVersion: MTA_VERSION, LastChangedAt: LAST_CHANGED_AT} 214 fileInfo := tms.FileInfo{Id: FILE_ID, Name: MTA_NAME} 215 communicationInstance := communicationInstanceMock{getNodesResponse: nodes, getMtaExtDescriptorResponse: mtaExtDescriptor, uploadFileResponse: fileInfo} 216 217 utils := newTmsTestsUtils() 218 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 219 220 mtaYamlBytes, _ := os.ReadFile(MTA_YAML_PATH) 221 utils.AddFile(MTA_YAML_PATH_LOCAL, mtaYamlBytes) 222 223 mtaExtDescriptorBytes, _ := os.ReadFile(MTA_EXT_DESCRIPTOR_PATH) 224 utils.AddFile(MTA_EXT_DESCRIPTOR_PATH_LOCAL, mtaExtDescriptorBytes) 225 226 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 227 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 228 229 // test 230 err := runTmsUpload(config, &communicationInstance, utils) 231 232 // assert 233 assert.NoError(t, err) 234 }) 235 236 t.Run("error path: MTA file does not exist", func(t *testing.T) { 237 t.Parallel() 238 239 // init 240 communicationInstance := communicationInstanceMock{} 241 utils := newTmsTestsUtils() 242 243 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 244 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 245 246 // test 247 err := runTmsUpload(config, &communicationInstance, utils) 248 249 // assert 250 assert.EqualError(t, err, fmt.Sprintf("mta file %s not found", MTA_PATH_LOCAL)) 251 }) 252 253 t.Run("error path: error while getting nodes", func(t *testing.T) { 254 t.Parallel() 255 256 // init 257 communicationInstance := communicationInstanceMock{isErrorOnGetNodes: true} 258 utils := newTmsTestsUtils() 259 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 260 261 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 262 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 263 264 // test 265 err := runTmsUpload(config, &communicationInstance, utils) 266 267 // assert 268 assert.EqualError(t, err, "failed to get nodes: Something went wrong on getting nodes") 269 }) 270 271 t.Run("error path: cannot read mta.yaml (the file is missing)", func(t *testing.T) { 272 t.Parallel() 273 274 // init 275 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 276 communicationInstance := communicationInstanceMock{getNodesResponse: nodes} 277 utils := newTmsTestsUtils() 278 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 279 280 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 281 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 282 283 // test 284 err := runTmsUpload(config, &communicationInstance, utils) 285 286 // assert 287 assert.EqualError(t, err, "failed to get mta.yaml as map: could not read 'mta.yaml'") 288 }) 289 290 t.Run("error path: cannot unmarshal mta.yaml (the file does not represent a yaml)", func(t *testing.T) { 291 t.Parallel() 292 293 // init 294 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 295 communicationInstance := communicationInstanceMock{getNodesResponse: nodes} 296 utils := newTmsTestsUtils() 297 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 298 299 mtaYamlBytes, _ := os.ReadFile(INVALID_MTA_YAML_PATH) 300 utils.AddFile(MTA_YAML_PATH_LOCAL, mtaYamlBytes) 301 302 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 303 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 304 305 // test 306 err := runTmsUpload(config, &communicationInstance, utils) 307 308 // assert 309 assert.EqualError(t, err, "failed to get mta.yaml as map: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type map[string]interface {}") 310 }) 311 312 t.Run("error path: no 'ID' and 'version' parameters found in mta.yaml", func(t *testing.T) { 313 t.Parallel() 314 315 // init 316 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 317 communicationInstance := communicationInstanceMock{getNodesResponse: nodes} 318 utils := newTmsTestsUtils() 319 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 320 321 mtaYamlBytes, _ := os.ReadFile(INVALID_MTA_YAML_PATH_2) 322 utils.AddFile(MTA_YAML_PATH_LOCAL, mtaYamlBytes) 323 324 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 325 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 326 327 // test 328 err := runTmsUpload(config, &communicationInstance, utils) 329 330 // assert 331 var expectedErrorMessage string 332 expectedErrorMessage += "parameter 'ID' is not found in mta.yaml\n" 333 expectedErrorMessage += "parameter 'version' is not found in mta.yaml\n" 334 335 assert.EqualError(t, err, expectedErrorMessage) 336 }) 337 338 t.Run("error path: errors on validating the mapping between node names and MTA extension descriptor paths", func(t *testing.T) { 339 t.Parallel() 340 341 // init 342 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 343 communicationInstance := communicationInstanceMock{getNodesResponse: nodes} 344 utils := newTmsTestsUtils() 345 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 346 347 mtaYamlBytes, _ := os.ReadFile(MTA_YAML_PATH) 348 utils.AddFile(MTA_YAML_PATH_LOCAL, mtaYamlBytes) 349 350 mtaExtDescriptorBytes, _ := os.ReadFile(MTA_EXT_DESCRIPTOR_PATH) 351 utils.AddFile(MTA_EXT_DESCRIPTOR_PATH_LOCAL, mtaExtDescriptorBytes) 352 353 invalidMtaExtDescriptorBytes, _ := os.ReadFile(INVALID_MTA_EXT_DESCRIPTOR_PATH) 354 utils.AddFile(INVALID_MTA_EXT_DESCRIPTOR_PATH_LOCAL, invalidMtaExtDescriptorBytes) 355 356 invalidMtaExtDescriptorBytes2, _ := os.ReadFile(INVALID_MTA_EXT_DESCRIPTOR_PATH_2) 357 utils.AddFile(INVALID_MTA_EXT_DESCRIPTOR_PATH_LOCAL_2, invalidMtaExtDescriptorBytes2) 358 359 invalidMtaExtDescriptorBytes3, _ := os.ReadFile(INVALID_MTA_EXT_DESCRIPTOR_PATH_3) 360 utils.AddFile(INVALID_MTA_EXT_DESCRIPTOR_PATH_LOCAL_3, invalidMtaExtDescriptorBytes3) 361 362 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL, "UNEXISTING_NODE": "unexisting.mtaext", "ONE_MORE_UNEXISTING_NODE": INVALID_MTA_EXT_DESCRIPTOR_PATH_LOCAL, "ONE_MORE_UNEXISTING_NODE_2": INVALID_MTA_EXT_DESCRIPTOR_PATH_LOCAL_2, "ONE_MORE_UNEXISTING_NODE_3": INVALID_MTA_EXT_DESCRIPTOR_PATH_LOCAL_3} 363 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: WRONG_MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 364 365 // test 366 err := runTmsUpload(config, &communicationInstance, utils) 367 368 // assert 369 var expectedErrorMessage string 370 expectedErrorMessage += "tried to parse wrong_content.mtaext as yaml, but got an error: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type map[string]interface {}\n" 371 expectedErrorMessage += "parameter 'mtaVersion' does not match the MTA version in mta.yaml\n" 372 expectedErrorMessage += "parameter 'extends' in MTA extension descriptor files [missing_extends_parameter.mtaext wrong_extends_parameter.mtaext] is not the same as MTA ID or is missing at all\n" 373 expectedErrorMessage += "MTA extension descriptor files [unexisting.mtaext] do not exist\n" 374 expectedErrorMessage += "nodes [ONE_MORE_UNEXISTING_NODE ONE_MORE_UNEXISTING_NODE_2 ONE_MORE_UNEXISTING_NODE_3 UNEXISTING_NODE] do not exist. Please check node names provided in 'nodeExtDescriptorMapping' parameter or create these nodes\n" 375 assert.EqualError(t, err, expectedErrorMessage) 376 }) 377 378 t.Run("error path: error while getting MTA extension descriptor", func(t *testing.T) { 379 t.Parallel() 380 381 // init 382 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 383 communicationInstance := communicationInstanceMock{getNodesResponse: nodes, isErrorOnGetMtaExtDescriptor: true} 384 utils := newTmsTestsUtils() 385 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 386 387 mtaYamlBytes, _ := os.ReadFile(MTA_YAML_PATH) 388 utils.AddFile(MTA_YAML_PATH_LOCAL, mtaYamlBytes) 389 390 mtaExtDescriptorBytes, _ := os.ReadFile(MTA_EXT_DESCRIPTOR_PATH) 391 utils.AddFile(MTA_EXT_DESCRIPTOR_PATH_LOCAL, mtaExtDescriptorBytes) 392 393 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 394 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 395 396 // test 397 err := runTmsUpload(config, &communicationInstance, utils) 398 399 // assert 400 assert.EqualError(t, err, "failed to get MTA extension descriptor: Something went wrong on getting MTA extension descriptor") 401 }) 402 403 t.Run("error path: error while updating MTA extension descriptor", func(t *testing.T) { 404 t.Parallel() 405 406 // init 407 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 408 mtaExtDescriptor := tms.MtaExtDescriptor{Id: ID_OF_MTA_EXT_DESCRIPTOR, Description: "Some existing description", MtaId: MTA_ID, MtaExtId: MTA_EXT_ID, MtaVersion: MTA_VERSION, LastChangedAt: LAST_CHANGED_AT} 409 communicationInstance := communicationInstanceMock{getNodesResponse: nodes, getMtaExtDescriptorResponse: mtaExtDescriptor, isErrorOnUpdateMtaExtDescriptor: true} 410 411 utils := newTmsTestsUtils() 412 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 413 414 mtaYamlBytes, _ := os.ReadFile(MTA_YAML_PATH) 415 utils.AddFile(MTA_YAML_PATH_LOCAL, mtaYamlBytes) 416 417 mtaExtDescriptorBytes, _ := os.ReadFile(MTA_EXT_DESCRIPTOR_PATH) 418 utils.AddFile(MTA_EXT_DESCRIPTOR_PATH_LOCAL, mtaExtDescriptorBytes) 419 420 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 421 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 422 423 // test 424 err := runTmsUpload(config, &communicationInstance, utils) 425 426 // assert 427 assert.EqualError(t, err, "failed to update MTA extension descriptor: Something went wrong on updating MTA extension descriptor") 428 }) 429 430 t.Run("error path: error while uploading MTA extension descriptor to node", func(t *testing.T) { 431 t.Parallel() 432 433 // init 434 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 435 communicationInstance := communicationInstanceMock{getNodesResponse: nodes, isErrorOnUploadMtaExtDescriptorToNode: true} 436 437 utils := newTmsTestsUtils() 438 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 439 440 mtaYamlBytes, _ := os.ReadFile(MTA_YAML_PATH) 441 utils.AddFile(MTA_YAML_PATH_LOCAL, mtaYamlBytes) 442 443 mtaExtDescriptorBytes, _ := os.ReadFile(MTA_EXT_DESCRIPTOR_PATH) 444 utils.AddFile(MTA_EXT_DESCRIPTOR_PATH_LOCAL, mtaExtDescriptorBytes) 445 446 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 447 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 448 449 // test 450 err := runTmsUpload(config, &communicationInstance, utils) 451 452 // assert 453 assert.EqualError(t, err, "failed to upload MTA extension descriptor to node: Something went wrong on uploading MTA extension descriptor to node") 454 }) 455 456 t.Run("error path: error while uploading file", func(t *testing.T) { 457 t.Parallel() 458 459 // init 460 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 461 communicationInstance := communicationInstanceMock{getNodesResponse: nodes, isErrorOnUploadFile: true} 462 463 utils := newTmsTestsUtils() 464 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 465 466 mtaYamlBytes, _ := os.ReadFile(MTA_YAML_PATH) 467 utils.AddFile(MTA_YAML_PATH_LOCAL, mtaYamlBytes) 468 469 mtaExtDescriptorBytes, _ := os.ReadFile(MTA_EXT_DESCRIPTOR_PATH) 470 utils.AddFile(MTA_EXT_DESCRIPTOR_PATH_LOCAL, mtaExtDescriptorBytes) 471 472 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 473 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 474 475 // test 476 err := runTmsUpload(config, &communicationInstance, utils) 477 478 // assert 479 assert.EqualError(t, err, "failed to upload file: Something went wrong on uploading file") 480 }) 481 482 t.Run("error path: error while uploading file to node", func(t *testing.T) { 483 t.Parallel() 484 485 // init 486 nodes := []tms.Node{{Id: NODE_ID, Name: NODE_NAME}} 487 fileInfo := tms.FileInfo{Id: FILE_ID, Name: MTA_NAME} 488 communicationInstance := communicationInstanceMock{getNodesResponse: nodes, uploadFileResponse: fileInfo, isErrorOnUploadFileToNode: true} 489 490 utils := newTmsTestsUtils() 491 utils.AddFile(MTA_PATH_LOCAL, []byte("dummy content")) 492 493 mtaYamlBytes, _ := os.ReadFile(MTA_YAML_PATH) 494 utils.AddFile(MTA_YAML_PATH_LOCAL, mtaYamlBytes) 495 496 mtaExtDescriptorBytes, _ := os.ReadFile(MTA_EXT_DESCRIPTOR_PATH) 497 utils.AddFile(MTA_EXT_DESCRIPTOR_PATH_LOCAL, mtaExtDescriptorBytes) 498 499 nodeNameExtDescriptorMapping := map[string]interface{}{NODE_NAME: MTA_EXT_DESCRIPTOR_PATH_LOCAL} 500 config := tmsUploadOptions{MtaPath: MTA_PATH_LOCAL, CustomDescription: CUSTOM_DESCRIPTION, NamedUser: NAMED_USER, NodeName: NODE_NAME, MtaVersion: MTA_VERSION, NodeExtDescriptorMapping: nodeNameExtDescriptorMapping} 501 502 // test 503 err := runTmsUpload(config, &communicationInstance, utils) 504 505 // assert 506 assert.EqualError(t, err, "failed to upload file to node: Something went wrong on uploading file to node") 507 }) 508 }