File: AuthenticationResponseTest.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (121 lines) | stat: -rw-r--r-- 3,176 bytes parent folder | download
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' )
			],
		];
	}

}