github.com/tommi2day/pwcli@v0.0.0-20240317203041-4d1177a5ab91/cmd/vault_test.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/tommi2day/pwcli/test" 8 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 "github.com/tommi2day/gomodules/common" 14 ) 15 16 func TestVault(t *testing.T) { 17 var err error 18 var out = "" 19 test.Testinit(t) 20 if os.Getenv("SKIP_VAULT") != "" { 21 t.Skip("Skip Vault Test in CI") 22 return 23 } 24 vaultContainer, err := prepareVaultContainer() 25 require.NoErrorf(t, err, "Ldap Server not available") 26 require.NotNil(t, vaultContainer, "Prepare failed") 27 defer common.DestroyDockerContainer(vaultContainer) 28 29 vaulthost, vaultport := common.GetContainerHostAndPort(vaultContainer, "8200/tcp") 30 address := fmt.Sprintf("http://%s:%d", vaulthost, vaultport) 31 _ = os.Setenv("VAULT_ADDR", address) 32 err = os.Setenv("VAULT_TOKEN", rootToken) 33 if err != nil { 34 t.Fatalf("cannot set vault environment") 35 } 36 t.Logf("ADDR=%s, Token=%s", address, rootToken) 37 t.Run("CMD vault write", func(t *testing.T) { 38 args := []string{ 39 "vault", 40 "write", 41 "--logical=false", 42 "--info", 43 "--unit-test", 44 "--mount", "secret/", 45 "--path", "test", 46 "--vault_addr", address, 47 "--vault_token", rootToken, 48 "{\"password\": \"testpass\"}", 49 } 50 out, err = common.CmdRun(RootCmd, args) 51 require.NoErrorf(t, err, "get command should not return an error: %s", err) 52 assert.Contains(t, out, "Vault Write OK", "Output should not confirm success") 53 t.Logf(out) 54 }) 55 t.Run("CMD vault read", func(t *testing.T) { 56 args := []string{ 57 "vault", 58 "read", 59 "--logical=false", 60 "--info", 61 "--unit-test", 62 "--mount", "secret/", 63 "--path", "test", 64 "--vault_addr", address, 65 "--vault_token", rootToken, 66 "password", 67 } 68 out, err = common.CmdRun(RootCmd, args) 69 require.NoErrorf(t, err, "get command should not return an error:%s", err) 70 assert.Contains(t, out, "Vault Data successfully processed", "Output should confirm success") 71 t.Logf(out) 72 }) 73 t.Run("CMD vault list", func(t *testing.T) { 74 args := []string{ 75 "vault", 76 "list", 77 "--info", 78 "--unit-test", 79 "--mount", "secret/", 80 "--path", "/", 81 "--vault_addr", address, 82 "--vault_token", rootToken, 83 } 84 out, err = common.CmdRun(RootCmd, args) 85 require.NoErrorf(t, err, "list command should not return an error:%s", err) 86 assert.Contains(t, out, "Vault List returned", "Output should confirm success") 87 t.Logf(out) 88 }) 89 t.Run("CMD GetPassword Vault", func(t *testing.T) { 90 args := []string{ 91 "get", 92 "--method", "vault", 93 "--info", 94 "--unit-test", 95 "--path", "secret/data/test", 96 "--entry", "password", 97 "--vault_addr", address, 98 "--vault_token", rootToken, 99 } 100 out, err = common.CmdRun(RootCmd, args) 101 require.NoErrorf(t, err, "get command should not return an error:%s", err) 102 assert.Contains(t, out, "Found matching entry", "Output should confirm success") 103 t.Logf(out) 104 }) 105 }