master
go 53 lines 1.73 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package secretstore_test
4
5 import (
6 "context"
7 "testing"
8
9 "github.com/netdata/netdata/go/plugins/plugin/agent/secrets/secretstore"
10 "github.com/netdata/netdata/go/plugins/plugin/agent/secrets/secretstore/backends"
11 "github.com/stretchr/testify/assert"
12 "github.com/stretchr/testify/require"
13 )
14
15 func TestRuntimeResolverResolveErrors(t *testing.T) {
16 enabledSvc := secretstore.NewService(backends.Creators()...)
17 err := enabledSvc.Add(context.Background(), newStoreFromConfig(t, enabledSvc, secretstore.KindVault, testSingleVaultConfig()))
18 require.NoError(t, err)
19
20 tests := map[string]struct {
21 snapshot *secretstore.Snapshot
22 ref string
23 original string
24 wantErrContains string
25 }{
26 "invalid store ref format": {
27 snapshot: enabledSvc.Capture(),
28 ref: "invalid",
29 original: "${store:invalid}",
30 wantErrContains: "store reference must be in format",
31 },
32 "store not configured": {
33 snapshot: secretstore.NewService(backends.Creators()...).Capture(),
34 ref: "vault:missing:secret/data/app#password",
35 original: "${store:vault:missing:secret/data/app#password}",
36 wantErrContains: "secretstore 'vault:missing' is not configured",
37 },
38 "bad vault operand": {
39 snapshot: enabledSvc.Capture(),
40 ref: "vault:vault_prod:secret/data/app",
41 original: "${store:vault:vault_prod:secret/data/app}",
42 wantErrContains: "operand must be in format 'path#key'",
43 },
44 }
45
46 for name, tc := range tests {
47 t.Run(name, func(t *testing.T) {
48 _, err := enabledSvc.Resolve(t.Context(), tc.snapshot, tc.ref, tc.original)
49 require.Error(t, err)
50 assert.Contains(t, err.Error(), tc.wantErrContains)
51 })
52 }
53 }