Page MenuHomeWickedGov Phorge

CentralAuthUserUsingDatabaseTest.php
No OneTemporary

Size
6 KB
Referenced Files
None
Subscribers
None

CentralAuthUserUsingDatabaseTest.php

<?php
use MediaWiki\Extension\CentralAuth\User\CentralAuthUser;
use MediaWiki\WikiMap\WikiMap;
/**
* Setup database tests for centralauth
*
* @covers MediaWiki\Extension\CentralAuth\User\CentralAuthUser
* @group CentralAuthDB
* @group Database
*/
class CentralAuthUserUsingDatabaseTest extends MediaWikiIntegrationTestCase {
public function testBasicAttrs() {
$caUser = CentralAuthUser::getInstanceByName( 'GlobalUser' );
$this->assertTrue( $caUser->exists() );
$this->assertSame( 1001, $caUser->getId() );
$this->assertSame( 'GlobalUser', $caUser->getName() );
$this->assertSame( WikiMap::getCurrentWikiId(), $caUser->getHomeWiki() );
$this->assertTrue( $caUser->isAttached() );
$this->assertFalse( $caUser->isLocked() );
$this->assertSame( '20130627183537', $caUser->getRegistration() );
$this->assertSame(
CentralAuthUser::HIDDEN_LEVEL_NONE,
$caUser->getHiddenLevelInt()
);
$this->assertSame(
'8de7319aacab2020d38db1fbfac313a4',
$caUser->getStateHash()
);
}
public function testLoadFromDB() {
$caUser = CentralAuthUser::getInstanceByName( 'GlobalUser' );
$caUser->loadStateNoCache();
$this->assertTrue( $caUser->exists() );
$this->assertSame( 1001, $caUser->getId() );
}
public function testLoadAttached() {
$caUser = CentralAuthUser::getInstanceByName( 'GlobalUser' );
$this->assertArrayEquals(
[
WikiMap::getCurrentWikiId(),
'enwiki',
'dewiki',
'metawiki',
],
$caUser->listAttached()
);
}
public function testGetAuthToken() {
$caUserUnattached = CentralAuthUser::newUnattached(
'UnattachedUser',
false
);
$token = $caUserUnattached->getAuthToken();
$this->assertSame( 1, preg_match( '/^[0-9a-f]{32}$/', $token ) );
}
public function testNewFromId() {
$ca = CentralAuthUser::newFromId( 1001 );
$this->assertSame( 'GlobalUser', $ca->getName() );
$caBad = CentralAuthUser::newFromId( -1001 );
$this->assertFalse( $caBad );
}
public function testRegister() {
$caUserNew = CentralAuthUser::getPrimaryInstanceByName( 'RegTest' );
$ok = $caUserNew->register( "R3gT3stP@ssword", "user@localhost" );
$this->assertTrue( $ok );
$caUser = CentralAuthUser::getInstanceByName( 'RegTest' );
$this->assertTrue( $caUser->exists() );
// And duplicate registration doesn't throw an exception (T108541)
$this->assertFalse( $caUserNew->register( "R3gT3stP@ssword", "user@localhost" ) );
}
public function testLocked() {
$caUser = CentralAuthUser::getInstanceByName( 'GlobalLockedUser' );
$this->assertTrue( $caUser->exists() );
$this->assertTrue( $caUser->isLocked() );
}
public function testHidden() {
$caUser = CentralAuthUser::getInstanceByName( 'GlobalSuppressedUser' );
$this->assertTrue( $caUser->exists() );
$this->assertTrue( $caUser->isHidden() );
$this->assertTrue( $caUser->isSuppressed() );
$this->assertSame( CentralAuthUser::HIDDEN_LEVEL_SUPPRESSED, $caUser->getHiddenLevelInt() );
}
public function testStoreMigrationData() {
$caUsers = [
'2001' => 'StoreMigrationDataUser 1',
'2002' => 'StoreMigrationDataUser 2',
'2003' => 'StoreMigrationDataUser 3',
];
CentralAuthUser::storeMigrationData( 'smdwiki', $caUsers );
$this->newSelectQueryBuilder()
->select( 'ln_name' )
->from( 'localnames' )
->where( [ 'ln_wiki' => 'smdwiki' ] )
->assertResultSet( [
[ 'StoreMigrationDataUser 1' ],
[ 'StoreMigrationDataUser 2' ],
[ 'StoreMigrationDataUser 3' ],
] );
}
public function testAdminLockAndHide() {
$caUser = CentralAuthUser::getPrimaryInstanceByName( 'GlobalUser' );
$this->assertTrue( $caUser->exists() );
$this->assertFalse( $caUser->isHidden() );
$this->assertFalse( $caUser->isLocked() );
$caUser->adminLock();
$caUser->adminSetHidden( CentralAuthUser::HIDDEN_LEVEL_LISTS );
// Check the DB
$this->newSelectQueryBuilder()
->select( [ 'gu_name', 'gu_locked', 'gu_hidden_level' ] )
->from( 'globaluser' )
->where( [ 'gu_name' => 'GlobalUser' ] )
->assertResultSet( [
[ 'GlobalUser', '1', CentralAuthUser::HIDDEN_LEVEL_LISTS ]
] );
// Check that the instance was reloaded from the DB
$this->assertTrue( $caUser->exists() );
$this->assertTrue( $caUser->isLocked() );
$this->assertTrue( $caUser->isHidden() );
// Ignore cache, read from DB for new instance
$caUser = CentralAuthUser::getPrimaryInstanceByName( 'GlobalUser' );
$this->assertTrue( $caUser->exists() );
$this->assertTrue( $caUser->isLocked() );
$this->assertTrue( $caUser->isHidden() );
$caUser->adminUnlock();
$caUser->adminSetHidden( CentralAuthUser::HIDDEN_LEVEL_NONE );
// Check that the instance was reloaded from the DB
$this->assertTrue( $caUser->exists() );
$this->assertFalse( $caUser->isHidden() );
$this->assertFalse( $caUser->isLocked() );
// Ignore cache, read from DB for new instance
$caUser = CentralAuthUser::getPrimaryInstanceByName( 'GlobalUser' );
$this->assertTrue( $caUser->exists() );
$this->assertFalse( $caUser->isHidden() );
$this->assertFalse( $caUser->isLocked() );
}
public function testAttach() {
$caUser = new class( 'GlobalUser' ) extends CentralAuthUser {
protected function addLocalEdits( $wikiID ) {
// This test can't connect to anotherwiki to fetch edit counts
}
};
$caUser->attach( 'anotherwiki', 'admin', false );
$this->assertTrue( $caUser->exists() );
$this->assertContains( 'anotherwiki', $caUser->listAttached() );
}
/**
* Setup a fresh set of global users for each test.
* Note: MediaWikiIntegrationTestCase::resetDB() will delete all tables between
* test runs, so no explicite tearDown() is needed.
*/
protected function setUp(): void {
parent::setUp();
$user = new CentralAuthTestUser(
'GlobalUser',
'GUP@ssword',
[ 'gu_id' => '1001' ],
[
[ WikiMap::getCurrentWikiId(), 'primary' ],
[ 'enwiki', 'primary' ],
[ 'dewiki', 'login' ],
[ 'metawiki', 'password' ],
]
);
$user->save( $this->getDb() );
$u = new CentralAuthTestUser(
'GlobalLockedUser',
'GLUP@ssword',
[
'gu_id' => '1003',
'gu_locked' => 1,
'gu_hidden_level' => CentralAuthUser::HIDDEN_LEVEL_NONE,
'gu_email' => 'testlocked@localhost',
'gu_home_db' => 'metawiki',
],
[
[ 'metawiki', 'primary' ],
]
);
$u->save( $this->getDb() );
$u = new CentralAuthTestUser(
'GlobalSuppressedUser',
'GSUP@ssword',
[
'gu_id' => '1004',
'gu_locked' => 1,
'gu_hidden_level' => CentralAuthUser::HIDDEN_LEVEL_SUPPRESSED,
'gu_email' => 'testsuppressed@localhost',
'gu_home_db' => 'metawiki',
],
[
[ 'metawiki', 'primary' ],
]
);
$u->save( $this->getDb() );
}
}

File Metadata

Mime Type
text/x-php
Expires
Fri, Jul 3, 19:40 (1 d, 3 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
29/e6/fd3561b2ac6aa93a2b361c8123d5
Default Alt Text
CentralAuthUserUsingDatabaseTest.php (6 KB)

Event Timeline