-
Notifications
You must be signed in to change notification settings - Fork 9
/
router_server_secrets_test.go
119 lines (93 loc) · 3.55 KB
/
router_server_secrets_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package serverservice_test
import (
"context"
"fmt"
"testing"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.hollow.sh/serverservice/internal/dbtools"
serverservice "go.hollow.sh/serverservice/pkg/api/v1"
)
func TestIntegrationServerCredentialsUpsert(t *testing.T) {
ctx := context.TODO()
s := serverTest(t)
realClientTests(t, func(ctx context.Context, authToken string, respCode int, expectError bool) error {
s.Client.SetToken(authToken)
id := uuid.MustParse(dbtools.FixtureDory.ID)
slug := serverservice.ServerCredentialTypeBMC
path := fmt.Sprintf("http://test.hollow.com/api/v1/servers/%s/credentials/%s", id, slug)
resp, err := s.Client.SetCredential(ctx, id, slug, "postgre", "something")
if !expectError {
require.NoError(t, err)
assert.NotNil(t, resp.Links.Self)
assert.Equal(t, path, resp.Links.Self.Href)
}
return err
})
s.Client.SetToken(validToken(adminScopes))
t.Run("inserts when secret doesn't exist", func(t *testing.T) {
uuid := uuid.MustParse(dbtools.FixtureMarlin.ID)
slug := serverservice.ServerCredentialTypeBMC
// Make sure our server doesn't already have a BMC secret
secret, _, err := s.Client.GetCredential(ctx, uuid, slug)
require.Error(t, err)
require.Nil(t, secret)
require.Contains(t, err.Error(), "not found")
// Create the secret
_, err = s.Client.SetCredential(ctx, uuid, slug, "postgre", "supersecret")
assert.NoError(t, err)
// Ensure we can retrieve the secret we set
secret, _, err = s.Client.GetCredential(ctx, uuid, slug)
assert.NoError(t, err)
assert.Equal(t, "supersecret", secret.Password)
assert.Equal(t, "postgre", secret.Username)
})
t.Run("updates when secret already exist", func(t *testing.T) {
uuid := uuid.MustParse(dbtools.FixtureNemo.ID)
slug := serverservice.ServerCredentialTypeBMC
// Get the existing secret
secret, _, err := s.Client.GetCredential(ctx, uuid, slug)
assert.NoError(t, err)
assert.NotEqual(t, "mynewSecret!", secret.Password)
// Update the secret
_, err = s.Client.SetCredential(ctx, uuid, slug, "postgre", "mynewSecret!")
assert.NoError(t, err)
// Get the new secret
newSecret, _, err := s.Client.GetCredential(ctx, uuid, slug)
assert.NoError(t, err)
assert.Equal(t, "mynewSecret!", newSecret.Password)
// ensure timestamps were updated correctly
assert.Equal(t, secret.CreatedAt, newSecret.CreatedAt)
assert.NotEqual(t, newSecret.UpdatedAt, secret.UpdatedAt)
assert.Greater(t, newSecret.UpdatedAt, secret.UpdatedAt)
})
t.Run("fails if server uuid not found", func(t *testing.T) {
uuid := uuid.New()
slug := serverservice.ServerCredentialTypeBMC
// Make sure our server doesn't already have a BMC secret
_, err := s.Client.SetCredential(ctx, uuid, slug, "postgre", "secret")
assert.Error(t, err)
assert.Contains(t, err.Error(), "server not found")
})
t.Run("fails if secret type slug not found", func(t *testing.T) {
uuid := uuid.MustParse(dbtools.FixtureMarlin.ID)
slug := "notfound"
_, err := s.Client.SetCredential(ctx, uuid, slug, "postgre", "secret")
assert.Error(t, err)
assert.Contains(t, err.Error(), "not found")
})
}
func TestIntegrationServerSecretsDelete(t *testing.T) {
s := serverTest(t)
realClientTests(t, func(ctx context.Context, authToken string, respCode int, expectError bool) error {
s.Client.SetToken(authToken)
id := uuid.MustParse(dbtools.FixtureNemo.ID)
slug := serverservice.ServerCredentialTypeBMC
_, err := s.Client.DeleteCredential(ctx, id, slug)
if !expectError {
assert.NoError(t, err)
}
return err
})
}