fix: adjust phone registration username flow
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@@ -15,12 +16,16 @@ func TestResolveRegistrationAccount(t *testing.T) {
|
||||
phone string
|
||||
wantAccount string
|
||||
wantPhone string
|
||||
wantSecret string
|
||||
wantPhoneFlow bool
|
||||
wantGenerated bool
|
||||
wantErr bool
|
||||
}{
|
||||
{name: "username", username: "alice1", wantAccount: "alice1"},
|
||||
{name: "numeric username", username: "12345", wantAccount: "12345"},
|
||||
{name: "phone wins", username: "INVALID", phone: "13800138000", wantAccount: "+8613800138000", wantPhone: "+8613800138000", wantPhoneFlow: true},
|
||||
{name: "username", username: "alice1", wantAccount: "alice1", wantSecret: "alice1"},
|
||||
{name: "numeric username", username: "12345", wantAccount: "12345", wantSecret: "12345"},
|
||||
{name: "username and phone", username: "alice1", phone: "13800138000", wantAccount: "alice1", wantPhone: "+8613800138000", wantSecret: "alice1", wantPhoneFlow: true},
|
||||
{name: "phone only", phone: "13800138000", wantPhone: "+8613800138000", wantSecret: "+8613800138000", wantPhoneFlow: true, wantGenerated: true},
|
||||
{name: "uppercase with phone rejected", username: "Alice", phone: "13800138000", wantErr: true},
|
||||
{name: "uppercase rejected", username: "Alice", wantErr: true},
|
||||
{name: "long username rejected", username: "abcdefghijk", wantErr: true},
|
||||
{name: "malformed phone does not fall back", username: "alice", phone: "1380013800", wantErr: true},
|
||||
@@ -28,9 +33,16 @@ func TestResolveRegistrationAccount(t *testing.T) {
|
||||
}
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
account, phone, phoneFlow, err := resolveRegistrationAccount(tc.username, tc.phone)
|
||||
if (err != nil) != tc.wantErr || account != tc.wantAccount || phone != tc.wantPhone || phoneFlow != tc.wantPhoneFlow {
|
||||
t.Fatalf("got account=%q phone=%q phoneFlow=%v err=%v", account, phone, phoneFlow, err)
|
||||
account, phone, secretAccount, phoneFlow, err := resolveRegistrationAccount(tc.username, tc.phone)
|
||||
if (err != nil) != tc.wantErr || phone != tc.wantPhone || secretAccount != tc.wantSecret || phoneFlow != tc.wantPhoneFlow {
|
||||
t.Fatalf("got account=%q phone=%q secret=%q phoneFlow=%v err=%v", account, phone, secretAccount, phoneFlow, err)
|
||||
}
|
||||
if tc.wantGenerated {
|
||||
if !regexp.MustCompile(`^[a-z]{3}[0-9]{6}$`).MatchString(account) {
|
||||
t.Fatalf("generated account %q does not match expected format", account)
|
||||
}
|
||||
} else if account != tc.wantAccount {
|
||||
t.Fatalf("got account=%q want %q", account, tc.wantAccount)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -45,6 +57,23 @@ func TestRegistrationSecretMatchesSelectedAccount(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRegistrationSecretForAccount(t *testing.T) {
|
||||
if got := string(registrationSecretForAccount([]byte("+8613800138000:secret"), "abcxyz123456")); got != "abcxyz123456:secret" {
|
||||
t.Fatalf("got %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRegistrationPublicWithUsername(t *testing.T) {
|
||||
if got := registrationPublicWithUsername(nil, "alice").(map[string]any)["fn"]; got != "alice" {
|
||||
t.Fatalf("got fn=%v", got)
|
||||
}
|
||||
public := map[string]any{"fn": "old", "photo": "file1"}
|
||||
got := registrationPublicWithUsername(public, "bob").(map[string]any)
|
||||
if got["fn"] != "bob" || got["photo"] != "file1" {
|
||||
t.Fatalf("got public=%v", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateRegistrationInviteStates(t *testing.T) {
|
||||
oldInvites := store.RegistrationInvites
|
||||
defer func() { store.RegistrationInvites = oldInvites }()
|
||||
|
||||
Reference in New Issue
Block a user