Skip to content

Commit 99ec224

Browse files
committed
store: mock store filter implementation
Signed-off-by: Alano Terblanche <18033717+Benehiko@users.noreply.github.com>
1 parent 916b40e commit 99ec224

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

store/mocks/mock_store.go

Lines changed: 19 additions & 6 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

@@ -19,7 +20,6 @@ func (m *MockStore) init() {
1920
}
2021
}
2122

22-
// Delete implements Store.
2323
func (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.
3332
func (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.
4644
func (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.
5651
func (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+
6578
var _ store.Store = &MockStore{}

0 commit comments

Comments
 (0)