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 credAppRole "github.com/hashicorp/vault/builtin/credential/approle"
21 vaulthttp "github.com/hashicorp/vault/http"
22 vaultlogical "github.com/hashicorp/vault/logical"
23 vaulttesting "github.com/hashicorp/vault/vault"
35 Values: map[string]interface{}{
43 // Only needed when running tests against vault
44 func createLocalVaultServer(t *testing.T) (*vaulttesting.TestCluster, *Vault) {
45 tc := vaulttesting.NewTestCluster(t,
46 &vaulttesting.CoreConfig{
49 CredentialBackends: map[string]vaultlogical.Factory{
50 "approle": credAppRole.Factory,
53 &vaulttesting.TestClusterOptions{
54 HandlerFunc: vaulthttp.Handler,
62 v.vaultToken = tc.RootToken
63 v.vaultClient = tc.Cores[0].Client
68 func TestInitVaultClient(t *testing.T) {
71 v.vaultAddress = "https://localhost:8200"
72 err := v.initVaultClient()
73 if err != nil || v.vaultClient == nil {
74 t.Fatal("Init: Init() failed to create vaultClient")
78 func TestInitRole(t *testing.T) {
80 tc, v := createLocalVaultServer(t)
83 v.vaultToken = tc.RootToken
84 v.vaultClient = tc.Cores[0].Client
89 t.Fatal("InitRole: InitRole() failed to create roles")
93 func TestGetStatus(t *testing.T) {
95 tc, v := createLocalVaultServer(t)
98 st, err := v.GetStatus()
101 t.Fatal("GetStatus: Returned error")
105 t.Fatal("GetStatus: Returned true. Expected false")
109 func TestCreateSecretDomain(t *testing.T) {
111 tc, v := createLocalVaultServer(t)
114 sd, err := v.CreateSecretDomain("testdomain")
117 t.Fatal("CreateSecretDomain: Returned error")
120 if sd.Name != "testdomain" {
121 t.Fatal("CreateSecretDomain: Returned name does not match: " + sd.Name)
125 t.Fatal("CreateSecretDomain: Returned UUID is empty")
129 func TestDeleteSecretDomain(t *testing.T) {
131 tc, v := createLocalVaultServer(t)
134 _, err := v.CreateSecretDomain("testdomain")
139 err = v.DeleteSecretDomain("testdomain")
141 t.Fatal("DeleteSecretDomain: Unable to delete domain")
145 func TestCreateSecret(t *testing.T) {
147 tc, v := createLocalVaultServer(t)
150 _, err := v.CreateSecretDomain("testdomain")
155 err = v.CreateSecret("testdomain", secret)
158 t.Fatal("CreateSecret: Error Creating secret")
162 func TestGetSecret(t *testing.T) {
164 tc, v := createLocalVaultServer(t)
167 _, err := v.CreateSecretDomain("testdomain")
172 err = v.CreateSecret("testdomain", secret)
177 sec, err := v.GetSecret("testdomain", secret.Name)
179 t.Fatal("GetSecret: Error Creating secret")
182 if sec.Name != secret.Name {
183 t.Fatal("GetSecret: Returned incorrect name")
186 if reflect.DeepEqual(sec.Values, secret.Values) == false {
187 t.Fatal("GetSecret: Returned incorrect Values")
191 func TestListSecret(t *testing.T) {
193 tc, v := createLocalVaultServer(t)
196 _, err := v.CreateSecretDomain("testdomain")
201 err = v.CreateSecret("testdomain", secret)
206 _, err = v.ListSecret("testdomain")
208 t.Fatal("ListSecret: Returned error")
212 func TestDeleteSecret(t *testing.T) {
214 tc, v := createLocalVaultServer(t)
217 _, err := v.CreateSecretDomain("testdomain")
222 err = v.CreateSecret("testdomain", secret)
227 err = v.DeleteSecret("testdomain", secret.Name)
229 t.Fatal("DeleteSecret: Error Creating secret")