github.com/volatiletech/authboss@v2.4.1+incompatible/validation_test.go (about) 1 package authboss 2 3 import ( 4 "testing" 5 6 "github.com/pkg/errors" 7 ) 8 9 type mockFieldError struct { 10 name string 11 err error 12 } 13 14 func (m mockFieldError) Name() string { 15 return m.name 16 } 17 18 func (m mockFieldError) Err() error { 19 return m.err 20 } 21 22 func (m mockFieldError) Error() string { 23 return m.err.Error() 24 } 25 26 func TestErrorList_Error(t *testing.T) { 27 t.Parallel() 28 29 errList := ErrorList{errors.New("one"), errors.New("two")} 30 if e := errList.Error(); e != "one, two" { 31 t.Error("Wrong value for error:", e) 32 } 33 } 34 35 func TestErrorList_Map(t *testing.T) { 36 t.Parallel() 37 38 errNotLong := "not long enough" 39 errEmail := "should be an email" 40 errAsploded := "asploded" 41 42 errList := ErrorList{ 43 mockFieldError{"username", errors.New(errNotLong)}, 44 mockFieldError{"username", errors.New(errEmail)}, 45 mockFieldError{"password", errors.New(errNotLong)}, 46 errors.New(errAsploded), 47 } 48 49 m := errList.Map() 50 if len(m) != 3 { 51 t.Error("Wrong number of fields:", len(m)) 52 } 53 54 usernameErrs := m["username"] 55 if len(usernameErrs) != 2 { 56 t.Error("Wrong number of username errors:", len(usernameErrs)) 57 } 58 if usernameErrs[0] != errNotLong { 59 t.Error("Wrong username error at 0:", usernameErrs[0]) 60 } 61 if usernameErrs[1] != errEmail { 62 t.Error("Wrong username error at 1:", usernameErrs[1]) 63 } 64 65 passwordErrs := m["password"] 66 if len(passwordErrs) != 1 { 67 t.Error("Wrong number of password errors:", len(passwordErrs)) 68 } 69 if passwordErrs[0] != errNotLong { 70 t.Error("Wrong password error at 0:", passwordErrs[0]) 71 } 72 73 unknownErrs := m[""] 74 if len(unknownErrs) != 1 { 75 t.Error("Wrong number of unkown errors:", len(unknownErrs)) 76 } 77 if unknownErrs[0] != errAsploded { 78 t.Error("Wrong unkown error at 0:", unknownErrs[0]) 79 } 80 } 81 82 func TestErrorList_MapHelper(t *testing.T) { 83 t.Parallel() 84 85 errList := []error{ 86 mockFieldError{"username", errors.New("")}, 87 mockFieldError{"username", errors.New("")}, 88 mockFieldError{"password", errors.New("")}, 89 } 90 91 var _ map[string][]string = ErrorMap(errList) 92 }