Skip to content

Commit

Permalink
Refactor email test with table-driven test and add more cases
Browse files Browse the repository at this point in the history
  • Loading branch information
daisy1754 committed Jun 16, 2024
1 parent a947377 commit ea408f3
Showing 1 changed file with 83 additions and 57 deletions.
140 changes: 83 additions & 57 deletions validator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8622,66 +8622,92 @@ func TestRgb(t *testing.T) {
func TestEmail(t *testing.T) {
validate := New()

s := "test@mail.com"
errs := validate.Var(s, "email")
Equal(t, errs, nil)

s = "Dörte@Sörensen.example.com"
errs = validate.Var(s, "email")
Equal(t, errs, nil)

s = "θσερ@εχαμπλε.ψομ"
errs = validate.Var(s, "email")
Equal(t, errs, nil)

s = "юзер@екзампл.ком"
errs = validate.Var(s, "email")
Equal(t, errs, nil)

s = "उपयोगकर्ता@उदाहरण.कॉम"
errs = validate.Var(s, "email")
Equal(t, errs, nil)

s = "用户@例子.广告"
errs = validate.Var(s, "email")
Equal(t, errs, nil)

s = "mail@domain_with_underscores.org"
errs = validate.Var(s, "email")
NotEqual(t, errs, nil)
AssertError(t, errs, "", "", "", "", "email")

s = ""
errs = validate.Var(s, "email")
NotEqual(t, errs, nil)
AssertError(t, errs, "", "", "", "", "email")

s = "test@email"
errs = validate.Var(s, "email")
NotEqual(t, errs, nil)
AssertError(t, errs, "", "", "", "", "email")

s = "test@email."
errs = validate.Var(s, "email")
NotEqual(t, errs, nil)
AssertError(t, errs, "", "", "", "", "email")

s = "@email.com"
errs = validate.Var(s, "email")
NotEqual(t, errs, nil)
AssertError(t, errs, "", "", "", "", "email")

s = `"test test"@email.com`
errs = validate.Var(s, "email")
Equal(t, errs, nil)
tests := []struct {
input string
expectError bool
}{
{
input: "test@mail.com",
expectError: false,
},
{
input: "Dörte@Sörensen.example.com",
expectError: false,
},
{
input: "θσερ@εχαμπλε.ψομ",
expectError: false,
},
{
input: "юзер@екзампл.ком",
expectError: false,
},
{
input: "उपयोगकर्ता@उदाहरण.कॉम",
expectError: false,
},
{
input: "用户@例子.广告",
expectError: false,
},
{
input: "test@xn--t8jx73hngb.xn--tckwe",
expectError: false,
},
{
input: "test@test.xn--11b4c3d",
expectError: false,
},
{
input: "mail@domain_with_underscores.org",
expectError: true,
},
{
// empty is not a valid email
input: "",
expectError: true,
},
{
input: "test@email",
expectError: true,
},
{
input: "test@email.",
expectError: true,
},
{
input: "@email.com",
expectError: true,
},
{
input: `"test test"@email.com`,
expectError: false,
},
{
input: `"@email.com`,
expectError: true,
},
{
// per RFC 952, TLD can contain number, but there is no valid TLD as of June 2024 that ends with number.
input: `example@email.com1`,
expectError: true,
},
}

s = `"@email.com`
errs = validate.Var(s, "email")
NotEqual(t, errs, nil)
AssertError(t, errs, "", "", "", "", "email")
for _, test := range tests {
t.Run(fmt.Sprintf("Email: %s", test.input), func(t *testing.T) {
errs := validate.Var(test.input, "email")
if test.expectError {
AssertError(t, errs, "", "", "", "", "email")
} else {
Equal(t, errs, nil)
}
})
}

// boolean is not a valid email
i := true
errs = validate.Var(i, "email")
errs := validate.Var(i, "email")
NotEqual(t, errs, nil)
AssertError(t, errs, "", "", "", "", "email")
}
Expand Down

0 comments on commit ea408f3

Please sign in to comment.