#40270 closed defect (bug) (fixed)
Incorrect error assertions in some REST API tests
| Reported by: |
|
Owned by: |
|
|---|---|---|---|
| Milestone: | 4.8 | Priority: | normal |
| Severity: | normal | Version: | |
| Component: | REST API | Keywords: | |
| Focuses: | Cc: |
Description (last modified by )
The test_delete_item() and test_delete_item_skip_trash() methods in WP_Test_REST_Posts_Controller contain the assertion $this->assertNotInstanceOf( 'WP_Error', $response );.
If I'm reading correctly, these assertions will always pass because they check a WP_REST_Response object. Instead, the assertions should check $response->as_error(), as happens in WP_Test_REST_Users_Controller.
The attached patch updates these assertions, as well as some similar assertions in WP_Test_REST_Post_Type_Controller_Testcase.
In the post type assertions, it looks as though the $response can be a WP_REST_Response, so it passes assertNotInstanceOf( 'WP_Error' ) but is still capable of returning a WP_Error via as_error().
The rest of the assertions in those post type methods might make the as_error() check unnecessary, though.
Good catch @dlh.
This is the preferred way of verifying that a response is not an error:
$this->assertEquals( 200, $response->get_status() );(or
201as needed).These assertions are already present for the cases you noted, so let's just remove the two
assertNotInstanceOflines. I don't see any other such lines in the REST API tests.