aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/unit/includes/session/SessionProviderTestTrait.php
blob: c7965b0b158a0bedca1d01b5d962e9293aa27b1b (plain) (blame)
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
<?php

namespace MediaWiki\Tests\Session;

use MediaWiki\Config\Config;
use MediaWiki\Config\HashConfig;
use MediaWiki\HookContainer\HookContainer;
use MediaWiki\Session\SessionManager;
use MediaWiki\Session\SessionProvider;
use MediaWiki\User\UserNameUtils;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;

/**
 * A trait providing utility function for testing subclasses of
 * SessionProvider. This trait is intended to be used on
 * subclasses of MediaWikiIntegrationTestCase or MediaWikiUnitTestCase.
 *
 * @stable to use
 */
trait SessionProviderTestTrait {

	/**
	 * Calls init() on an SessionProvider.
	 *
	 * @param SessionProvider $provider
	 * @param LoggerInterface|null $logger
	 * @param Config|null $config
	 * @param SessionManager|null $manager
	 * @param HookContainer|null $hookContainer
	 * @param UserNameUtils|null $userNameUtils
	 */
	private function initProvider(
		SessionProvider $provider,
		?LoggerInterface $logger = null,
		?Config $config = null,
		?SessionManager $manager = null,
		?HookContainer $hookContainer = null,
		?UserNameUtils $userNameUtils = null
	) {
		$provider->init(
			$logger ?? new NullLogger(),
			$config ?? new HashConfig(),
			$manager ?? $this->createNoOpMock( SessionManager::class ),
			$hookContainer ?? $this->createHookContainer(),
			$userNameUtils ?? $this->createNoOpMock( UserNameUtils::class )
		);
	}
}