mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-07-20 03:31:27 +02:00
40 lines
1.6 KiB
Go
40 lines
1.6 KiB
Go
package usersignup
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func strPtr(s string) *string {
|
|
return &s
|
|
}
|
|
|
|
func TestSignupTokenEmailMatchesDomain(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
emailDomain *string
|
|
email string
|
|
want bool
|
|
}{
|
|
{name: "no restriction allows any email", emailDomain: nil, email: "user@anything.com", want: true},
|
|
{name: "empty restriction allows any email", emailDomain: strPtr(""), email: "user@anything.com", want: true},
|
|
{name: "matching domain", emailDomain: strPtr("example.com"), email: "user@example.com", want: true},
|
|
{name: "matching domain case-insensitive", emailDomain: strPtr("example.com"), email: "User@Example.COM", want: true},
|
|
{name: "non-matching domain", emailDomain: strPtr("example.com"), email: "user@other.com", want: false},
|
|
{name: "subdomain does not match", emailDomain: strPtr("example.com"), email: "user@mail.example.com", want: false},
|
|
{name: "domain suffix does not match", emailDomain: strPtr("example.com"), email: "user@notexample.com", want: false},
|
|
{name: "missing @ with restriction", emailDomain: strPtr("example.com"), email: "userexample.com", want: false},
|
|
{name: "empty email with restriction", emailDomain: strPtr("example.com"), email: "", want: false},
|
|
{name: "plus addressing still matches", emailDomain: strPtr("example.com"), email: "user+tag@example.com", want: true},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
st := &SignupToken{EmailDomain: tc.emailDomain}
|
|
got := st.EmailMatchesDomain(tc.email)
|
|
if got != tc.want {
|
|
t.Errorf("EmailMatchesDomain(%q) with domain %v = %v, want %v", tc.email, tc.emailDomain, got, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|