* ApiQueryBase::getDirectionDescription() was removed (deprecated since 1.25).
* ApiQuery::getModules() was removed (deprecated since 1.21).
* ApiMain::getModules() was removed (deprecated since 1.21).
+* ApiBase::getVersion() was removed (deprecated since 1.21).
=== Languages updated in 1.27 ===
/// @deprecated since 1.24
const PROP_NULLABLE = 1;
- /**
- * Formerly returned a string that identifies the version of the extending
- * class. Typically included the class name, the svn revision, timestamp,
- * and last author. Usually done with SVN's Id keyword
- *
- * @deprecated since 1.21, version string is no longer supported
- * @return string
- */
- public function getVersion() {
- wfDeprecated( __METHOD__, '1.21' );
- return '';
- }
-
/**
* Formerly used to fetch a list of possible properites in the result,
* somehow organized with respect to the prop parameter that causes them to
$data['git-hash'] = $git;
$data['git-branch'] =
SpecialVersion::getGitCurrentBranch( $GLOBALS['IP'] );
- } else {
- $svn = SpecialVersion::getSvnRevision( $IP );
- if ( $svn ) {
- $data['rev'] = $svn;
- }
}
// 'case-insensitive' option is reserved for future
}
if ( isset( $ext['version'] ) ) {
$ret['version'] = $ext['version'];
- } elseif ( isset( $ext['svn-revision'] ) &&
- preg_match( '/\$(?:Rev|LastChangedRevision|Revision): *(\d+)/',
- $ext['svn-revision'], $m )
- ) {
- $ret['version'] = 'r' . $m[1];
}
if ( isset( $ext['path'] ) ) {
$extensionPath = dirname( $ext['path'] );
if ( $vcsDate !== false ) {
$ret['vcs-date'] = wfTimestamp( TS_ISO_8601, $vcsDate );
}
- } else {
- $svnInfo = SpecialVersion::getSvnInfo( $extensionPath );
- if ( $svnInfo !== false ) {
- $ret['vcs-system'] = 'svn';
- $ret['vcs-version'] = $svnInfo['checkout-rev'];
- $ret['vcs-url'] = isset( $svnInfo['viewvc-url'] ) ? $svnInfo['viewvc-url'] : '';
- }
}
if ( SpecialVersion::getExtLicenseFileName( $extensionPath ) ) {
}
$pos = $pos ?: $this->getConnection( DB_MASTER )->getMasterPos();
+ if ( !$pos ) {
+ return false; // something is misconfigured
+ }
$result = $conn->masterPosWait( $pos, $timeout );
if ( $result == -1 || is_null( $result ) ) {
/**
* Handy shortcut for constructing a formatter directly from
* database row.
- * @param object $row
+ * @param stdClass|array $row
* @see DatabaseLogEntry::getSelectQueryData
* @return LogFormatter
*/
// @codingStandardsIgnoreStart Long line
//case 'revision': // Revision deletion
//case 'event': // Log deletion
- // see https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/LogPage.php?&pathrev=97044&r1=97043&r2=97044
+ // see https://github.com/wikimedia/mediawiki/commit/a9c243b7b5289dad204278dbe7ed571fd914e395
//default:
// @codingStandardsIgnoreEnd
}
case 'patrol':
// @codingStandardsIgnoreStart Long line
- // https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/PatrolLog.php?&pathrev=97495&r1=97494&r2=97495
+ // https://github.com/wikimedia/mediawiki/commit/1a05f8faf78675dc85984f27f355b8825b43efff
// @codingStandardsIgnoreEnd
// Create a diff link to the patrolled revision
if ( $entry->getSubtype() === 'patrol' ) {
}
}
- if ( !$sendEmail ) {
- return;
+ if ( $sendEmail ) {
+ JobQueueGroup::singleton()->lazyPush( new EnotifNotifyJob(
+ $title,
+ array(
+ 'editor' => $editor->getName(),
+ 'editorID' => $editor->getID(),
+ 'timestamp' => $timestamp,
+ 'summary' => $summary,
+ 'minorEdit' => $minorEdit,
+ 'oldid' => $oldid,
+ 'watchers' => $watchers,
+ 'pageStatus' => $pageStatus
+ )
+ ) );
}
-
- $params = array(
- 'editor' => $editor->getName(),
- 'editorID' => $editor->getID(),
- 'timestamp' => $timestamp,
- 'summary' => $summary,
- 'minorEdit' => $minorEdit,
- 'oldid' => $oldid,
- 'watchers' => $watchers,
- 'pageStatus' => $pageStatus
- );
- $job = new EnotifNotifyJob( $title, $params );
- JobQueueGroup::singleton()->lazyPush( $job );
}
/**
private $dataHash = null;
/** @var BagOStuff */
- private $store;
+ private $tempStore;
+ /** @var BagOStuff */
+ private $permStore;
/** @var LoggerInterface */
private $logger;
/**
* @param SessionId $id Session ID object
* @param SessionInfo $info Session info to populate from
- * @param BagOStuff $store Backend data store
+ * @param BagOStuff $tempStore In-process data store
+ * @param BagOStuff $permstore Backend data store for persisted sessions
* @param LoggerInterface $logger
* @param int $lifetime Session data lifetime in seconds
*/
public function __construct(
- SessionId $id, SessionInfo $info, BagOStuff $store, LoggerInterface $logger, $lifetime
+ SessionId $id, SessionInfo $info, BagOStuff $tempStore, BagOStuff $permStore,
+ LoggerInterface $logger, $lifetime
) {
$phpSessionHandling = \RequestContext::getMain()->getConfig()->get( 'PHPSessionHandling' );
$this->usePhpSessionHandling = $phpSessionHandling !== 'disable';
$this->id = $id;
$this->user = $info->getUserInfo() ? $info->getUserInfo()->getUser() : new User;
- $this->store = $store;
+ $this->tempStore = $tempStore;
+ $this->permStore = $permStore;
$this->logger = $logger;
$this->lifetime = $lifetime;
$this->provider = $info->getProvider();
$this->forceHTTPS = $info->forceHTTPS();
$this->providerMetadata = $info->getProviderMetadata();
- $blob = $store->get( wfMemcKey( 'MWSession', (string)$this->id ) );
+ $key = wfMemcKey( 'MWSession', (string)$this->id );
+ $blob = $tempStore->get( $key );
+ if ( $blob === false ) {
+ $blob = $permStore->get( $key );
+ if ( $blob !== false ) {
+ $tempStore->set( $key, $blob );
+ }
+ }
if ( !is_array( $blob ) ||
!isset( $blob['metadata'] ) || !is_array( $blob['metadata'] ) ||
!isset( $blob['data'] ) || !is_array( $blob['data'] )
$this->autosave();
// Delete the data for the old session ID now
- $this->store->delete( wfMemcKey( 'MWSession', $oldId ) );
+ $this->tempStore->delete( wfMemcKey( 'MWSession', $oldId ) );
+ $this->permStore->delete( wfMemcKey( 'MWSession', $oldId ) );
}
}
}
}
- $this->store->set(
+ $this->tempStore->set(
wfMemcKey( 'MWSession', (string)$this->id ),
array(
'data' => $this->data,
),
$metadata['expires']
);
+ if ( $this->persist ) {
+ $this->permStore->set(
+ wfMemcKey( 'MWSession', (string)$this->id ),
+ array(
+ 'data' => $this->data,
+ 'metadata' => $metadata,
+ ),
+ $metadata['expires']
+ );
+ }
$this->metaDirty = false;
$this->dataDirty = false;
private $config;
/** @var BagOStuff|null */
- private $store;
+ private $tempStore;
+
+ /** @var BagOStuff|null */
+ private $permStore;
/** @var SessionProvider[] */
private $sessionProviders = null;
$this->setLogger( \MediaWiki\Logger\LoggerFactory::getInstance( 'session' ) );
}
+ $this->tempStore = new \HashBagOStuff;
if ( isset( $options['store'] ) ) {
if ( !$options['store'] instanceof BagOStuff ) {
throw new \InvalidArgumentException(
'$options[\'store\'] must be an instance of BagOStuff'
);
}
- $this->store = $options['store'];
+ $this->permStore = $options['store'];
} else {
- $this->store = \ObjectCache::getInstance( $this->config->get( 'SessionCacheType' ) );
- $this->store->setLogger( $this->logger );
+ $this->permStore = \ObjectCache::getInstance( $this->config->get( 'SessionCacheType' ) );
+ $this->permStore->setLogger( $this->logger );
}
register_shutdown_function( array( $this, 'shutdown' ) );
// Test this here to provide a better log message for the common case
// of "no such ID"
$key = wfMemcKey( 'MWSession', $id );
- if ( is_array( $this->store->get( $key ) ) ) {
+ $existing = $this->tempStore->get( $key );
+ if ( $existing === false ) {
+ $existing = $this->permStore->get( $key );
+ if ( $existing !== false ) {
+ $this->tempStore->set( $key, $existing );
+ }
+ }
+ if ( is_array( $existing ) ) {
$info = new SessionInfo( SessionInfo::MIN_PRIORITY, array( 'id' => $id, 'idIsSafe' => true ) );
if ( $this->loadSessionInfoFromStore( $info, $request ) ) {
$session = $this->getSessionFromInfo( $info, $request );
}
$key = wfMemcKey( 'MWSession', $id );
- if ( is_array( $this->store->get( $key ) ) ) {
+ $existing = $this->tempStore->get( $key );
+ if ( $existing === false ) {
+ $existing = $this->permStore->get( $key );
+ if ( $existing !== false ) {
+ $this->tempStore->set( $key, $existing );
+ }
+ }
+ if ( is_array( $existing ) ) {
throw new \InvalidArgumentException( 'Session ID already exists' );
}
}
// Reset the user's token to kill existing sessions
$user = User::newFromName( $username );
if ( $user && $user->getToken( false ) ) {
- $user->setToken( true );
+ $user->setToken();
$user->saveSettings();
}
*/
private function loadSessionInfoFromStore( SessionInfo &$info, WebRequest $request ) {
$key = wfMemcKey( 'MWSession', $info->getId() );
- $blob = $this->store->get( $key );
+ $blob = $this->tempStore->get( $key );
+ if ( $blob === false ) {
+ $blob = $this->permStore->get( $key );
+ if ( $blob !== false ) {
+ $this->tempStore->set( $key, $blob );
+ }
+ }
$newParams = array();
// Sanity check: blob must be an array, if it's saved at all
if ( !is_array( $blob ) ) {
$this->logger->warning( "Session $info: Bad data" );
- $this->store->delete( $key );
+ $this->tempStore->delete( $key );
+ $this->permStore->delete( $key );
return false;
}
!isset( $blob['metadata'] ) || !is_array( $blob['metadata'] )
) {
$this->logger->warning( "Session $info: Bad data structure" );
- $this->store->delete( $key );
+ $this->tempStore->delete( $key );
+ $this->permStore->delete( $key );
return false;
}
!array_key_exists( 'provider', $metadata )
) {
$this->logger->warning( "Session $info: Bad metadata" );
- $this->store->delete( $key );
+ $this->tempStore->delete( $key );
+ $this->permStore->delete( $key );
return false;
}
$newParams['provider'] = $provider = $this->getProvider( $metadata['provider'] );
if ( !$provider ) {
$this->logger->warning( "Session $info: Unknown provider, " . $metadata['provider'] );
- $this->store->delete( $key );
+ $this->tempStore->delete( $key );
+ $this->permStore->delete( $key );
return false;
}
} elseif ( $metadata['provider'] !== (string)$provider ) {
$backend = new SessionBackend(
$this->allSessionIds[$id],
$info,
- $this->store,
+ $this->tempStore,
+ $this->permStore,
$this->logger,
$this->config->get( 'ObjectCacheSessionExpiry' )
);
do {
$id = wfBaseConvert( \MWCryptRand::generateHex( 40 ), 16, 32, 32 );
$key = wfMemcKey( 'MWSession', $id );
- } while ( isset( $this->allSessionIds[$id] ) || is_array( $this->store->get( $key ) ) );
+ } while ( isset( $this->allSessionIds[$id] ) ||
+ is_array( $this->tempStore->get( $key ) ) || is_array( $this->permStore->get( $key ) )
+ );
return $id;
}
* @param PHPSessionHandler $handler
*/
public function setupPHPSessionHandler( PHPSessionHandler $handler ) {
- $handler->setManager( $this, $this->store, $this->logger );
+ $handler->setManager( $this, $this->permStore, $this->logger );
}
/**
protected static $extensionTypes = false;
- protected static $viewvcUrls = array(
- 'svn+ssh://svn.wikimedia.org/svnroot/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
- 'http://svn.wikimedia.org/svnroot/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
- 'https://svn.wikimedia.org/svnroot/mediawiki' => 'https://svn.wikimedia.org/viewvc/mediawiki',
- );
-
public function __construct() {
parent::__construct( 'Version' );
}
}
/**
- * Return a string of the MediaWiki version with SVN revision if available.
+ * Return a string of the MediaWiki version with Git revision if available.
*
* @param string $flags
* @return mixed
global $wgVersion, $IP;
$gitInfo = self::getGitHeadSha1( $IP );
- $svnInfo = self::getSvnInfo( $IP );
- if ( !$svnInfo && !$gitInfo ) {
+ if ( !$gitInfo ) {
$version = $wgVersion;
- } elseif ( $gitInfo && $flags === 'nodb' ) {
+ } elseif ( $flags === 'nodb' ) {
$shortSha1 = substr( $gitInfo, 0, 7 );
$version = "$wgVersion ($shortSha1)";
- } elseif ( $gitInfo ) {
+ } else {
$shortSha1 = substr( $gitInfo, 0, 7 );
$shortSha1 = wfMessage( 'parentheses' )->params( $shortSha1 )->escaped();
$version = "$wgVersion $shortSha1";
- } elseif ( $flags === 'nodb' ) {
- $version = "$wgVersion (r{$svnInfo['checkout-rev']})";
- } else {
- $version = $wgVersion . ' ' .
- wfMessage(
- 'version-svn-revision',
- isset( $svnInfo['directory-rev'] ) ? $svnInfo['directory-rev'] : '',
- isset( $svnInfo['checkout-rev'] ) ? $svnInfo['checkout-rev'] : ''
- )->text();
}
return $version;
/**
* Return a wikitext-formatted string of the MediaWiki version with a link to
- * the SVN revision or the git SHA1 of head if available.
- * Git is prefered over Svn
+ * the Git SHA1 of head if available.
* The fallback is just $wgVersion
*
* @return mixed
if ( $gitVersion ) {
$v = $gitVersion;
} else {
- $svnVersion = self::getVersionLinkedSvn();
- if ( $svnVersion ) {
- $v = $svnVersion;
- } else {
- $v = $wgVersion; // fallback
- }
+ $v = $wgVersion; // fallback
}
return $v;
}
- /**
- * @return string Global wgVersion + a link to subversion revision of svn BASE
- */
- private static function getVersionLinkedSvn() {
- global $IP;
-
- $info = self::getSvnInfo( $IP );
- if ( !isset( $info['checkout-rev'] ) ) {
- return false;
- }
-
- $linkText = wfMessage(
- 'version-svn-revision',
- isset( $info['directory-rev'] ) ? $info['directory-rev'] : '',
- $info['checkout-rev']
- )->text();
-
- if ( isset( $info['viewvc-url'] ) ) {
- $version = "[{$info['viewvc-url']} $linkText]";
- } else {
- $version = $linkText;
- }
-
- return self::getwgVersionLinked() . " $version";
- }
-
/**
* @return string
*/
}
// ... and the version information
- // If the extension path is set we will check that directory for GIT and SVN
+ // If the extension path is set we will check that directory for GIT
// metadata in an attempt to extract date and vcs commit metadata.
$canonicalVersion = '–';
$extensionPath = null;
$coreHeadSHA1 = self::getGitHeadSha1( $IP );
if ( $coreHeadSHA1 ) {
$this->coreId = $coreHeadSHA1;
- } else {
- $svnInfo = self::getSvnInfo( $IP );
- if ( $svnInfo !== false ) {
- $this->coreId = $svnInfo['checkout-rev'];
- }
}
}
$cache = wfGetCache( CACHE_ANYTHING );
$vcsVersion = substr( $vcsVersion, 0, 7 );
$vcsLink = $gitInfo->getHeadViewUrl();
$vcsDate = $gitInfo->getHeadCommitDate();
- } else {
- $svnInfo = self::getSvnInfo( $extensionPath );
- if ( $svnInfo !== false ) {
- $vcsVersion = $this->msg( 'version-svn-revision', $svnInfo['checkout-rev'] )->text();
- $vcsLink = isset( $svnInfo['viewvc-url'] ) ? $svnInfo['viewvc-url'] : '';
- }
}
$cache->set( $memcKey, array( $vcsVersion, $vcsLink, $vcsDate ), 60 * 60 * 24 );
} else {
}
}
- /**
- * Get an associative array of information about a given path, from its .svn
- * subdirectory. Returns false on error, such as if the directory was not
- * checked out with subversion.
- *
- * Returned keys are:
- * Required:
- * checkout-rev The revision which was checked out
- * Optional:
- * directory-rev The revision when the directory was last modified
- * url The subversion URL of the directory
- * repo-url The base URL of the repository
- * viewvc-url A ViewVC URL pointing to the checked-out revision
- * @param string $dir
- * @return array|bool
- */
- public static function getSvnInfo( $dir ) {
- // http://svnbook.red-bean.com/nightly/en/svn.developer.insidewc.html
- $entries = $dir . '/.svn/entries';
-
- if ( !file_exists( $entries ) ) {
- return false;
- }
-
- $lines = file( $entries );
- if ( !count( $lines ) ) {
- return false;
- }
-
- // check if file is xml (subversion release <= 1.3) or not (subversion release = 1.4)
- if ( preg_match( '/^<\?xml/', $lines[0] ) ) {
- // subversion is release <= 1.3
- if ( !function_exists( 'simplexml_load_file' ) ) {
- // We could fall back to expat... YUCK
- return false;
- }
-
- // SimpleXml whines about the xmlns...
- MediaWiki\suppressWarnings();
- $xml = simplexml_load_file( $entries );
- MediaWiki\restoreWarnings();
-
- if ( $xml ) {
- foreach ( $xml->entry as $entry ) {
- if ( $xml->entry[0]['name'] == '' ) {
- // The directory entry should always have a revision marker.
- if ( $entry['revision'] ) {
- return array( 'checkout-rev' => intval( $entry['revision'] ) );
- }
- }
- }
- }
-
- return false;
- }
-
- // Subversion is release 1.4 or above.
- if ( count( $lines ) < 11 ) {
- return false;
- }
-
- $info = array(
- 'checkout-rev' => intval( trim( $lines[3] ) ),
- 'url' => trim( $lines[4] ),
- 'repo-url' => trim( $lines[5] ),
- 'directory-rev' => intval( trim( $lines[10] ) )
- );
-
- if ( isset( self::$viewvcUrls[$info['repo-url']] ) ) {
- $viewvc = str_replace(
- $info['repo-url'],
- self::$viewvcUrls[$info['repo-url']],
- $info['url']
- );
-
- $viewvc .= '/?pathrev=';
- $viewvc .= urlencode( $info['checkout-rev'] );
- $info['viewvc-url'] = $viewvc;
- }
-
- return $info;
- }
-
- /**
- * Retrieve the revision number of a Subversion working directory.
- *
- * @param string $dir Directory of the svn checkout
- *
- * @return int Revision number
- */
- public static function getSvnRevision( $dir ) {
- $info = self::getSvnInfo( $dir );
-
- if ( $info === false ) {
- return false;
- } elseif ( isset( $info['checkout-rev'] ) ) {
- return $info['checkout-rev'];
- } else {
- return false;
- }
- }
-
/**
* @param string $dir Directory of the git checkout
* @return bool|string Sha1 of commit HEAD points to
"version-hook-subscribedby": "Subscribed by",
"version-version": "($1)",
"version-no-ext-name": "[no name]",
- "version-svn-revision": "r$1",
"version-license": "MediaWiki License",
"version-ext-license": "License",
"version-ext-colheader-name": "Extension",
"version-hook-subscribedby": "Shown in [[Special:Version]]",
"version-version": "{{Optional}}\nUsed in [[Special:Version]]. Preceded by the MediaWiki extension name.\n\nParameters:\n* $1 - version number of the extension",
"version-no-ext-name": "Used in [[Special:Version]], in the rows of the main table when a name for an extension is not provided.",
- "version-svn-revision": "{{Identical|Revision}}{{optional}}\nUsed in [[Special:Version]], preceeding the Subversion revision numbers of the extensions loaded inside brackets, like this: \"({{int:version-revision}} r012345\"). Parameters:\n* $1 - (Unused) directory revision number or empty string\n* $2 - checkout revision number",
"version-license": "Used specifically for the MediaWiki software.\n\nUsed as heading in [[Special:Version]].",
"version-ext-license": "Used in [[Special:Version]].\n\nUsed as label for the link pointing to the extension's license page. e.g. [[Special:Version/License/Maps]]\n{{Identical|License}}",
"version-ext-colheader-name": "Column header for the name of an extension.\n{{Identical|Extension}}",
'idIsSafe' => true,
) ),
$store,
+ $store,
new \Psr\Log\NullLogger(),
10
);
'idIsSafe' => true,
) ),
new \EmptyBagOStuff(),
+ new \EmptyBagOStuff(),
new \Psr\Log\NullLogger(),
10
);
'idIsSafe' => true,
) ),
$store,
+ $store,
new \Psr\Log\NullLogger(),
10
);
'idIsSafe' => true,
) ),
new \EmptyBagOStuff(),
+ new \EmptyBagOStuff(),
new \Psr\Log\NullLogger(),
10
);
$this->assertSame( $expect, $_SESSION );
}
- // Test expiry
- session_write_close();
- ini_set( 'session.gc_divisor', 1 );
- ini_set( 'session.gc_probability', 1 );
- sleep( 3 );
- session_start();
- $this->assertSame( array(), $_SESSION );
-
// Re-fill the session, then test that session_destroy() works.
$_SESSION['AuthenticationSessionTest'] = $rand;
session_write_close();
) );
$id = new SessionId( $info->getId() );
- $backend = new SessionBackend( $id, $info, $this->store, $logger, 10 );
+ $backend = new SessionBackend( $id, $info, $this->store, $this->store, $logger, 10 );
$priv = \TestingAccessWrapper::newFromObject( $backend );
$priv->persist = false;
$priv->requests = array( 100 => new \FauxRequest() );
$id = new SessionId( $info->getId() );
$logger = new \Psr\Log\NullLogger();
try {
- new SessionBackend( $id, $info, $this->store, $logger, 10 );
+ new SessionBackend( $id, $info, $this->store, $this->store, $logger, 10 );
$this->fail( 'Expected exception not thrown' );
} catch ( \InvalidArgumentException $ex ) {
$this->assertSame(
) );
$id = new SessionId( $info->getId() );
try {
- new SessionBackend( $id, $info, $this->store, $logger, 10 );
+ new SessionBackend( $id, $info, $this->store, $this->store, $logger, 10 );
$this->fail( 'Expected exception not thrown' );
} catch ( \InvalidArgumentException $ex ) {
$this->assertSame( 'Cannot create session without a provider', $ex->getMessage() );
) );
$id = new SessionId( '!' . $info->getId() );
try {
- new SessionBackend( $id, $info, $this->store, $logger, 10 );
+ new SessionBackend( $id, $info, $this->store, $this->store, $logger, 10 );
$this->fail( 'Expected exception not thrown' );
} catch ( \InvalidArgumentException $ex ) {
$this->assertSame(
'idIsSafe' => true,
) );
$id = new SessionId( $info->getId() );
- $backend = new SessionBackend( $id, $info, $this->store, $logger, 10 );
+ $backend = new SessionBackend( $id, $info, $this->store, $this->store, $logger, 10 );
$this->assertSame( self::SESSIONID, $backend->getId() );
$this->assertSame( $id, $backend->getSessionId() );
$this->assertSame( $this->provider, $backend->getProvider() );
'idIsSafe' => true,
) );
$id = new SessionId( $info->getId() );
- $backend = new SessionBackend( $id, $info, $this->store, $logger, 10 );
+ $backend = new SessionBackend( $id, $info, $this->store, $this->store, $logger, 10 );
$this->assertSame( self::SESSIONID, $backend->getId() );
$this->assertSame( $id, $backend->getSessionId() );
$this->assertSame( $this->provider, $backend->getProvider() );
$manager = \TestingAccessWrapper::newFromObject( $this->getManager() );
$this->assertSame( $this->config, $manager->config );
$this->assertSame( $this->logger, $manager->logger );
- $this->assertSame( $this->store, $manager->store );
+ $this->assertSame( $this->store, $manager->permStore );
$manager = \TestingAccessWrapper::newFromObject( new SessionManager() );
$this->assertSame( \RequestContext::getMain()->getConfig(), $manager->config );
$manager = \TestingAccessWrapper::newFromObject( new SessionManager( array(
'config' => $this->config,
) ) );
- $this->assertSame( \ObjectCache::$instances['testSessionStore'], $manager->store );
+ $this->assertSame( \ObjectCache::$instances['testSessionStore'], $manager->permStore );
foreach ( array(
'config' => '$options[\'config\'] must be an instance of Config',
public function testGetSessionById() {
$manager = $this->getManager();
+ // Disable the in-process cache so our $this->store->setSession() takes effect.
+ \TestingAccessWrapper::newFromObject( $manager )->tempStore = new \EmptyBagOStuff;
+
try {
$manager->getSessionById( 'bad' );
$this->fail( 'Expected exception not thrown' );
$manager->setLogger( $logger );
$request = new \FauxRequest();
+ // Disable the in-process cache so our $this->store->setSession() takes effect.
+ \TestingAccessWrapper::newFromObject( $manager )->tempStore = new \EmptyBagOStuff;
+
// TestingAccessWrapper can't handle methods with reference arguments, sigh.
$rClass = new \ReflectionClass( $manager );
$rMethod = $rClass->getMethod( 'loadSessionInfoFromStore' );