get.porter.sh/porter@v1.3.0/pkg/secrets/plugins/filesystem/store_test.go (about)

     1  package filesystem_test
     2  
     3  import (
     4  	"context"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	"get.porter.sh/porter/pkg/config"
     9  	"get.porter.sh/porter/pkg/secrets"
    10  	"get.porter.sh/porter/pkg/secrets/plugins/filesystem"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestFileSystem_Permission(t *testing.T) {
    15  	c := config.NewTestConfig(t)
    16  	defer c.Close()
    17  
    18  	testStore := filesystem.NewStore(c.Config)
    19  	defer testStore.Close()
    20  
    21  	ctx := context.Background()
    22  	err := testStore.Connect(ctx)
    23  	require.NoError(t, err)
    24  
    25  	secretDir := "/home/myuser/.porter/secrets"
    26  	info, err := c.FileSystem.Stat(secretDir)
    27  	require.NoError(t, err)
    28  	require.Equal(t, filesystem.FileModeSensitiveDirectory, info.Mode().Perm(), "invalid folder permission %s", info.Mode().Perm().String())
    29  
    30  	secretKey := "porter-filesystem-plugin-test"
    31  	err = testStore.Create(ctx, secrets.SourceSecret, secretKey, "supersecret")
    32  	require.NoError(t, err)
    33  
    34  	info, err = c.FileSystem.Stat(filepath.Join(secretDir, secretKey))
    35  	require.NoError(t, err)
    36  	require.Equal(t, filesystem.FileModeSensitiveWritable, info.Mode().Perm())
    37  }
    38  
    39  func TestFileSystem_SetSecretDir(t *testing.T) {
    40  	c := config.NewTestConfig(t)
    41  
    42  	s := filesystem.NewStore(c.Config)
    43  	secretDir, err := s.SetSecretDir()
    44  	require.NoError(t, err)
    45  	require.Equal(t, filepath.FromSlash("/home/myuser/.porter/secrets"), secretDir)
    46  }
    47  
    48  func TestFileSystem_DataOperation(t *testing.T) {
    49  	c := config.NewTestConfig(t)
    50  	defer c.Close()
    51  
    52  	testStore := filesystem.NewStore(c.Config)
    53  	defer testStore.Close()
    54  
    55  	ctx := context.Background()
    56  	err := testStore.Connect(ctx)
    57  	require.NoError(t, err)
    58  
    59  	secretKey := "porter-filesystem-plugin-test"
    60  	secretValue := "supersecret"
    61  	err = testStore.Create(ctx, secrets.SourceSecret, secretKey, secretValue)
    62  	require.NoError(t, err)
    63  
    64  	data, err := testStore.Resolve(ctx, secrets.SourceSecret, secretKey)
    65  	require.NoError(t, err)
    66  	require.Equal(t, secretValue, data)
    67  }