summaryrefslogtreecommitdiff
path: root/internal/user/mock_test.go
diff options
context:
space:
mode:
authormihna123 <mihailonvojinovic@gmail.com>2026-08-29 23:28:28 +0200
committermihna123 <mihailonvojinovic@gmail.com>2026-08-29 23:28:28 +0200
commit41d4965db78414ba53237f791919ae17c0b99e14 (patch)
treebd3e25202e8cb66cff14b7c119c7afdbbc7b1ff6 /internal/user/mock_test.go
parent7ba6bc53be1546b44610840c46996dd6e2147405 (diff)
downloadopenstore-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.go150
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
+}