55 "maps"
66 "sync"
77
8+ "github.com/docker/secrets-engine/internal/secrets"
89 "github.com/docker/secrets-engine/store"
910)
1011
@@ -29,11 +30,9 @@ func (m *MockStore) Delete(_ context.Context, id store.ID) error {
2930 return nil
3031}
3132
32- // Get implements Store.
3333func (m * MockStore ) Get (_ context.Context , id store.ID ) (store.Secret , error ) {
3434 m .lock .RLock ()
3535 defer m .lock .RUnlock ()
36- m .init ()
3736
3837 secret , exists := m .store [id .String ()]
3938 if ! exists {
@@ -46,20 +45,32 @@ func (m *MockStore) Get(_ context.Context, id store.ID) (store.Secret, error) {
4645func (m * MockStore ) GetAllMetadata (_ context.Context ) (map [string ]store.Secret , error ) {
4746 m .lock .RLock ()
4847 defer m .lock .RUnlock ()
49- 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 ()
59- m .init ()
6054
6155 m .store [id .String ()] = secret
6256 return nil
6357}
6458
59+ func (m * MockStore ) Filter (_ context.Context , pattern store.Pattern ) (map [string ]store.Secret , error ) {
60+ m .lock .Lock ()
61+ defer m .lock .Unlock ()
62+
63+ filtered := make (map [string ]store.Secret )
64+ for id , f := range m .store {
65+ p , err := secrets .ParseID (id )
66+ if err != nil {
67+ continue
68+ }
69+ if pattern .Match (p ) {
70+ filtered [p .String ()] = f
71+ }
72+ }
73+ return filtered , nil
74+ }
75+
6576var _ store.Store = & MockStore {}
0 commit comments