(t *testing.T)
| 113 | } |
| 114 | |
| 115 | func TestUserService_DeleteUser(t *testing.T) { |
| 116 | // Ensure user can delete self. |
| 117 | t.Run("OK", func(t *testing.T) { |
| 118 | db := MustOpenDB(t) |
| 119 | defer MustCloseDB(t, db) |
| 120 | s := sqlite.NewUserService(db) |
| 121 | user0, ctx0 := MustCreateUser(t, context.Background(), db, &wtf.User{Name: "john"}) |
| 122 | |
| 123 | // Delete user & ensure it is actually gone. |
| 124 | if err := s.DeleteUser(ctx0, user0.ID); err != nil { |
| 125 | t.Fatal(err) |
| 126 | } else if _, err := s.FindUserByID(ctx0, user0.ID); wtf.ErrorCode(err) != wtf.ENOTFOUND { |
| 127 | t.Fatalf("unexpected error: %#v", err) |
| 128 | } |
| 129 | }) |
| 130 | |
| 131 | // Ensure an error is returned if deleting a non-existent user. |
| 132 | t.Run("ErrNotFound", func(t *testing.T) { |
| 133 | db := MustOpenDB(t) |
| 134 | defer MustCloseDB(t, db) |
| 135 | s := sqlite.NewUserService(db) |
| 136 | if err := s.DeleteUser(context.Background(), 1); wtf.ErrorCode(err) != wtf.ENOTFOUND { |
| 137 | t.Fatalf("unexpected error: %#v", err) |
| 138 | } |
| 139 | }) |
| 140 | |
| 141 | // Ensure deleting a user is restricted only to the current user. |
| 142 | t.Run("ErrUnauthorized", func(t *testing.T) { |
| 143 | db := MustOpenDB(t) |
| 144 | defer MustCloseDB(t, db) |
| 145 | s := sqlite.NewUserService(db) |
| 146 | user0, _ := MustCreateUser(t, context.Background(), db, &wtf.User{Name: "NAME0"}) |
| 147 | _, ctx1 := MustCreateUser(t, context.Background(), db, &wtf.User{Name: "NAME1"}) |
| 148 | |
| 149 | if err := s.DeleteUser(ctx1, user0.ID); err == nil { |
| 150 | t.Fatal("expected error") |
| 151 | } else if wtf.ErrorCode(err) != wtf.EUNAUTHORIZED || wtf.ErrorMessage(err) != `You are not allowed to delete this user.` { |
| 152 | t.Fatalf("unexpected error: %#v", err) |
| 153 | } |
| 154 | }) |
| 155 | } |
| 156 | |
| 157 | func TestUserService_FindUser(t *testing.T) { |
| 158 | // Ensure an error is returned if fetching a non-existent user. |
nothing calls this directly
no test coverage detected