wiki.techinc.nl/tests/phpunit/unit/includes/Rest/SessionHelperTestTrait.php
Bill Pirkle 7295100773 Allow REST API handlers to require csrf-safe session providers
Bug: T305043
Depends-On: Ic7c1b19b86e8a151e2d42aaec00ef0e89db77f08
Change-Id: Ic6bd48b400ecd839ef99b518ef955781470cd05c
2022-05-20 16:52:54 +00:00

36 lines
1.1 KiB
PHP

<?php
namespace MediaWiki\Tests\Rest\Handler;
use MediaWiki\Session\Session;
use MediaWiki\Session\SessionId;
use MediaWiki\Session\SessionProviderInterface;
use PHPUnit\Framework\MockObject\MockObject;
/**
* A trait for testing Handler classes.
* This trait is intended to be used on subclasses of MediaWikiUnitTestCase
* or MediaWikiIntegrationTestCase.
*
* @stable to use
* @package MediaWiki\Tests\Rest
*/
trait SessionHelperTestTrait {
/**
* @param bool $csrfSafe
* @return Session
*/
public function getSession( bool $csrfSafe = false ) {
/** @var SessionProviderInterface|MockObject $session */
$sessionProvider =
$this->createNoOpMock( SessionProviderInterface::class, [ 'safeAgainstCsrf' ] );
$sessionProvider->method( 'safeAgainstCsrf' )->willReturn( $csrfSafe );
/** @var Session|MockObject $session */
$session = $this->createNoOpMock( Session::class, [ 'getSessionId', 'getProvider' ] );
$session->method( 'getSessionId' )->willReturn( new SessionId( 'test' ) );
$session->method( 'getProvider' )->willReturn( $sessionProvider );
return $session;
}
}