Skip to content

Commit 7982cc4

Browse files
committed
store: mock store filter implementation
Signed-off-by: Alano Terblanche <18033717+Benehiko@users.noreply.github.com>
1 parent 6843eb6 commit 7982cc4

1 file changed

Lines changed: 18 additions & 7 deletions

File tree

store/mocks/mock_store.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
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.
3333
func (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) {
4645
func (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.
5651
func (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+
6576
var _ store.Store = &MockStore{}

0 commit comments

Comments
 (0)