2 * Copyright 2018 Intel Corporation, Inc
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 vaultapi "github.com/hashicorp/vault/api"
21 credAppRole "github.com/hashicorp/vault/builtin/credential/approle"
22 vaulthttp "github.com/hashicorp/vault/http"
23 vaultlogical "github.com/hashicorp/vault/logical"
24 vaultinmem "github.com/hashicorp/vault/physical/inmem"
25 vaulttesting "github.com/hashicorp/vault/vault"
37 Values: map[string]interface{}{
45 // Only needed when running tests against vault
46 func createLocalVaultServer(t *testing.T) (*vaulttesting.TestCluster, *Vault) {
47 tc := vaulttesting.NewTestCluster(t,
48 &vaulttesting.CoreConfig{
51 CredentialBackends: map[string]vaultlogical.Factory{
52 "approle": credAppRole.Factory,
55 &vaulttesting.TestClusterOptions{
56 HandlerFunc: vaulthttp.Handler,
64 v.vaultToken = tc.RootToken
65 v.vaultClient = tc.Cores[0].Client
70 func TestInitVaultClient(t *testing.T) {
73 v.vaultAddress = "https://localhost:8200"
74 err := v.initVaultClient()
75 if err != nil || v.vaultClient == nil {
76 t.Fatal("Init: Init() failed to create vaultClient")
80 func TestInitRole(t *testing.T) {
82 tc, v := createLocalVaultServer(t)
85 v.vaultToken = tc.RootToken
86 v.vaultClient = tc.Cores[0].Client
91 t.Fatal("InitRole: InitRole() failed to create roles")
95 func TestGetStatus(t *testing.T) {
97 tc, v := createLocalVaultServer(t)
100 st, err := v.GetStatus()
103 t.Fatal("GetStatus: Returned error")
107 t.Fatal("GetStatus: Returned true. Expected false")
111 func TestCreateSecretDomain(t *testing.T) {
113 tc, v := createLocalVaultServer(t)
116 sd, err := v.CreateSecretDomain("testdomain")
119 t.Fatal("CreateSecretDomain: Returned error")
122 if sd.Name != "testdomain" {
123 t.Fatal("CreateSecretDomain: Returned name does not match: " + sd.Name)
127 t.Fatal("CreateSecretDomain: Returned UUID is empty")
131 func TestDeleteSecretDomain(t *testing.T) {
133 tc, v := createLocalVaultServer(t)
136 _, err := v.CreateSecretDomain("testdomain")
141 err = v.DeleteSecretDomain("testdomain")
143 t.Fatal("DeleteSecretDomain: Unable to delete domain")
147 func TestCreateSecret(t *testing.T) {
149 tc, v := createLocalVaultServer(t)
152 _, err := v.CreateSecretDomain("testdomain")
157 err = v.CreateSecret("testdomain", secret)
160 t.Fatal("CreateSecret: Error Creating secret")
164 func TestGetSecret(t *testing.T) {
166 tc, v := createLocalVaultServer(t)
169 _, err := v.CreateSecretDomain("testdomain")
174 err = v.CreateSecret("testdomain", secret)
179 sec, err := v.GetSecret("testdomain", secret.Name)
181 t.Fatal("GetSecret: Error Getting secret")
184 if sec.Name != secret.Name {
185 t.Fatal("GetSecret: Returned incorrect name")
188 if reflect.DeepEqual(sec.Values, secret.Values) == false {
189 t.Fatal("GetSecret: Returned incorrect Values")
193 func TestListSecret(t *testing.T) {
195 tc, v := createLocalVaultServer(t)
198 _, err := v.CreateSecretDomain("testdomain")
203 err = v.CreateSecret("testdomain", secret)
208 _, err = v.ListSecret("testdomain")
210 t.Fatal("ListSecret: Returned error")
214 func TestDeleteSecret(t *testing.T) {
216 tc, v := createLocalVaultServer(t)
219 _, err := v.CreateSecretDomain("testdomain")
224 err = v.CreateSecret("testdomain", secret)
229 err = v.DeleteSecret("testdomain", secret.Name)
231 t.Fatal("DeleteSecret: Error Creating secret")
235 func TestInitializeVault(t *testing.T) {
237 inm, err := vaultinmem.NewInmem(nil, nil)
242 core, err := vaulttesting.NewCore(&vaulttesting.CoreConfig{
251 ln, addr := vaulthttp.TestServer(t, core)
254 client, err := vaultapi.NewClient(&vaultapi.Config{
263 v.vaultClient = client
265 err = v.initializeVault()
267 t.Fatal("InitializeVault: Error initializing Vault")