Merge pull request #83 from 18F/case-insensitive-comparisons
Make address/domain comparisons case-insensitive
This commit is contained in:
commit
78e080ec46
@ -23,11 +23,16 @@ func NewValidator(domains []string, usersFile string) func(string) bool {
|
|||||||
csv_reader.TrimLeadingSpace = true
|
csv_reader.TrimLeadingSpace = true
|
||||||
records, err := csv_reader.ReadAll()
|
records, err := csv_reader.ReadAll()
|
||||||
for _, r := range records {
|
for _, r := range records {
|
||||||
validUsers[r[0]] = true
|
validUsers[strings.ToLower(r[0])] = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for i, domain := range domains {
|
||||||
|
domains[i] = strings.ToLower(domain)
|
||||||
|
}
|
||||||
|
|
||||||
validator := func(email string) bool {
|
validator := func(email string) bool {
|
||||||
|
email = strings.ToLower(email)
|
||||||
valid := false
|
valid := false
|
||||||
for _, domain := range domains {
|
for _, domain := range domains {
|
||||||
emailSuffix := fmt.Sprintf("@%s", domain)
|
emailSuffix := fmt.Sprintf("@%s", domain)
|
||||||
|
40
validator_test.go
Normal file
40
validator_test.go
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestValidatorComparisonsAreCaseInsensitive(t *testing.T) {
|
||||||
|
auth_email_file, err := ioutil.TempFile("", "test_auth_emails_")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("failed to create temp file: " + err.Error())
|
||||||
|
}
|
||||||
|
defer os.Remove(auth_email_file.Name())
|
||||||
|
|
||||||
|
auth_email_file.WriteString(
|
||||||
|
strings.Join([]string{"Foo.Bar@Example.Com"}, "\n"))
|
||||||
|
err = auth_email_file.Close()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("failed to close temp file " + auth_email_file.Name() +
|
||||||
|
": " + err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
domains := []string{"Frobozz.Com"}
|
||||||
|
validator := NewValidator(domains, auth_email_file.Name())
|
||||||
|
|
||||||
|
if !validator("foo.bar@example.com") {
|
||||||
|
t.Error("loaded email addresses are not lower-cased")
|
||||||
|
}
|
||||||
|
if !validator("Foo.Bar@Example.Com") {
|
||||||
|
t.Error("validated email addresses are not lower-cased")
|
||||||
|
}
|
||||||
|
if !validator("foo.bar@frobozz.com") {
|
||||||
|
t.Error("loaded domains are not lower-cased")
|
||||||
|
}
|
||||||
|
if !validator("foo.bar@Frobozz.Com") {
|
||||||
|
t.Error("validated domains are not lower-cased")
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user