fix: restore verification target user ids

This commit is contained in:
richjohnrambo
2026-08-19 01:17:09 +08:00
parent 219ecadf4c
commit 4e75cfc65e
3 changed files with 129 additions and 8 deletions
+49
View File
@@ -472,6 +472,55 @@ func TestRegistrationInviteReusableSchema(t *testing.T) {
}
}
func TestVerificationTargetUserRoundTrip(t *testing.T) {
tenantAdapter, ok := adp.(adapter.TenantBusinessAdapter)
if !ok {
t.Fatal("MySQL adapter does not implement TenantBusinessAdapter")
}
var tenantID types.TenantID
if err := db.Get(&tenantID, "SELECT id FROM im_tenant WHERE code='default'"); err != nil {
t.Fatal(err)
}
uid := types.ParseUserId("usr" + testData.Users[0].Id)
now := types.TimeNow()
challengeID := "challenge-roundtrip-target-user"
phoneHash := "verification-target-user-phone-hash"
_, _ = db.Exec("DELETE FROM im_verification_codes WHERE challenge_id=? OR phone_hash=?", challengeID, phoneHash)
vc := &types.VerificationCode{
TenantID: tenantID,
ChallengeID: challengeID,
Scene: "reset_password",
PhoneHash: phoneHash,
PhoneMask: "+86******0000",
TargetUser: uid,
CodeHash: strings.Repeat("a", 64),
State: types.VerificationStatePending,
MaxAttempts: 5,
ExpiresAt: now.Add(time.Hour),
ResendAfter: now.Add(time.Minute),
}
if err := tenantAdapter.TenantVerificationCreate(tenantID, vc); err != nil {
t.Fatal(err)
}
stored, err := tenantAdapter.TenantVerificationGet(tenantID, challengeID)
if err != nil {
t.Fatal(err)
}
if stored.TargetUser != uid {
t.Fatalf("Get target user: got %s, want %s", stored.TargetUser.UserId(), uid.UserId())
}
active, err := tenantAdapter.TenantVerificationGetActive(tenantID, "reset_password", phoneHash, now)
if err != nil {
t.Fatal(err)
}
if active.TargetUser != uid {
t.Fatalf("GetActive target user: got %s, want %s", active.TargetUser.UserId(), uid.UserId())
}
}
func TestTopicCreate(t *testing.T) {
err := adp.TopicCreate(testData.Topics[0])
if err != nil {