55 "maps"
66 "sync"
77
8+ "github.com/docker/secrets-engine/internal/secrets"
89 "github.com/docker/secrets-engine/store"
910)
1011
@@ -19,7 +20,6 @@ func (m *MockStore) init() {
1920 }
2021}
2122
22- // Delete implements Store.
2323func (m * MockStore ) Delete (_ context.Context , id store.ID ) error {
2424 m .lock .Lock ()
2525 defer m .lock .Unlock ()
@@ -29,7 +29,6 @@ func (m *MockStore) Delete(_ context.Context, id store.ID) error {
2929 return nil
3030}
3131
32- // Get implements Store.
3332func (m * MockStore ) Get (_ context.Context , id store.ID ) (store.Secret , error ) {
3433 m .lock .RLock ()
3534 defer m .lock .RUnlock ()
@@ -42,17 +41,13 @@ func (m *MockStore) Get(_ context.Context, id store.ID) (store.Secret, error) {
4241 return secret , nil
4342}
4443
45- // GetAll implements Store.
4644func (m * MockStore ) GetAllMetadata (_ context.Context ) (map [string ]store.Secret , error ) {
4745 m .lock .RLock ()
4846 defer m .lock .RUnlock ()
4947 m .init ()
50-
51- // Return a copy of the store to avoid concurrent map read/write issues.
5248 return maps .Clone (m .store ), nil
5349}
5450
55- // Save implements Store.
5651func (m * MockStore ) Save (_ context.Context , id store.ID , secret store.Secret ) error {
5752 m .lock .Lock ()
5853 defer m .lock .Unlock ()
@@ -62,4 +57,22 @@ func (m *MockStore) Save(_ context.Context, id store.ID, secret store.Secret) er
6257 return nil
6358}
6459
60+ func (m * MockStore ) Filter (_ context.Context , pattern store.Pattern ) (map [string ]store.Secret , error ) {
61+ m .lock .Lock ()
62+ defer m .lock .Unlock ()
63+ m .init ()
64+
65+ filtered := make (map [string ]store.Secret )
66+ for id , f := range m .store {
67+ p , err := secrets .ParseID (id )
68+ if err != nil {
69+ continue
70+ }
71+ if pattern .Match (p ) {
72+ filtered [p .String ()] = f
73+ }
74+ }
75+ return filtered , nil
76+ }
77+
6578var _ store.Store = & MockStore {}
0 commit comments