@@ -29,12 +29,37 @@ import (
2929 "google.golang.org/protobuf/proto"
3030
3131 "github.com/docker/secrets-engine/x/api"
32+ healthv1 "github.com/docker/secrets-engine/x/api/health/v1"
33+ "github.com/docker/secrets-engine/x/api/health/v1/healthv1connect"
3234 resolverv1 "github.com/docker/secrets-engine/x/api/resolver/v1"
3335 "github.com/docker/secrets-engine/x/api/resolver/v1/resolverv1connect"
3436 "github.com/docker/secrets-engine/x/secrets"
3537 "github.com/docker/secrets-engine/x/testhelper"
3638)
3739
40+ var _ healthv1connect.VersionServiceHandler = & mockVersionService {}
41+
42+ type mockVersionService struct {
43+ version string
44+ date string
45+ commitHash string
46+ }
47+
48+ func (m mockVersionService ) GetVersion (_ context.Context , _ * connect.Request [healthv1.GetVersionRequest ]) (* connect.Response [healthv1.GetVersionResponse ], error ) {
49+ return connect .NewResponse (healthv1.GetVersionResponse_builder {
50+ Version : proto .String (m .version ),
51+ Date : proto .String (m .date ),
52+ CommitHash : proto .String (m .commitHash ),
53+ }.Build ()), nil
54+ }
55+
56+ func mockVersionEngine (t * testing.T , version , date , commitHash string ) string {
57+ t .Helper ()
58+ socketPath := testhelper .RandomShortSocketName ()
59+ muxServer (t , socketPath , []handler {wrapHandler (healthv1connect .NewVersionServiceHandler (& mockVersionService {version : version , date : date , commitHash : commitHash }))})
60+ return socketPath
61+ }
62+
3863var _ resolverv1connect.ListServiceHandler = & mockPluginsList {}
3964
4065type mockPluginsList struct {
@@ -169,6 +194,27 @@ func Test_ListPlugins(t *testing.T) {
169194 })
170195}
171196
197+ func Test_Version (t * testing.T ) {
198+ t .Parallel ()
199+ t .Run ("returns version info" , func (t * testing.T ) {
200+ socket := mockVersionEngine (t , "v1.2.3" , "2026-03-26" , "abc1234" )
201+ c , err := New (WithSocketPath (socket ))
202+ require .NoError (t , err )
203+ dv , err := c .Version (t .Context ())
204+ require .NoError (t , err )
205+ assert .Equal (t , "v1.2.3" , dv .Version .String ())
206+ assert .Equal (t , "2026-03-26" , dv .Date )
207+ assert .Equal (t , "abc1234" , dv .CommitHash )
208+ })
209+ t .Run ("unavailable daemon" , func (t * testing.T ) {
210+ socketPath := testhelper .RandomShortSocketName ()
211+ c , err := New (WithSocketPath (socketPath ))
212+ require .NoError (t , err )
213+ _ , err = c .Version (t .Context ())
214+ require .ErrorIs (t , err , ErrSecretsEngineNotAvailable )
215+ })
216+ }
217+
172218func TestSecretsEngineUnavailable (t * testing.T ) {
173219 socketPath := testhelper .RandomShortSocketName ()
174220 client , err := New (WithSocketPath (socketPath ))
0 commit comments