package user type RepositoryMock struct { users []User err error } func getEmptyRepository() *RepositoryMock { return &RepositoryMock{users: []User{}, err: nil} } func (r *RepositoryMock) Create(in *CreateInput) (*User, error) { if r.err != nil { return nil, r.err } user := User{ Username: in.Username, Phone: in.Phone, Email: in.Email, passwordHash: in.PwHash, } r.users = append(r.users, user) return &user, nil } func (r *RepositoryMock) GetByUsernameOrEmail(username string, email string) (*User, error) { if r.err != nil { return nil, r.err } for _, user := range r.users { if user.Username == username || user.Email == email { return &user, nil } } return nil, ErrUserNotFound } func getInvalidRegisterInputs() map[string]RegisterInput { baseInput := RegisterInput{ Username: "testusername", Email: "testemail@mail.com", Phone: "+232442223", Password: "1233213344234", } badInputs := map[string]RegisterInput{} input := baseInput input.Username = "" badInputs["no username"] = input input = baseInput input.Username = " " badInputs["username is only whitespace"] = input input = baseInput input.Username = "m ike" badInputs["username contains a space"] = input input = baseInput input.Username = "1mike" badInputs["username starts with a number"] = input input = baseInput input.Username = "ab" badInputs["username is less than 3 chars"] = input input = baseInput input.Email = "" badInputs["no email"] = input input = baseInput input.Email = " " badInputs["email is just whitespace"] = input input = baseInput input.Email = "some weird@email.com" badInputs["email contains inner whitespace"] = input input = baseInput input.Email = "someweird@em ail.com" badInputs["email contains whitespace after @ and before dot"] = input input = baseInput input.Email = "someweird@email.c om" badInputs["email contains whitespace after dot"] = input input = baseInput input.Email = "emailnoat.com" badInputs["email has no @"] = input input = baseInput input.Email = "emailnodot@somcom" badInputs["email has no dot"] = input input = baseInput input.Email = "@." badInputs["email is only at dot"] = input input = baseInput input.Phone = "070e833" badInputs["phone number has letters"] = input input = baseInput input.Phone = " " badInputs["phone number is only empty space"] = input input = baseInput input.Password = "" badInputs["no password"] = input input = baseInput input.Password = "12345678901234567890123456789012345678901234567890123456789012345678901234567890" badInputs["password is over 72 chars"] = input input = baseInput input.Password = "1234" badInputs["password is less than 8 chars"] = input return badInputs } func (r *RepositoryMock) fill() { users := []User{ { Username: "johnsmith", Email: "jognsmith@email.com", Phone: "+332200334", passwordHash: "213412", }, { Username: "janedoe", Email: "janedoe@email.com", Phone: "+332200334", passwordHash: "213412", }, { Username: "mrtest", Email: "mrtest@email.com", Phone: "+332200334", passwordHash: "213412", }, } r.users = users }