@@ -31,8 +31,8 @@ import (
3131 "github.com/docker/secrets-engine/x/api"
3232 healthv1 "github.com/docker/secrets-engine/x/api/health/v1"
3333 "github.com/docker/secrets-engine/x/api/health/v1/healthv1connect"
34- resolverv1 "github.com/docker/secrets-engine/x/api/resolver /v1"
35- "github.com/docker/secrets-engine/x/api/resolver /v1/resolverv1connect "
34+ pluginsv1 "github.com/docker/secrets-engine/x/api/plugins /v1"
35+ "github.com/docker/secrets-engine/x/api/plugins /v1/pluginsv1connect "
3636 "github.com/docker/secrets-engine/x/secrets"
3737 "github.com/docker/secrets-engine/x/testhelper"
3838)
@@ -60,14 +60,14 @@ func mockVersionEngine(t *testing.T, version, date, commitHash string) string {
6060 return socketPath
6161}
6262
63- var _ resolverv1connect. ListServiceHandler = & mockPluginsList {}
63+ var _ pluginsv1connect. PluginManagementServiceHandler = & mockPluginsList {}
6464
6565type mockPluginsList struct {
6666 list []PluginInfo
6767}
6868
69- func (m mockPluginsList ) ListPlugins (context.Context , * connect.Request [resolverv1 .ListPluginsRequest ]) (* connect.Response [resolverv1 .ListPluginsResponse ], error ) {
70- var plugins []* resolverv1 .Plugin
69+ func (m mockPluginsList ) ListPlugins (_ context.Context , _ * connect.Request [pluginsv1 .ListPluginsRequest ]) (* connect.Response [pluginsv1 .ListPluginsResponse ], error ) {
70+ var plugins []* pluginsv1 .Plugin
7171 for _ , plugin := range m .list {
7272 var name string
7373 if plugin .Name != nil {
@@ -77,23 +77,32 @@ func (m mockPluginsList) ListPlugins(context.Context, *connect.Request[resolverv
7777 if plugin .Version != nil {
7878 version = plugin .Version .String ()
7979 }
80- var pattern string
81- if plugin .Pattern != nil {
82- pattern = plugin .Pattern .String ()
83- }
84- plugins = append (plugins , resolverv1.Plugin_builder {
80+ b := pluginsv1.Plugin_builder {
8581 Name : proto .String (name ),
8682 Version : proto .String (version ),
87- Pattern : proto .String (pattern ),
8883 External : proto .Bool (plugin .External ),
8984 Configurable : proto .Bool (plugin .Configurable ),
90- }.Build ())
85+ }
86+ if plugin .SecretsProvider != nil {
87+ b .SecretsProvider = pluginsv1.SecretsProvider_builder {
88+ Pattern : proto .String (plugin .SecretsProvider .Pattern .String ()),
89+ }.Build ()
90+ }
91+ plugins = append (plugins , b .Build ())
9192 }
92- return connect .NewResponse (resolverv1 .ListPluginsResponse_builder {
93+ return connect .NewResponse (pluginsv1 .ListPluginsResponse_builder {
9394 Plugins : plugins ,
9495 }.Build ()), nil
9596}
9697
98+ func (m mockPluginsList ) EnablePlugin (_ context.Context , _ * connect.Request [pluginsv1.EnablePluginRequest ]) (* connect.Response [pluginsv1.EnablePluginResponse ], error ) {
99+ return connect .NewResponse (pluginsv1.EnablePluginResponse_builder {}.Build ()), nil
100+ }
101+
102+ func (m mockPluginsList ) DisablePlugin (_ context.Context , _ * connect.Request [pluginsv1.DisablePluginRequest ]) (* connect.Response [pluginsv1.DisablePluginResponse ], error ) {
103+ return connect .NewResponse (pluginsv1.DisablePluginResponse_builder {}.Build ()), nil
104+ }
105+
97106type handler struct {
98107 pattern string
99108 handler http.Handler
@@ -133,7 +142,7 @@ func wrapHandler(pattern string, h http.Handler) handler {
133142func mockListPluginsEngine (t * testing.T , plugins []PluginInfo ) string {
134143 t .Helper ()
135144 socketPath := testhelper .RandomShortSocketName ()
136- muxServer (t , socketPath , []handler {wrapHandler (resolverv1connect . NewListServiceHandler (& mockPluginsList {list : plugins }))})
145+ muxServer (t , socketPath , []handler {wrapHandler (pluginsv1connect . NewPluginManagementServiceHandler (& mockPluginsList {list : plugins }))})
137146 return socketPath
138147}
139148
@@ -142,22 +151,24 @@ func Test_ListPlugins(t *testing.T) {
142151 t .Run ("external and internal configurable plugins" , func (t * testing.T ) {
143152 plugins := []PluginInfo {
144153 {
145- Name : api .MustNewName ("foo" ),
146- Version : api .MustNewVersion ("v1" ),
147- Pattern : secrets .MustParsePattern ("**" ),
148- Configurable : true ,
154+ Name : api .MustNewName ("foo" ),
155+ Version : api .MustNewVersion ("v1" ),
156+ SecretsProvider : & SecretsProviderMetadata { Pattern : secrets .MustParsePattern ("**" )} ,
157+ Configurable : true ,
149158 },
150159 {
151- Name : api .MustNewName ("bar" ),
152- Version : api .MustNewVersion ("v1" ),
153- Pattern : secrets .MustParsePattern ("**" ),
154- External : true ,
160+ Name : api .MustNewName ("bar" ),
161+ Version : api .MustNewVersion ("v1" ),
162+ SecretsProvider : & SecretsProviderMetadata { Pattern : secrets .MustParsePattern ("**" )} ,
163+ External : true ,
155164 },
156165 }
157166 socket := mockListPluginsEngine (t , plugins )
158167 client , err := New (WithSocketPath (socket ))
159168 require .NoError (t , err )
160- result , err := client .ListPlugins (t .Context ())
169+ m , err := PluginManagementFromClient (client )
170+ require .NoError (t , err )
171+ result , err := m .ListPlugins (t .Context ())
161172 require .NoError (t , err )
162173 assert .Equal (t , plugins , result )
163174 })
@@ -166,7 +177,9 @@ func Test_ListPlugins(t *testing.T) {
166177 socket := mockListPluginsEngine (t , plugins )
167178 client , err := New (WithSocketPath (socket ))
168179 require .NoError (t , err )
169- result , err := client .ListPlugins (t .Context ())
180+ m , err := PluginManagementFromClient (client )
181+ require .NoError (t , err )
182+ result , err := m .ListPlugins (t .Context ())
170183 require .NoError (t , err )
171184 assert .Empty (t , result )
172185 })
@@ -176,21 +189,24 @@ func Test_ListPlugins(t *testing.T) {
176189 Name : api .MustNewName ("foo" ),
177190 },
178191 {
179- Name : api .MustNewName ("bar" ),
180- Version : api .MustNewVersion ("v1" ),
181- Pattern : secrets .MustParsePattern ("**" ),
192+ Name : api .MustNewName ("bar" ),
193+ Version : api .MustNewVersion ("v1" ),
194+ SecretsProvider : & SecretsProviderMetadata { Pattern : secrets .MustParsePattern ("**" )} ,
182195 },
183196 }
184197 socket := mockListPluginsEngine (t , plugins )
185198 client , err := New (WithSocketPath (socket ))
186199 require .NoError (t , err )
187- result , err := client . ListPlugins ( t . Context () )
200+ m , err := PluginManagementFromClient ( client )
188201 require .NoError (t , err )
202+ result , err := m .ListPlugins (t .Context ())
203+ require .NoError (t , err )
204+
189205 assert .Equal (t , []PluginInfo {
190206 {
191- Name : api .MustNewName ("bar" ),
192- Version : api .MustNewVersion ("v1" ),
193- Pattern : secrets .MustParsePattern ("**" ),
207+ Name : api .MustNewName ("bar" ),
208+ Version : api .MustNewVersion ("v1" ),
209+ SecretsProvider : & SecretsProviderMetadata { Pattern : secrets .MustParsePattern ("**" )} ,
194210 },
195211 }, result )
196212 })
@@ -221,7 +237,9 @@ func TestSecretsEngineUnavailable(t *testing.T) {
221237 socketPath := testhelper .RandomShortSocketName ()
222238 client , err := New (WithSocketPath (socketPath ))
223239 require .NoError (t , err )
224- _ , err = client .ListPlugins (t .Context ())
240+ m , err := PluginManagementFromClient (client )
241+ require .NoError (t , err )
242+ _ , err = m .ListPlugins (t .Context ())
225243 require .ErrorIs (t , err , ErrSecretsEngineNotAvailable )
226244 _ , err = client .GetSecrets (t .Context (), secrets .MustParsePattern ("**" ))
227245 require .ErrorIs (t , err , ErrSecretsEngineNotAvailable )
0 commit comments