func TestAddEditDeleteUserPost(t *testing.T) { var post nerdz.UserPost // New post on my board (To = 0) post.Message = "All right" post.Lang = "en" if err := me.Add(&post); err != nil { t.Errorf("Add user post should work but, got: %v", err) } if err := me.Delete(&post); err != nil { t.Errorf("Delete with hpid %v shoud work, but got error: %v", post.Hpid, err) } post.Message = "All right2" post.Lang = "en" if err := me.Add(&post); err != nil { t.Errorf("Add with ID should work but, got: %v", err) } post.Message = "Post updated -> :D\nwow JA JA JA" post.Lang = "fu" // Language "fu" does not exists, this edit should fail if err := me.Edit(&post); err == nil { t.Errorf("Edit post language and message not failed! - %v", err) } post.Lang = "de" if err := me.Edit(&post); err != nil { t.Errorf("This edit shold work but got %s", err) } oldHpid := post.Hpid post.Hpid = 0 //default value for uint64 if err := me.Delete(&post); err == nil { t.Errorf("Delete with hpid 0 should fail") } post.Hpid = oldHpid if err := me.Delete(&post); err != nil { t.Errorf("Delete a valid post should work") } }
// NewPost handles the request and creates a new post func NewPost() echo.HandlerFunc { // swagger:route POST /users/{id}/posts user post NewUserPost // // Creates a new post on the specified user board // // Consumes: // - application/json // // Produces: // - application/json // // Security: // oauth: profile_messages:write // // Responses: // default: apiResponse return func(c echo.Context) error { if !rest.IsGranted("profile_messages:write", c) { return rest.InvalidScopeResponse("profile_messages:write", c) } // Read a rest.NewMessage from the body request. message := rest.NewMessage{} if err := c.Bind(&message); err != nil { errstr := err.Error() c.JSON(http.StatusBadRequest, &rest.Response{ Data: nil, HumanMessage: errstr, Message: errstr, Status: http.StatusBadRequest, Success: false, }) return errors.New(errstr) } // Create a nerdz.UserPost from the message // and current context. post := nerdz.UserPost{} post.Message = message.Message post.Lang = message.Lang post.To = c.Get("other").(*nerdz.User).ID() // Send it me := c.Get("me").(*nerdz.User) if err := me.Add(&post); err != nil { errstr := err.Error() c.JSON(http.StatusBadRequest, &rest.Response{ Data: nil, HumanMessage: errstr, Message: errstr, Status: http.StatusBadRequest, Success: false, }) return errors.New(errstr) } // Extract the TO from the new post and return // selected fields. return rest.SelectFields(post.GetTO(me), c) } }