feat: add private auth foundation
This commit is contained in:
57
backend/internal/auth/service_test.go
Normal file
57
backend/internal/auth/service_test.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/glebarez/sqlite"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gorm.io/gorm"
|
||||
"senlinai-agent/backend/internal/domain"
|
||||
)
|
||||
|
||||
func TestRegisterWithInviteCreatesUser(t *testing.T) {
|
||||
database := newTestDB(t)
|
||||
service := NewService(database, "test-secret")
|
||||
token, err := service.CreateInvite(1, "lead@example.com")
|
||||
require.NoError(t, err)
|
||||
|
||||
user, err := service.RegisterWithInvite(token, "lead@example.com", "Lead", "password123")
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "lead@example.com", user.Email)
|
||||
require.NotEmpty(t, user.PasswordHash)
|
||||
require.NotEqual(t, "password123", user.PasswordHash)
|
||||
}
|
||||
|
||||
func TestRegisterWithInviteRejectsWrongEmail(t *testing.T) {
|
||||
database := newTestDB(t)
|
||||
service := NewService(database, "test-secret")
|
||||
token, err := service.CreateInvite(1, "lead@example.com")
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = service.RegisterWithInvite(token, "other@example.com", "Other", "password123")
|
||||
|
||||
require.ErrorContains(t, err, "invite email mismatch")
|
||||
}
|
||||
|
||||
func TestLoginRejectsInvalidPassword(t *testing.T) {
|
||||
database := newTestDB(t)
|
||||
service := NewService(database, "test-secret")
|
||||
token, err := service.CreateInvite(1, "lead@example.com")
|
||||
require.NoError(t, err)
|
||||
_, err = service.RegisterWithInvite(token, "lead@example.com", "Lead", "password123")
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = service.Login("lead@example.com", "wrong-password")
|
||||
|
||||
require.ErrorContains(t, err, "invalid credentials")
|
||||
}
|
||||
|
||||
func newTestDB(t *testing.T) *gorm.DB {
|
||||
t.Helper()
|
||||
database, err := gorm.Open(sqlite.Open(fmt.Sprintf("file:%s?mode=memory&cache=shared", t.Name())), &gorm.Config{})
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, domain.AutoMigrate(database))
|
||||
return database
|
||||
}
|
||||
Reference in New Issue
Block a user