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  }