Merge "filebackend: rename and simplify header sanitizing methods in SwiftFileBackend"
[lhc/web/wiklou.git] / tests / phpunit / includes / specials / SpecialMuteTest.php
1 <?php
2
3 /**
4 * @group SpecialPage
5 * @covers SpecialMute
6 */
7 class SpecialMuteTest extends SpecialPageTestBase {
8
9 protected function setUp() {
10 parent::setUp();
11
12 $this->setMwGlobals( [
13 'wgEnableUserEmailBlacklist' => true
14 ] );
15 }
16
17 /**
18 * @inheritDoc
19 */
20 protected function newSpecialPage() {
21 return new SpecialMute();
22 }
23
24 /**
25 * @covers SpecialMute::execute
26 * @expectedExceptionMessage username requested could not be found
27 * @expectedException ErrorPageError
28 */
29 public function testInvalidTarget() {
30 $user = $this->getTestUser()->getUser();
31 $this->executeSpecialPage(
32 'InvalidUser', null, 'qqx', $user
33 );
34 }
35
36 /**
37 * @covers SpecialMute::execute
38 * @expectedExceptionMessage Mute features are unavailable
39 * @expectedException ErrorPageError
40 */
41 public function testEmailBlacklistNotEnabled() {
42 $this->setTemporaryHook(
43 'SpecialMuteModifyFormFields',
44 null
45 );
46
47 $this->setMwGlobals( [
48 'wgEnableUserEmailBlacklist' => false
49 ] );
50
51 $user = $this->getTestUser()->getUser();
52 $this->executeSpecialPage(
53 $user->getName(), null, 'qqx', $user
54 );
55 }
56
57 /**
58 * @covers SpecialMute::execute
59 * @expectedException UserNotLoggedIn
60 */
61 public function testUserNotLoggedIn() {
62 $this->executeSpecialPage( 'TestUser' );
63 }
64
65 /**
66 * @covers SpecialMute::execute
67 */
68 public function testMuteAddsUserToEmailBlacklist() {
69 $this->setMwGlobals( [
70 'wgCentralIdLookupProvider' => 'local',
71 ] );
72
73 $targetUser = $this->getTestUser()->getUser();
74
75 $loggedInUser = $this->getMutableTestUser()->getUser();
76 $loggedInUser->setOption( 'email-blacklist', "999" );
77 $loggedInUser->confirmEmail();
78 $loggedInUser->saveSettings();
79
80 $fauxRequest = new FauxRequest( [ 'wpemail-blacklist' => true ], true );
81 list( $html, ) = $this->executeSpecialPage(
82 $targetUser->getName(), $fauxRequest, 'qqx', $loggedInUser
83 );
84
85 $this->assertContains( 'specialmute-success', $html );
86 $this->assertEquals(
87 "999\n" . $targetUser->getId(),
88 $loggedInUser->getOption( 'email-blacklist' )
89 );
90 }
91
92 /**
93 * @covers SpecialMute::execute
94 */
95 public function testUnmuteRemovesUserFromEmailBlacklist() {
96 $this->setMwGlobals( [
97 'wgCentralIdLookupProvider' => 'local',
98 ] );
99
100 $targetUser = $this->getTestUser()->getUser();
101
102 $loggedInUser = $this->getMutableTestUser()->getUser();
103 $loggedInUser->setOption( 'email-blacklist', "999\n" . $targetUser->getId() );
104 $loggedInUser->confirmEmail();
105 $loggedInUser->saveSettings();
106
107 $fauxRequest = new FauxRequest( [ 'wpemail-blacklist' => false ], true );
108 list( $html, ) = $this->executeSpecialPage(
109 $targetUser->getName(), $fauxRequest, 'qqx', $loggedInUser
110 );
111
112 $this->assertContains( 'specialmute-success', $html );
113 $this->assertEquals( "999", $loggedInUser->getOption( 'email-blacklist' ) );
114 }
115 }