1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
<?php
namespace MediaWiki\Tests\Auth;
use Exception;
use InvalidArgumentException;
use MediaWiki\Auth\AuthenticationRequest;
use MediaWiki\Auth\AuthenticationResponse;
use MediaWiki\Message\Message;
use MediaWikiUnitTestCase;
/**
* @group AuthManager
* @covers \MediaWiki\Auth\AuthenticationResponse
*/
class AuthenticationResponseTest extends MediaWikiUnitTestCase {
/**
* @dataProvider provideConstructors
*
* @param string $constructor
* @param array $args
* @param array|Exception $expect
*/
public function testConstructors( $constructor, $args, $expect ) {
if ( is_array( $expect ) ) {
$res = new AuthenticationResponse();
$res->messageType = 'warning';
foreach ( $expect as $field => $value ) {
$res->$field = $value;
}
$ret = AuthenticationResponse::$constructor( ...$args );
$this->assertEquals( $res, $ret );
} else {
try {
AuthenticationResponse::$constructor( ...$args );
$this->fail( 'Expected exception not thrown' );
} catch ( Exception $ex ) {
$this->assertEquals( $expect, $ex );
}
}
}
public function provideConstructors() {
$req = $this->getMockForAbstractClass( AuthenticationRequest::class );
$msg = new Message( 'mainpage' );
return [
[ 'newPass', [], [
'status' => AuthenticationResponse::PASS,
] ],
[ 'newPass', [ 'name' ], [
'status' => AuthenticationResponse::PASS,
'username' => 'name',
] ],
[ 'newPass', [ 'name', null ], [
'status' => AuthenticationResponse::PASS,
'username' => 'name',
] ],
[ 'newFail', [ $msg ], [
'status' => AuthenticationResponse::FAIL,
'message' => $msg,
'messageType' => 'error',
'failReasons' => []
] ],
[ 'newRestart', [ $msg ], [
'status' => AuthenticationResponse::RESTART,
'message' => $msg,
] ],
[ 'newAbstain', [], [
'status' => AuthenticationResponse::ABSTAIN,
] ],
[ 'newUI', [ [ $req ], $msg ], [
'status' => AuthenticationResponse::UI,
'neededRequests' => [ $req ],
'message' => $msg,
'messageType' => 'warning',
] ],
[ 'newUI', [ [ $req ], $msg, 'warning' ], [
'status' => AuthenticationResponse::UI,
'neededRequests' => [ $req ],
'message' => $msg,
'messageType' => 'warning',
] ],
[ 'newUI', [ [ $req ], $msg, 'error' ], [
'status' => AuthenticationResponse::UI,
'neededRequests' => [ $req ],
'message' => $msg,
'messageType' => 'error',
] ],
[ 'newUI', [ [], $msg ],
new InvalidArgumentException( '$reqs may not be empty' )
],
[ 'newRedirect', [ [ $req ], 'http://example.org/redir' ], [
'status' => AuthenticationResponse::REDIRECT,
'neededRequests' => [ $req ],
'redirectTarget' => 'http://example.org/redir',
] ],
[
'newRedirect',
[ [ $req ], 'http://example.org/redir', [ 'foo' => 'bar' ] ],
[
'status' => AuthenticationResponse::REDIRECT,
'neededRequests' => [ $req ],
'redirectTarget' => 'http://example.org/redir',
'redirectApiData' => [ 'foo' => 'bar' ],
]
],
[ 'newRedirect', [ [], 'http://example.org/redir' ],
new InvalidArgumentException( '$reqs may not be empty' )
],
];
}
}
|