2017-09-23 01:03:27 +02:00
|
|
|
package mocks
|
|
|
|
|
|
|
|
import (
|
|
|
|
"sync"
|
|
|
|
|
|
|
|
"github.com/mainflux/mainflux/manager"
|
|
|
|
)
|
|
|
|
|
|
|
|
var _ manager.UserRepository = (*userRepositoryMock)(nil)
|
|
|
|
|
|
|
|
type userRepositoryMock struct {
|
|
|
|
mu sync.Mutex
|
|
|
|
users map[string]manager.User
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewUserRepository creates in-memory user repository.
|
|
|
|
func NewUserRepository() manager.UserRepository {
|
|
|
|
return &userRepositoryMock{
|
|
|
|
users: make(map[string]manager.User),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-03-11 18:06:01 +01:00
|
|
|
func (urm *userRepositoryMock) Save(user manager.User) error {
|
|
|
|
urm.mu.Lock()
|
|
|
|
defer urm.mu.Unlock()
|
2017-09-23 01:03:27 +02:00
|
|
|
|
2018-03-11 18:06:01 +01:00
|
|
|
if _, ok := urm.users[user.Email]; ok {
|
2017-09-23 01:03:27 +02:00
|
|
|
return manager.ErrConflict
|
|
|
|
}
|
|
|
|
|
2018-03-11 18:06:01 +01:00
|
|
|
urm.users[user.Email] = user
|
2017-09-23 01:03:27 +02:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2018-03-11 18:06:01 +01:00
|
|
|
func (urm *userRepositoryMock) One(email string) (manager.User, error) {
|
|
|
|
urm.mu.Lock()
|
|
|
|
defer urm.mu.Unlock()
|
2017-09-23 01:03:27 +02:00
|
|
|
|
2018-03-11 18:06:01 +01:00
|
|
|
if val, ok := urm.users[email]; ok {
|
2017-09-23 01:03:27 +02:00
|
|
|
return val, nil
|
|
|
|
}
|
|
|
|
|
2017-10-01 01:07:37 +02:00
|
|
|
return manager.User{}, manager.ErrUnauthorizedAccess
|
2017-09-23 01:03:27 +02:00
|
|
|
}
|