package test import ( "github.com/docker/cli/cli/config/credentials" "github.com/docker/docker/api/types" ) // FakeStore implements a credentials.Store that only acts as an in memory map type FakeStore struct { store map[string]types.AuthConfig eraseFunc func(serverAddress string) error getFunc func(serverAddress string) (types.AuthConfig, error) getAllFunc func() (map[string]types.AuthConfig, error) storeFunc func(authConfig types.AuthConfig) error } // NewFakeStore creates a new file credentials store. func NewFakeStore() credentials.Store { return &FakeStore{store: map[string]types.AuthConfig{}} } // SetStore is used to overrides Set function func (c *FakeStore) SetStore(store map[string]types.AuthConfig) { c.store = store } // SetEraseFunc is used to overrides Erase function func (c *FakeStore) SetEraseFunc(eraseFunc func(string) error) { c.eraseFunc = eraseFunc } // SetGetFunc is used to overrides Get function func (c *FakeStore) SetGetFunc(getFunc func(string) (types.AuthConfig, error)) { c.getFunc = getFunc } // SetGetAllFunc is used to overrides GetAll function func (c *FakeStore) SetGetAllFunc(getAllFunc func() (map[string]types.AuthConfig, error)) { c.getAllFunc = getAllFunc } // SetStoreFunc is used to override Store function func (c *FakeStore) SetStoreFunc(storeFunc func(types.AuthConfig) error) { c.storeFunc = storeFunc } // Erase removes the given credentials from the map store func (c *FakeStore) Erase(serverAddress string) error { if c.eraseFunc != nil { return c.eraseFunc(serverAddress) } delete(c.store, serverAddress) return nil } // Get retrieves credentials for a specific server from the map store. func (c *FakeStore) Get(serverAddress string) (types.AuthConfig, error) { if c.getFunc != nil { return c.getFunc(serverAddress) } return c.store[serverAddress], nil } // GetAll returns the key value pairs of ServerAddress => Username func (c *FakeStore) GetAll() (map[string]types.AuthConfig, error) { if c.getAllFunc != nil { return c.getAllFunc() } return c.store, nil } // Store saves the given credentials in the map store. func (c *FakeStore) Store(authConfig types.AuthConfig) error { if c.storeFunc != nil { return c.storeFunc(authConfig) } c.store[authConfig.ServerAddress] = authConfig return nil }