Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F2752185
CentralAuthUserUsingDatabaseTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
CentralAuthUserUsingDatabaseTest.php
View Options
<?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
Details
Attached
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)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment