MCPcopy Create free account
hub / github.com/docker/secrets-engine / Test_SetCommand

Function Test_SetCommand

plugins/pass/commands/command_test.go:44–125  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

42}
43
44func Test_SetCommand(t *testing.T) {
45 t.Parallel()
46 t.Run("ok", func(t *testing.T) {
47 mock := teststore.NewMockStore()
48 out, err := execute(t, SetCommand(), mock, "foo=bar=bar=bar")
49 assert.NoError(t, err)
50 assert.Empty(t, out)
51 assertStoredValue(t, mock, "bar=bar=bar")
52 })
53 t.Run("from STDIN", func(t *testing.T) {
54 mock := teststore.NewMockStore()
55 out, err := executeWithStdin(t, SetCommand(), mock, "my\nmultiline\nvalue", "foo")
56 assert.NoError(t, err)
57 assert.Empty(t, out)
58 assertStoredValue(t, mock, "my\nmultiline\nvalue")
59 })
60 t.Run("with --metadata flag", func(t *testing.T) {
61 mock := teststore.NewMockStore()
62 out, err := execute(t, SetCommand(), mock, "foo=bar", "--metadata", "name=bob", "--metadata", "expiry=2027-03-01")
63 assert.NoError(t, err)
64 assert.Empty(t, out)
65 assertStoredValue(t, mock, "bar")
66 assertStoredMetadata(t, mock, map[string]string{"name": "bob", "expiry": "2027-03-01"})
67 })
68 t.Run("from STDIN JSON with value and metadata", func(t *testing.T) {
69 mock := teststore.NewMockStore()
70 out, err := executeWithStdin(t, SetCommand(), mock, `{"secret":"bar","metadata":{"name":"bob"}}`, "foo")
71 assert.NoError(t, err)
72 assert.Empty(t, out)
73 assertStoredValue(t, mock, "bar")
74 assertStoredMetadata(t, mock, map[string]string{"name": "bob"})
75 })
76 t.Run("from STDIN JSON merged with --metadata flag wins on collision", func(t *testing.T) {
77 mock := teststore.NewMockStore()
78 out, err := executeWithStdin(t, SetCommand(), mock, `{"secret":"bar","metadata":{"name":"bob","extra":"thing"}}`, "foo", "--metadata", "name=alice")
79 assert.NoError(t, err)
80 assert.Empty(t, out)
81 assertStoredValue(t, mock, "bar")
82 assertStoredMetadata(t, mock, map[string]string{"name": "alice", "extra": "thing"})
83 })
84 t.Run("invalid --metadata flag (no =)", func(t *testing.T) {
85 mock := teststore.NewMockStore()
86 _, err := execute(t, SetCommand(), mock, "foo=bar", "--metadata", "invalid")
87 assert.ErrorContains(t, err, "invalid metadata pair (expected key=value): invalid")
88 })
89 t.Run("store error", func(t *testing.T) {
90 errSave := errors.New("save error")
91 mock := teststore.NewMockStore(teststore.WithStoreSaveErr(errSave))
92 out, err := execute(t, SetCommand(), mock, "foo=bar")
93 assert.ErrorIs(t, err, errSave)
94 assert.Equal(t, "Error: "+errSave.Error()+"\n", out)
95 })
96 t.Run("invalid id", func(t *testing.T) {
97 errSave := errors.New("save error")
98 mock := teststore.NewMockStore(teststore.WithStoreSaveErr(errSave))
99 out, err := execute(t, SetCommand(), mock, "/foo=bar")
100 errInvalidID := secrets.ErrInvalidID{ID: "/foo"}
101 assert.ErrorIs(t, err, errInvalidID)

Callers

nothing calls this directly

Calls 8

ErrorMethod · 0.95
executeFunction · 0.85
SetCommandFunction · 0.85
assertStoredValueFunction · 0.85
executeWithStdinFunction · 0.85
assertStoredMetadataFunction · 0.85
RunMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected