added test (#5)

Reviewed-on: phoenix/textsender-auth#5
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
phoenix
2025-09-12 18:30:15 +00:00
committed by phoenix
parent 6f819eff16
commit 976a017b4f
9 changed files with 319 additions and 10 deletions
+114
View File
@@ -0,0 +1,114 @@
package handler
import (
"context"
"errors"
"sync"
"github.com/google/uuid"
"git.kundeng.us/phoenix/textsender-auth/internal/model"
)
type MockUserStore struct {
Users map[uuid.UUID]*model.User
UsersByUsername map[string]*model.User
mu sync.RWMutex
Error error // Optional: simulate errors
}
func NewMockUserStore() *MockUserStore {
return &MockUserStore{
Users: make(map[uuid.UUID]*model.User),
UsersByUsername: make(map[string]*model.User),
}
}
func (m *MockUserStore) CreateUser(ctx context.Context, user *model.User) error {
m.mu.Lock()
defer m.mu.Unlock()
if m.Error != nil {
return m.Error
}
if user.Id == uuid.Nil {
user.Id = uuid.New()
}
if _, exists := m.UsersByUsername[user.Username]; exists {
return errors.New("User with email already exists")
}
m.Users[user.Id] = user
m.UsersByUsername[user.Username] = user
return nil
}
func (m *MockUserStore) GetUserByID(ctx context.Context, id uuid.UUID) (*model.User, error) {
m.mu.Lock()
defer m.mu.Unlock()
if m.Error != nil {
return nil, m.Error
}
if m.Error != nil {
return nil, m.Error
}
user, exists := m.Users[id]
if !exists {
return nil, errors.New("User not found")
}
return user, nil
}
func (m *MockUserStore) GetUserByUsername(ctx context.Context, username string) (*model.User, error) {
m.mu.Lock()
defer m.mu.Unlock()
if m.Error != nil {
return nil, m.Error
}
user, exists := m.UsersByUsername[username]
if !exists {
return nil, errors.New("User not found")
}
return user, nil
}
func (m *MockUserStore) GetAllUsers(ctx context.Context) ([]*model.User, error) {
m.mu.Lock()
defer m.mu.Unlock()
if m.Error != nil {
return nil, m.Error
}
users := make([]*model.User, 0, len(m.Users))
for _, user := range m.Users {
users = append(users, user)
}
return users, nil
}
func (m *MockUserStore) UserExists(ctx context.Context, username string) (bool, error) {
m.mu.Lock()
defer m.mu.Unlock()
if m.Error != nil {
return false, m.Error
}
_, exists := m.UsersByUsername[username]
if !exists {
return exists, errors.New("User not found")
}
return exists, nil
}