get.porter.sh/porter@v1.3.0/tests/integration/sensitive_data_test.go (about)

     1  //go:build integration
     2  
     3  package integration
     4  
     5  import (
     6  	"testing"
     7  
     8  	"get.porter.sh/porter/pkg/porter"
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestSensitiveData(t *testing.T) {
    14  	t.Parallel()
    15  
    16  	p := porter.NewTestPorter(t)
    17  	defer p.Close()
    18  	ctx := p.SetupIntegrationTest()
    19  
    20  	bundleName := p.AddTestBundleDir("testdata/bundles/bundle-with-sensitive-data", true)
    21  
    22  	sensitiveParamName := "password"
    23  	sensitiveParamValue := "secretpassword"
    24  	installOpts := porter.NewInstallOptions()
    25  	installOpts.Params = []string{sensitiveParamName + "=" + sensitiveParamValue, "name=porter-test"}
    26  
    27  	err := installOpts.Validate(ctx, []string{}, p.Porter)
    28  	require.NoError(t, err)
    29  
    30  	err = p.InstallBundle(ctx, installOpts)
    31  	require.NoError(t, err)
    32  
    33  	i, err := p.Installations.GetInstallation(ctx, installOpts.Namespace, installOpts.Name)
    34  	require.NoError(t, err)
    35  
    36  	run, err := p.Installations.GetRun(ctx, i.Status.RunID)
    37  	require.NoError(t, err)
    38  
    39  	for _, param := range i.Parameters.Parameters {
    40  		if param.Name == sensitiveParamName {
    41  			assert.NotContains(t, param.Source.Hint, sensitiveParamValue)
    42  		}
    43  	}
    44  
    45  	for _, param := range run.ParameterOverrides.Parameters {
    46  		if param.Name == sensitiveParamName {
    47  			assert.NotContains(t, param.Source.Hint, sensitiveParamValue)
    48  		}
    49  	}
    50  	for _, param := range run.Parameters.Parameters {
    51  		if param.Name == sensitiveParamName {
    52  			assert.NotContains(t, param.Source.Hint, sensitiveParamValue)
    53  		}
    54  	}
    55  
    56  	outputs, err := p.Installations.GetLastOutputs(ctx, "", bundleName)
    57  	require.NoError(t, err, "GetLastOutput failed")
    58  	mylogs, ok := outputs.GetByName("mylogs")
    59  	require.True(t, ok, "expected mylogs output to be persisted")
    60  	assert.Contains(t, string(mylogs.Value), "porter-test")
    61  	result, ok := outputs.GetByName("result")
    62  	require.True(t, ok, "expected result output to be persisted")
    63  	assert.NotContains(t, string(result.Value), sensitiveParamValue)
    64  }