fix: restore verification target user ids
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user