Skip to content

Commit

Permalink
fix: invalid post number should return a 404 and not a 500 (getfider#589
Browse files Browse the repository at this point in the history
)
  • Loading branch information
peterver authored and goenning committed Oct 21, 2018
1 parent d6ffc1b commit ccb077a
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 3 deletions.
1 change: 1 addition & 0 deletions app/cmd/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ func routes(r *web.Engine) *web.Engine {
api.Get("/api/v1/posts", apiv1.SearchPosts())
api.Get("/api/v1/tags", apiv1.ListTags())
api.Get("/api/v1/posts/:number/comments", apiv1.ListComments())
api.Get("/api/v1/posts/:number", apiv1.GetPost())

//From this step, a User is required
api.Use(middlewares.IsAuthenticated())
Expand Down
21 changes: 19 additions & 2 deletions app/handlers/apiv1/post.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,23 @@ func CreatePost() web.HandlerFunc {
}
}

// GetPost retrieves the existing post by number
func GetPost() web.HandlerFunc {
return func(c web.Context) error {
number, err := c.ParamAsInt("number")
if err != nil {
return c.NotFound()
}

post, err := c.Services().Posts.GetByNumber(number)
if err != nil {
return c.Failure(err)
}

return c.Ok(post)
}
}

// UpdatePost updates an existing post of current tenant
func UpdatePost() web.HandlerFunc {
return func(c web.Context) error {
Expand Down Expand Up @@ -120,7 +137,7 @@ func ListComments() web.HandlerFunc {
return func(c web.Context) error {
number, err := c.ParamAsInt("number")
if err != nil {
return c.Failure(err)
return c.NotFound()
}

post, err := c.Services().Posts.GetByNumber(number)
Expand Down Expand Up @@ -228,7 +245,7 @@ func Unsubscribe() web.HandlerFunc {
func addOrRemove(c web.Context, addOrRemove func(post *models.Post, user *models.User) error) error {
number, err := c.ParamAsInt("number")
if err != nil {
return c.Failure(err)
return c.NotFound()
}

post, err := c.Services().Posts.GetByNumber(number)
Expand Down
19 changes: 19 additions & 0 deletions app/handlers/apiv1/post_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,25 @@ func TestCreatePostHandler_WithoutTitle(t *testing.T) {
Expect(err).IsNotNil()
}

func TestGetPostHandler(t *testing.T) {
RegisterT(t)

server, services := mock.NewServer()
services.SetCurrentTenant(mock.DemoTenant)
services.SetCurrentUser(mock.JonSnow)
post, _ := services.Posts.Add("My First Post", "Such an amazing description")

code, query := server.
OnTenant(mock.DemoTenant).
AsUser(mock.JonSnow).
AddParam("number", post.Number).
ExecuteAsJSON(apiv1.GetPost())

Expect(code).Equals(http.StatusOK)
Expect(query.String("title")).Equals("My First Post")
Expect(query.String("description")).Equals("Such an amazing description")
}

func TestUpdatePostHandler_TenantStaff(t *testing.T) {
RegisterT(t)

Expand Down
2 changes: 1 addition & 1 deletion app/handlers/post.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func PostDetails() web.HandlerFunc {
return func(c web.Context) error {
number, err := c.ParamAsInt("number")
if err != nil {
return c.Failure(err)
return c.NotFound()
}

posts := c.Services().Posts
Expand Down

0 comments on commit ccb077a

Please sign in to comment.