64 lines
2.3 KiB
Go
64 lines
2.3 KiB
Go
package grpc
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
hostdomain "hyapp/services/user-service/internal/domain/host"
|
|
userdomain "hyapp/services/user-service/internal/domain/user"
|
|
userservice "hyapp/services/user-service/internal/service/user"
|
|
)
|
|
|
|
func TestToProtoUserAdminProfilePreservesOwnerFacts(t *testing.T) {
|
|
profile := userdomain.AdminProfile{
|
|
User: userdomain.User{UserID: 10001, Status: userdomain.StatusBanned},
|
|
BirthDate: "2000-02-03",
|
|
RegisterDevice: "Pixel 9",
|
|
LastSuccessLoginAtMs: 4_000,
|
|
Roles: []string{userdomain.AdminRoleHost, userdomain.AdminRoleManager},
|
|
Ban: userdomain.ActiveBanSummary{
|
|
Active: true, Source: userdomain.BanSourceAdmin, BanID: "admin-ban-1",
|
|
Permanent: true, UserStatus: userdomain.StatusBanned, OperatorType: "admin",
|
|
OperatorUserID: 9001, ActiveBanCount: 2,
|
|
},
|
|
LastOperatorType: "admin",
|
|
LastOperatorUserID: 9001,
|
|
LastOperationReason: "admin_user_ban:admin-ban-1",
|
|
LastOperationAtMs: 4_000,
|
|
}
|
|
|
|
got := toProtoUserAdminProfile(profile)
|
|
if got.GetUser().GetUserId() != 10001 || got.GetBirth() != profile.BirthDate || got.GetRegisterDevice() != profile.RegisterDevice {
|
|
t.Fatalf("admin profile base projection mismatch: %+v", got)
|
|
}
|
|
if !reflect.DeepEqual(got.GetRoles(), profile.Roles) || !got.GetBan().GetPermanent() || got.GetBan().GetActiveBanCount() != 2 {
|
|
t.Fatalf("admin profile role/ban projection mismatch: %+v", got)
|
|
}
|
|
}
|
|
|
|
func TestToProtoAdminUserBanMarksZeroExpiryPermanent(t *testing.T) {
|
|
got := toProtoAdminUserBan(userservice.AdminUserBan{
|
|
BanID: "admin-ban-1", TargetUserID: 10001, ExpiresAtMs: 0, Status: userservice.AdminUserBanStatusActive,
|
|
})
|
|
if got == nil || !got.GetPermanent() || got.GetExpiresAtMs() != 0 {
|
|
t.Fatalf("zero expiry must be exposed as permanent: %+v", got)
|
|
}
|
|
}
|
|
|
|
func TestRoleNamesFromSummaryKeepsStableMultiRoleOrder(t *testing.T) {
|
|
roles := roleNamesFromSummary(hostdomain.UserRoleSummary{
|
|
IsHost: true, IsAgency: true, IsBD: true, IsBDLeader: true, IsCoinSeller: true, IsManager: true,
|
|
})
|
|
want := []string{
|
|
userdomain.AdminRoleHost,
|
|
userdomain.AdminRoleAgency,
|
|
userdomain.AdminRoleBD,
|
|
userdomain.AdminRoleBDLeader,
|
|
userdomain.AdminRoleCoinSeller,
|
|
userdomain.AdminRoleManager,
|
|
}
|
|
if !reflect.DeepEqual(roles, want) {
|
|
t.Fatalf("role order mismatch: got=%v want=%v", roles, want)
|
|
}
|
|
}
|