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)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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