修复:管理员默认商户与账户设置
This commit is contained in:
@@ -227,7 +227,7 @@ func TestUserServiceCannotDeleteOrDisableLastAdmin(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestPlatformAdminCRUDDoesNotCreateMerchantMembership(t *testing.T) {
|
||||
func TestPlatformAdminCRUDUsesHiddenSelfMerchantContext(t *testing.T) {
|
||||
db := newServiceTestDB(t)
|
||||
svc := NewUserService(db, NewTenantService(db))
|
||||
actor, err := svc.CreatePlatformAdmin("existing-admin", "password123", "现有管理员")
|
||||
@@ -242,8 +242,15 @@ func TestPlatformAdminCRUDDoesNotCreateMerchantMembership(t *testing.T) {
|
||||
if err := db.Model(&model.MerchantMember{}).Where("user_id = ?", admin.ID).Count(&membershipCount).Error; err != nil {
|
||||
t.Fatalf("count merchant memberships: %v", err)
|
||||
}
|
||||
if membershipCount != 0 {
|
||||
t.Fatalf("platform admin must not have merchant memberships, count=%d", membershipCount)
|
||||
if membershipCount != 1 {
|
||||
t.Fatalf("platform admin should have one hidden default membership, count=%d", membershipCount)
|
||||
}
|
||||
var membership model.MerchantMember
|
||||
if err := db.Where("user_id = ?", admin.ID).First(&membership).Error; err != nil {
|
||||
t.Fatalf("load default membership: %v", err)
|
||||
}
|
||||
if membership.Role != model.MemberRoleOwner || !membership.IsDefault {
|
||||
t.Fatalf("unexpected default membership: %+v", membership)
|
||||
}
|
||||
updated, err := svc.UpdatePlatformAdmin(admin.ID, UpdatePlatformAdminInput{
|
||||
Username: "platform-admin-updated", Nickname: "更新后管理员", Password: "new-password", Status: 1,
|
||||
@@ -266,6 +273,36 @@ func TestPlatformAdminCRUDDoesNotCreateMerchantMembership(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateCurrentAccountCanChangeUsernameNicknameAndPassword(t *testing.T) {
|
||||
db := newServiceTestDB(t)
|
||||
tenant := NewTenantService(db)
|
||||
auth := NewAuthService(db, nil, tenant)
|
||||
user, err := NewUserService(db, tenant).CreatePlatformAdmin("current-account", "old-password", "旧昵称")
|
||||
if err != nil {
|
||||
t.Fatalf("create account: %v", err)
|
||||
}
|
||||
updated, err := auth.UpdateCurrentAccount(user.ID, UpdateCurrentAccountInput{
|
||||
CurrentPassword: "old-password",
|
||||
Username: "updated-account",
|
||||
Nickname: "新昵称",
|
||||
NewPassword: "new-password",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("update current account: %v", err)
|
||||
}
|
||||
if updated.Username != "updated-account" || updated.Nickname != "新昵称" {
|
||||
t.Fatalf("unexpected updated account: %+v", updated)
|
||||
}
|
||||
if err := bcrypt.CompareHashAndPassword([]byte(updated.PasswordHash), []byte("new-password")); err != nil {
|
||||
t.Fatalf("updated password should match: %v", err)
|
||||
}
|
||||
if _, err := auth.UpdateCurrentAccount(user.ID, UpdateCurrentAccountInput{
|
||||
CurrentPassword: "wrong-password", Username: "should-not-save", Nickname: "", NewPassword: "",
|
||||
}); err == nil {
|
||||
t.Fatal("expected current password verification error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestListMerchantAccountGroupsExcludesPlatformAdmins(t *testing.T) {
|
||||
db := newServiceTestDB(t)
|
||||
merchantA := model.Merchant{Code: "merchant-accounts-a", Name: "商户账号 A", Status: model.MerchantStatusActive}
|
||||
|
||||
Reference in New Issue
Block a user