diff options
| author | mihna123 <mihailonvojinovic@gmail.com> | 2026-08-29 23:28:28 +0200 |
|---|---|---|
| committer | mihna123 <mihailonvojinovic@gmail.com> | 2026-08-29 23:28:28 +0200 |
| commit | 41d4965db78414ba53237f791919ae17c0b99e14 (patch) | |
| tree | bd3e25202e8cb66cff14b7c119c7afdbbc7b1ff6 /internal/user/mock_test.go | |
| parent | 7ba6bc53be1546b44610840c46996dd6e2147405 (diff) | |
| download | openstore-41d4965db78414ba53237f791919ae17c0b99e14.tar.gz openstore-41d4965db78414ba53237f791919ae17c0b99e14.zip | |
user: add a service stub with validated register method
Diffstat (limited to 'internal/user/mock_test.go')
| -rw-r--r-- | internal/user/mock_test.go | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/internal/user/mock_test.go b/internal/user/mock_test.go new file mode 100644 index 0000000..0f0f672 --- /dev/null +++ b/internal/user/mock_test.go @@ -0,0 +1,150 @@ +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 +} |
