gobuffalo / buffalo

Rapid Web Development w/ Go
http://gobuffalo.io
MIT License
8.08k stars 579 forks source link

added assert middleware to assert handler's behavior. (fix #2339) #2345

Closed sio4 closed 2 years ago

sio4 commented 2 years ago

For the net/http#ResponseWriter, Write() will set the response status as "200 OK" if a handler exited without calling WriteHeader() but returns nil. However, the Buffalo's behavior is slightly different. The Buffalo's actual responding behavior is basically the same since it uses the same, but the buffalo's middlewares (especially poptx from buffalo-pop) could treat them as a failed action when no response status is found. This inconsistency made some issues and this PR will fix the issue.

See more details in #2339 and other linked issues.

fixes #2339 fixes gobuffalo/buffalo-pop#25 fixes gobuffalo/buffalo-pop#19

related issues/PRs: #2300, #2334, #2335,

sio4 commented 2 years ago

I like it. @sio4 Is there a chance we could add some tests to leave this behavior specified and guaranteed after v1.1.0 ?

Sure, I agree. Will do that soon. (Maybe by this week)