Page MenuHomePhabricator

OAuth REST tests failing: HTTP 400 error code in various scenarios
Closed, ResolvedPublic

Description

OAuth REST tests are failing: https://integration.wikimedia.org/ci/job/quibble-vendor-mysql-php74-noselenium/11437/console

18:21:06 There were 6 failures:
18:21:06 
18:21:06 1) MediaWiki\Extension\OAuth\Tests\Rest\AccessTokenEndpointTest::testHandlerExecute with data set "normal" (array('POST', GuzzleHttp\Psr7\Uri Object (...), array('application/json'), array('authorization_code', 'dummy')), array(401, 'Unauthorized', '1.1'))
18:21:06 Failed asserting that 400 is identical to 401.
18:21:06 
18:21:06 /workspace/src/extensions/OAuth/tests/phpunit/Rest/EndpointTestBase.php:82
18:21:06 phpvfscomposer:///workspace/src/vendor/phpunit/phpunit/phpunit:106
Logs generated by test

Show Details
18:21:06 
18:21:06 2) MediaWiki\Extension\OAuth\Tests\Rest\RequestClientEndpointTest::testHandlerExecute with data set "Successful request" (array('POST', GuzzleHttp\Psr7\Uri Object (...), array('TestName', '1.0', 'TestDescription', '*', false, 'https://test.com/oauth', false, 'test@test.com', false, array('client_credentials'), array()), array('application/json')), array(200, 'OK', '1.1'), Closure Object (...))
18:21:06 Failed asserting that 400 is identical to 200.
18:21:06 
18:21:06 /workspace/src/extensions/OAuth/tests/phpunit/Rest/EndpointTestBase.php:82
18:21:06 phpvfscomposer:///workspace/src/vendor/phpunit/phpunit/phpunit:106
Logs generated by test

Show Details
18:21:06 
18:21:06 3) MediaWiki\Extension\OAuth\Tests\Rest\RequestClientEndpointTest::testHandlerExecute with data set "Successful request owner only" (array('POST', GuzzleHttp\Psr7\Uri Object (...), array('TestName', '1.0', 'TestDescription', '*', true, 'https://test.com/oauth', false, 'test@test.com', false, array('client_credentials'), array()), array('application/json')), array(200, 'OK', '1.1'), Closure Object (...), Closure Object (...))
18:21:06 Failed asserting that 400 is identical to 200.
18:21:06 
18:21:06 /workspace/src/extensions/OAuth/tests/phpunit/Rest/EndpointTestBase.php:82
18:21:06 phpvfscomposer:///workspace/src/vendor/phpunit/phpunit/phpunit:106
Logs generated by test

Show Details
18:21:06 
18:21:06 4) MediaWiki\Extension\OAuth\Tests\Rest\RequestClientEndpointTest::testHandlerExecute with data set "Successful scopes values" (array('POST', GuzzleHttp\Psr7\Uri Object (...), array('basic', 'TestName', '1.0', 'TestDescription', '*', false, 'https://test.com/oauth', false, 'test@test.com', false, array('client_credentials')), array('application/json')), array(200, 'OK', '1.1'), Closure Object (...))
18:21:06 Failed asserting that 400 is identical to 200.
18:21:06 
18:21:06 /workspace/src/extensions/OAuth/tests/phpunit/Rest/EndpointTestBase.php:82
18:21:06 phpvfscomposer:///workspace/src/vendor/phpunit/phpunit/phpunit:106
Logs generated by test

Show Details
18:21:06 
18:21:06 5) MediaWiki\Extension\OAuth\Tests\Rest\RequestClientEndpointTest::testHandlerExecute with data set "Scope with mwoauth-authonly" (array('POST', GuzzleHttp\Psr7\Uri Object (...), array('mwoauth-authonly', 'TestName', '1.0', 'TestDescription', '*', false, 'https://test.com/oauth', false, 'test@test.com', false, array('client_credentials')), array('application/json')), array(200, 'OK', '1.1'), Closure Object (...))
18:21:06 Failed asserting that 400 is identical to 200.
18:21:06 
18:21:06 /workspace/src/extensions/OAuth/tests/phpunit/Rest/EndpointTestBase.php:82
18:21:06 phpvfscomposer:///workspace/src/vendor/phpunit/phpunit/phpunit:106
Logs generated by test

Show Details
18:21:06 
18:21:06 6) MediaWiki\Extension\OAuth\Tests\Rest\RequestClientEndpointTest::testHandlerExecute with data set "Scope with mwoauth-authonlyprivate" (array('POST', GuzzleHttp\Psr7\Uri Object (...), array('mwoauth-authonlyprivate', 'TestName', '1.0', 'TestDescription', '*', false, 'https://test.com/oauth', false, 'test@test.com', false, array('client_credentials')), array('application/json')), array(200, 'OK', '1.1'), Closure Object (...))
18:21:06 Failed asserting that 400 is identical to 200.
18:21:06 
18:21:06 /workspace/src/extensions/OAuth/tests/phpunit/Rest/EndpointTestBase.php:82
18:21:06 phpvfscomposer:///workspace/src/vendor/phpunit/phpunit/phpunit:106
Logs generated by test

Show Details
18:21:06 
18:21:06 FAILURES!

This is reproducible locally. git bisect blames rMW020c7f5e7578: REST: introduce getSupportedRequestTypes().

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

From a quick look, the error leading to the 400 is "rest-json-body-parse-error". I see that rMW020c7f5e7578: REST: introduce getSupportedRequestTypes() causes RequestData::hasBody() to return true if post params are present (previously the presence of post parameters did not cause this). And RequestData::hasBody() returning true causes Handler::processRequestBody() to be invoked, which tries to parse the body as json, fails and throws the above error.

Change #1031604 had a related patch set uploaded (by BPirkle; author: BPirkle):

[mediawiki/extensions/OAuth@master] Change content type for REST tests to avoid test failure

https://gerrit.wikimedia.org/r/1031604

Change #1031604 merged by jenkins-bot:

[mediawiki/extensions/OAuth@master] Change content type for REST tests to avoid test failure

https://gerrit.wikimedia.org/r/1031604

matmarex assigned this task to BPirkle.

Thanks!