Skip to content

Commit 1f312e8

Browse files
authored
Merge pull request #197 from docker/refactor/move-testdummy
refactor: move dummy plugin
2 parents a42dca5 + 8981d38 commit 1f312e8

File tree

8 files changed

+36
-39
lines changed

8 files changed

+36
-39
lines changed

engine/adaptation_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ import (
1111
"github.com/stretchr/testify/require"
1212

1313
"github.com/docker/secrets-engine/client"
14+
"github.com/docker/secrets-engine/engine/internal/testdummy"
1415
"github.com/docker/secrets-engine/internal/api"
1516
"github.com/docker/secrets-engine/internal/secrets"
1617
"github.com/docker/secrets-engine/internal/testhelper"
17-
"github.com/docker/secrets-engine/internal/testhelper/dummy"
1818
p "github.com/docker/secrets-engine/plugin"
1919
)
2020

@@ -25,7 +25,7 @@ var (
2525

2626
func Test_SecretsEngine(t *testing.T) {
2727
t.Parallel()
28-
dir := dummy.CreateDummyPlugins(t, dummy.Plugins{Plugins: []dummy.PluginBehaviour{{Value: "foo"}, {Value: "bar"}}})
28+
dir := testdummy.CreateDummyPlugins(t, testdummy.Plugins{Plugins: []testdummy.PluginBehaviour{{Value: "foo"}, {Value: "bar"}}})
2929
socketPath := filepath.Join(t.TempDir(), "test.sock")
3030
e, err := New("test-engine", "test-version",
3131
WithSocketPath(socketPath),
@@ -102,15 +102,15 @@ func Test_SecretsEngine(t *testing.T) {
102102
assert.Contains(t, secret.Error, "secret not found")
103103
})
104104
t.Run("non-unique secrets", func(t *testing.T) {
105-
mockFromFoo, err := c.GetSecret(t.Context(), secrets.Request{ID: dummy.MockSecretID, Provider: "plugin-foo"})
105+
mockFromFoo, err := c.GetSecret(t.Context(), secrets.Request{ID: testdummy.MockSecretID, Provider: "plugin-foo"})
106106
assert.NoError(t, err)
107-
assert.Equal(t, dummy.MockSecretID.String(), mockFromFoo.ID.String())
108-
assert.Equal(t, dummy.MockSecretValue, string(mockFromFoo.Value))
107+
assert.Equal(t, testdummy.MockSecretID.String(), mockFromFoo.ID.String())
108+
assert.Equal(t, testdummy.MockSecretValue, string(mockFromFoo.Value))
109109
assert.Equal(t, "plugin-foo", mockFromFoo.Provider)
110-
mockFromBar, err := c.GetSecret(t.Context(), secrets.Request{ID: dummy.MockSecretID, Provider: "plugin-bar"})
110+
mockFromBar, err := c.GetSecret(t.Context(), secrets.Request{ID: testdummy.MockSecretID, Provider: "plugin-bar"})
111111
assert.NoError(t, err)
112-
assert.Equal(t, dummy.MockSecretID.String(), mockFromBar.ID.String())
113-
assert.Equal(t, dummy.MockSecretValue, string(mockFromBar.Value))
112+
assert.Equal(t, testdummy.MockSecretID.String(), mockFromBar.ID.String())
113+
assert.Equal(t, testdummy.MockSecretValue, string(mockFromBar.Value))
114114
assert.Equal(t, "plugin-bar", mockFromBar.Provider)
115115
})
116116
t.Run("existing secrets but wrong provider", func(t *testing.T) {
@@ -153,7 +153,7 @@ func TestWithEnginePluginsDisabled(t *testing.T) {
153153
}
154154
for _, test := range tests {
155155
t.Run(test.name, func(t *testing.T) {
156-
dir := dummy.CreateDummyPlugins(t, dummy.Plugins{Plugins: []dummy.PluginBehaviour{{Value: "foo"}}})
156+
dir := testdummy.CreateDummyPlugins(t, testdummy.Plugins{Plugins: []testdummy.PluginBehaviour{{Value: "foo"}}})
157157
socketPath := testhelper.RandomShortSocketName()
158158
options := []Option{
159159
WithSocketPath(socketPath),

engine/engine_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ import (
1313
"github.com/stretchr/testify/require"
1414

1515
"github.com/docker/secrets-engine/client"
16+
"github.com/docker/secrets-engine/engine/internal/testdummy"
1617
"github.com/docker/secrets-engine/internal/api"
1718
"github.com/docker/secrets-engine/internal/logging"
1819
"github.com/docker/secrets-engine/internal/secrets"
1920
"github.com/docker/secrets-engine/internal/testhelper"
20-
"github.com/docker/secrets-engine/internal/testhelper/dummy"
2121
)
2222

2323
type mockSlowRuntime struct {
@@ -208,8 +208,8 @@ func Test_discoverPlugins(t *testing.T) {
208208
func Test_newEngine(t *testing.T) {
209209
t.Parallel()
210210
t.Run("can retrieve secret from external plugin (no crashes)", func(t *testing.T) {
211-
plugins := []dummy.PluginBehaviour{{Value: "foo"}}
212-
dir := dummy.CreateDummyPlugins(t, dummy.Plugins{Plugins: plugins})
211+
plugins := []testdummy.PluginBehaviour{{Value: "foo"}}
212+
dir := testdummy.CreateDummyPlugins(t, testdummy.Plugins{Plugins: plugins})
213213
socketPath := testhelper.RandomShortSocketName()
214214
cfg := config{
215215
name: "test-engine",
@@ -230,8 +230,8 @@ func Test_newEngine(t *testing.T) {
230230
assert.Equal(t, "foo-value", string(foo.Value))
231231
})
232232
t.Run("external plugin crashes on second get secret request (no recovery -> plugins get removed)", func(t *testing.T) {
233-
plugins := []dummy.PluginBehaviour{{Value: "bar", CrashBehaviour: &dummy.CrashBehaviour{OnNthSecretRequest: 2, ExitCode: 1}}}
234-
dir := dummy.CreateDummyPlugins(t, dummy.Plugins{Plugins: plugins})
233+
plugins := []testdummy.PluginBehaviour{{Value: "bar", CrashBehaviour: &testdummy.CrashBehaviour{OnNthSecretRequest: 2, ExitCode: 1}}}
234+
dir := testdummy.CreateDummyPlugins(t, testdummy.Plugins{Plugins: plugins})
235235
socketPath := testhelper.RandomShortSocketName()
236236
cfg := config{
237237
name: "test-engine",
@@ -298,8 +298,8 @@ func Test_newEngine(t *testing.T) {
298298
assert.ErrorIs(t, err, secrets.ErrNotFound)
299299
})
300300
t.Run("external plugin crashes on second get secret request (recovery)", func(t *testing.T) {
301-
plugins := []dummy.PluginBehaviour{{Value: "bar", CrashBehaviour: &dummy.CrashBehaviour{OnNthSecretRequest: 2, ExitCode: 1}}}
302-
dir := dummy.CreateDummyPlugins(t, dummy.Plugins{Plugins: plugins})
301+
plugins := []testdummy.PluginBehaviour{{Value: "bar", CrashBehaviour: &testdummy.CrashBehaviour{OnNthSecretRequest: 2, ExitCode: 1}}}
302+
dir := testdummy.CreateDummyPlugins(t, testdummy.Plugins{Plugins: plugins})
303303
socketPath := testhelper.RandomShortSocketName()
304304
cfg := config{
305305
name: "test-engine",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dummy
1+
package testdummy
22

33
import (
44
"bytes"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dummy
1+
package testdummy
22

33
import (
44
"testing"
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//go:build !windows
22

3-
package dummy
3+
package testdummy
44

55
const suffix = ""
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//go:build windows
22

3-
package dummy
3+
package testdummy
44

55
const suffix = ".exe"

engine/plugin_test.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ import (
1616
"github.com/stretchr/testify/assert"
1717
"github.com/stretchr/testify/require"
1818

19+
"github.com/docker/secrets-engine/engine/internal/testdummy"
1920
"github.com/docker/secrets-engine/internal/api"
2021
"github.com/docker/secrets-engine/internal/ipc"
2122
"github.com/docker/secrets-engine/internal/logging"
2223
"github.com/docker/secrets-engine/internal/secrets"
2324
"github.com/docker/secrets-engine/internal/testhelper"
24-
"github.com/docker/secrets-engine/internal/testhelper/dummy"
2525
p "github.com/docker/secrets-engine/plugin"
2626
)
2727

@@ -72,9 +72,9 @@ func TestMain(m *testing.M) {
7272
if strings.HasPrefix(binaryName, "plugin") {
7373
// This allows tests to call the test binary as plugin by creating a symlink prefixed with "plugin-" to it.
7474
// We then based on the suffix in dummyPluginProcessFromBinaryName() set the behavior of the plugin.
75-
dummy.PluginProcessFromBinaryName(binaryName)
75+
testdummy.PluginProcessFromBinaryName(binaryName)
7676
} else if os.Getenv("RUN_AS_DUMMY_PLUGIN") != "" {
77-
dummy.PluginProcess(nil)
77+
testdummy.PluginProcess(nil)
7878
} else {
7979
os.Exit(m.Run())
8080
}
@@ -91,10 +91,10 @@ func Test_newPlugin(t *testing.T) {
9191
test: func(t *testing.T) {
9292
pattern := "foo-bar"
9393
version := api.MustNewVersion("v2")
94-
cmd, parseOutput := dummy.PluginCommand(t, dummy.PluginCfg{
94+
cmd, parseOutput := testdummy.PluginCommand(t, testdummy.PluginCfg{
9595
Version: version.String(),
9696
Pattern: pattern,
97-
Secrets: map[string]string{dummy.MockSecretID.String(): dummy.MockSecretValue},
97+
Secrets: map[string]string{testdummy.MockSecretID.String(): testdummy.MockSecretValue},
9898
})
9999
p, err := newLaunchedPlugin(testhelper.TestLogger(t), cmd, runtimeCfg{
100100
name: pluginNameFromTestName(t),
@@ -104,15 +104,15 @@ func Test_newPlugin(t *testing.T) {
104104
assert.Equal(t, pluginNameFromTestName(t), p.Name().String())
105105
assert.Equal(t, version.String(), p.Version().String())
106106
assert.Equal(t, pattern, p.Pattern().String())
107-
s, err := p.GetSecret(context.Background(), secrets.Request{ID: dummy.MockSecretID})
107+
s, err := p.GetSecret(context.Background(), secrets.Request{ID: testdummy.MockSecretID})
108108
assert.NoError(t, err)
109-
assert.Equal(t, dummy.MockSecretValue, string(s.Value))
109+
assert.Equal(t, testdummy.MockSecretValue, string(s.Value))
110110
assert.NoError(t, p.Close())
111111
assert.NoError(t, testhelper.WaitForClosedWithTimeout(p.Closed()))
112112
r, err := parseOutput()
113113
require.NoError(t, err)
114114
require.Equal(t, 1, len(r.GetSecret))
115-
assert.Equal(t, dummy.MockSecretID.String(), r.GetSecret[0])
115+
assert.Equal(t, testdummy.MockSecretID.String(), r.GetSecret[0])
116116

117117
t.Logf("plugin binary output:\n%s", r.Log)
118118
},
@@ -121,7 +121,7 @@ func Test_newPlugin(t *testing.T) {
121121
name: "plugin returns no secret but an error",
122122
test: func(t *testing.T) {
123123
errGetSecret := "you do not get my secret"
124-
cmd, parseOutput := dummy.PluginCommand(t, dummy.PluginCfg{
124+
cmd, parseOutput := testdummy.PluginCommand(t, testdummy.PluginCfg{
125125
Version: "v1",
126126
Pattern: "foo-bar",
127127
ErrGetSecret: errGetSecret,
@@ -131,7 +131,7 @@ func Test_newPlugin(t *testing.T) {
131131
out: pluginCfgOut{engineName: mockEngineName, engineVersion: mockEngineVersion, requestTimeout: 30 * time.Second},
132132
})
133133
assert.NoError(t, err)
134-
_, err = p.GetSecret(context.Background(), secrets.Request{ID: dummy.MockSecretID})
134+
_, err = p.GetSecret(context.Background(), secrets.Request{ID: testdummy.MockSecretID})
135135
assert.ErrorContains(t, err, errGetSecret)
136136
assert.NoError(t, p.Close())
137137
r, err := parseOutput()
@@ -145,7 +145,7 @@ func Test_newPlugin(t *testing.T) {
145145
// TODO(investigate): On windows cmd.Wait() returning STATUS_CONTROL_C_EXIT is very unreliable through this test.
146146
name: "plugin ignoring SIGINT does not break the runtime",
147147
test: func(t *testing.T) {
148-
cmd, _ := dummy.PluginCommand(t, dummy.PluginCfg{
148+
cmd, _ := testdummy.PluginCommand(t, testdummy.PluginCfg{
149149
Version: "v1",
150150
Pattern: "foo-bar",
151151
IgnoreSigint: true,
@@ -162,7 +162,7 @@ func Test_newPlugin(t *testing.T) {
162162
{
163163
name: "plugin process crashes unexpectedly",
164164
test: func(t *testing.T) {
165-
cmd, parseOutput := dummy.PluginCommand(t, dummy.PluginCfg{
165+
cmd, parseOutput := testdummy.PluginCommand(t, testdummy.PluginCfg{
166166
Version: "v1",
167167
Pattern: "foo-bar",
168168
IgnoreSigint: true,
@@ -183,11 +183,11 @@ func Test_newPlugin(t *testing.T) {
183183
{
184184
name: "plugin process exists unexpectedly",
185185
test: func(t *testing.T) {
186-
cmd, parseOutput := dummy.PluginCommand(t, dummy.PluginCfg{
186+
cmd, parseOutput := testdummy.PluginCommand(t, testdummy.PluginCfg{
187187
Version: "v2",
188188
Pattern: "foo-bar",
189-
Secrets: map[string]string{dummy.MockSecretID.String(): dummy.MockSecretValue},
190-
CrashBehaviour: &dummy.CrashBehaviour{
189+
Secrets: map[string]string{testdummy.MockSecretID.String(): testdummy.MockSecretValue},
190+
CrashBehaviour: &testdummy.CrashBehaviour{
191191
OnNthSecretRequest: 1,
192192
ExitCode: 0,
193193
},
@@ -197,7 +197,7 @@ func Test_newPlugin(t *testing.T) {
197197
out: pluginCfgOut{engineName: mockEngineName, engineVersion: mockEngineVersion, requestTimeout: 30 * time.Second},
198198
})
199199
assert.NoError(t, err)
200-
_, err = p.GetSecret(context.Background(), secrets.Request{ID: dummy.MockSecretID})
200+
_, err = p.GetSecret(context.Background(), secrets.Request{ID: testdummy.MockSecretID})
201201
assert.ErrorContains(t, err, "unavailable: unexpected EOF")
202202
assert.NoError(t, testhelper.WaitForClosedWithTimeout(p.Closed()))
203203
assert.ErrorContains(t, p.Close(), "stopped unexpectedly")

go.mod

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@ module github.com/docker/secrets-engine
22

33
go 1.24.3
44

5-
replace github.com/docker/secrets-engine/plugin => ./plugin
6-
75
require (
86
connectrpc.com/connect v1.18.1
97
github.com/containerd/nri v0.9.0
108
github.com/docker/cli v28.3.3+incompatible
11-
github.com/docker/secrets-engine/plugin v0.0.0-00010101000000-000000000000
129
github.com/hashicorp/yamux v0.1.2
1310
github.com/sirupsen/logrus v1.9.3
1411
github.com/spf13/cobra v1.9.1

0 commit comments

Comments
 (0)