github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/integration/integration_tms_upload_test.go (about) 1 //go:build integration 2 // +build integration 3 4 // can be executed with 5 // go test -v -tags integration -run TestTmsIntegration ./integration 6 7 package main 8 9 import ( 10 "fmt" 11 "os" 12 "testing" 13 14 "github.com/stretchr/testify/assert" 15 ) 16 17 var tmsServiceKey string 18 19 func readEnv() { 20 //Reading TMS credentials from environment 21 tmsServiceKey = os.Getenv("PIPER_tmsServiceKey") 22 if len(tmsServiceKey) == 0 { 23 fmt.Println("Env. variable PIPER_tmsServiceKey is not provided") 24 os.Exit(1) 25 } 26 } 27 28 func TestTmsUploadIntegrationBinSuccess(t *testing.T) { 29 // success case: run cmd without nodeExtDescriptorMapping 30 readEnv() 31 container := givenThisContainer(t, IntegrationTestDockerExecRunnerBundle{ 32 Image: "devxci/mbtci-java11-node14", 33 User: "root", 34 TestDir: []string{"testdata", "TestTmsIntegration"}, 35 Environment: map[string]string{"PIPER_tmsServiceKey": tmsServiceKey}, 36 }) 37 defer container.terminate(t) 38 39 err := container.whenRunningPiperCommand("tmsUpload", 40 "--mtaPath=scv_x.mtar", 41 "--nodeName=PIPER-TEST", 42 "--customDescription=Piper integration test", 43 "--mtaVersion=1.0.0", 44 "-v") 45 if err != nil { 46 t.Fatalf("Piper command failed %s", err) 47 } 48 container.assertHasOutput(t, "description: Piper integration test") 49 container.assertHasOutput(t, "tmsUpload - File uploaded successfully") 50 container.assertHasOutput(t, "tmsUpload - Node upload executed successfully") 51 container.assertHasOutput(t, "tmsUpload - SUCCESS") 52 } 53 54 func TestTmsUploadIntegrationBinNoDescriptionSuccess(t *testing.T) { 55 // success case: run cmd without --nodeExtDescriptorMapping and --customDescription 56 readEnv() 57 container := givenThisContainer(t, IntegrationTestDockerExecRunnerBundle{ 58 Image: "devxci/mbtci-java11-node14", 59 User: "root", 60 TestDir: []string{"testdata", "TestTmsIntegration"}, 61 Environment: map[string]string{"PIPER_tmsServiceKey": tmsServiceKey}, 62 }) 63 defer container.terminate(t) 64 65 err := container.whenRunningPiperCommand("tmsUpload", 66 "--mtaPath=scv_x.mtar", 67 "--nodeName=PIPER-TEST", 68 "--mtaVersion=1.0.0", 69 "-v") 70 if err != nil { 71 t.Fatalf("Piper command failed %s", err) 72 } 73 container.assertHasOutput(t, "description: Created by Piper") 74 container.assertHasOutput(t, "tmsUpload - File uploaded successfully") 75 container.assertHasOutput(t, "tmsUpload - Node upload executed successfully") 76 container.assertHasOutput(t, "tmsUpload - SUCCESS") 77 } 78 79 func TestTmsUploadIntegrationBinFailParam(t *testing.T) { 80 // error case: run cmd with nodeExtDescriptorMapping 81 readEnv() 82 container := givenThisContainer(t, IntegrationTestDockerExecRunnerBundle{ 83 Image: "devxci/mbtci-java11-node14", 84 User: "root", 85 TestDir: []string{"testdata", "TestTmsIntegration"}, 86 }) 87 defer container.terminate(t) 88 89 err := container.whenRunningPiperCommand("tmsUpload", 90 "--mtaPath=scv_x.mtar", 91 "--nodeName=PIPER-TEST", 92 "--customDescription=Piper integration test", 93 "--nodeExtDescriptorMapping={\"PIPER-TEST\":\"scv_x.mtaext\", \"PIPER-PROD\":\"scv_x.mtaext\"}", 94 "--mtaVersion=1.0.0", 95 "-v") 96 97 assert.Error(t, err, "Did expect error") 98 container.assertHasOutput(t, "Error: unknown flag: --nodeExtDescriptorMapping") 99 } 100 101 func TestTmsUploadIntegrationBinFailDescription(t *testing.T) { 102 // error case: run cmd with invalid description 103 readEnv() 104 container := givenThisContainer(t, IntegrationTestDockerExecRunnerBundle{ 105 Image: "devxci/mbtci-java11-node14", 106 User: "root", 107 TestDir: []string{"testdata", "TestTmsIntegration"}, 108 Environment: map[string]string{"PIPER_tmsServiceKey": tmsServiceKey}, 109 }) 110 defer container.terminate(t) 111 112 err := container.whenRunningPiperCommand("tmsUpload", 113 "--mtaPath=scv_x.mtar", 114 "--nodeName=PIPER-TEST", 115 "--customDescription={Bad description}") 116 117 assert.Error(t, err, "Did expect error") 118 container.assertHasOutput(t, "error tmsUpload - HTTP request failed with error") 119 container.assertHasOutput(t, "Failed to run tmsUpload step - failed to upload file to node") 120 } 121 122 func TestTmsUploadIntegrationYaml(t *testing.T) { 123 // success case: run with custom config 124 readEnv() 125 container := givenThisContainer(t, IntegrationTestDockerExecRunnerBundle{ 126 Image: "devxci/mbtci-java11-node14", 127 User: "root", 128 TestDir: []string{"testdata", "TestTmsIntegration"}, 129 Environment: map[string]string{"PIPER_tmsServiceKey": tmsServiceKey}, 130 }) 131 defer container.terminate(t) 132 133 err := container.whenRunningPiperCommand("tmsUpload", "--customConfig=.pipeline/upload_config.yml") 134 if err != nil { 135 t.Fatalf("Piper command failed %s", err) 136 } 137 138 container.assertHasOutput(t, "tmsUpload - File uploaded successfully") 139 container.assertHasOutput(t, "tmsUpload - MTA extension descriptor updated successfully") 140 container.assertHasOutput(t, "tmsUpload - Node upload executed successfully") 141 container.assertHasOutput(t, "tmsUpload - SUCCESS") 142 // test that oauth token is not exposed 143 container.assertHasNoOutput(t, "eyJ") 144 }