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  }