57 lines
1.8 KiB
Go
57 lines
1.8 KiB
Go
package service
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"infinite-canvas/backend/internal/model"
|
|
"infinite-canvas/backend/internal/repository"
|
|
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func TestPublicAuthUserIncludesLinuxDOIdentity(t *testing.T) {
|
|
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := db.AutoMigrate(&model.User{}, &model.UserIdentity{}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
user := model.User{ID: "user-1", Username: "canvas-user", DisplayName: "Canvas User", Role: model.UserRoleUser, Status: model.UserStatusActive}
|
|
identity := model.UserIdentity{ID: "identity-1", UserID: user.ID, Provider: "linuxdo", Subject: "123456", ProviderUsername: "linux-user", AvatarURL: "https://example.com/avatar.png"}
|
|
if err := db.Create(&user).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := db.Create(&identity).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
result, err := (&Service{repo: repository.New(db)}).PublicAuthUser(&user)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if result.AvatarURL != identity.AvatarURL || result.IdentityProvider != "linuxdo" || result.IdentityID != identity.Subject || result.IdentityUsername != identity.ProviderUsername {
|
|
t.Fatalf("PublicAuthUser() = %#v", result)
|
|
}
|
|
}
|
|
|
|
func TestPublicAuthUserKeepsLocalUserWithoutIdentity(t *testing.T) {
|
|
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := db.AutoMigrate(&model.UserIdentity{}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
user := model.User{ID: "user-1", Username: "local-user", DisplayName: "Local User"}
|
|
|
|
result, err := (&Service{repo: repository.New(db)}).PublicAuthUser(&user)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if result.Username != user.Username || result.AvatarURL != "" || result.IdentityProvider != "" || result.IdentityID != "" {
|
|
t.Fatalf("PublicAuthUser() = %#v", result)
|
|
}
|
|
}
|