Page MenuHomeWickedGov Phorge

AbuseFilterTest.php
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

AbuseFilterTest.php

<?php
namespace MediaWiki\Extension\ConfirmEdit\Tests\Integration;
use MediaWiki\Config\HashConfig;
use MediaWiki\Extension\AbuseFilter\Consequences\Parameters;
use MediaWiki\Extension\ConfirmEdit\AbuseFilter\CaptchaConsequence;
use MediaWiki\Extension\ConfirmEdit\AbuseFilterHooks;
use MediaWiki\Extension\ConfirmEdit\Hooks;
use MediaWiki\Registration\ExtensionRegistry;
use MediaWikiIntegrationTestCase;
use TestLogger;
/**
* @covers \MediaWiki\Extension\ConfirmEdit\AbuseFilter\CaptchaConsequence
* @covers \MediaWiki\Extension\ConfirmEdit\AbuseFilterHooks
*/
class AbuseFilterTest extends MediaWikiIntegrationTestCase {
public static function setUpBeforeClass(): void {
// Cannot use markTestSkippedIfExtensionNotLoaded() because we need to skip the entire class.
// Specifically, skip MediaWikiCoversValidator because AbuseFilterHooks.php fails.
if ( !ExtensionRegistry::getInstance()->isLoaded( 'Abuse Filter' ) ) {
self::markTestSkipped( "AbuseFilter extension is required for this test" );
}
}
public function testOnAbuseFilterCustomActions() {
$config = new HashConfig( [ 'ConfirmEditEnabledAbuseFilterCustomActions' => [ 'showcaptcha' ] ] );
$abuseFilterHooks = new AbuseFilterHooks( $config );
$actions = [];
$abuseFilterHooks->onAbuseFilterCustomActions( $actions );
$this->assertArrayHasKey( 'showcaptcha', $actions );
}
public function testConsequence() {
$parameters = $this->createMock( Parameters::class );
$parameters->method( 'getAction' )->willReturn( 'edit' );
$captchaConsequence = new CaptchaConsequence( $parameters );
$simpleCaptcha = Hooks::getInstance( 'edit' );
$this->assertFalse( $simpleCaptcha->shouldForceShowCaptcha() );
$captchaConsequence->execute();
$this->assertTrue( $simpleCaptcha->shouldForceShowCaptcha() );
}
public function testConsequenceActionDoesNotMatch() {
$logger = new TestLogger( true );
$this->setLogger( 'ConfirmEdit', $logger );
$parameters = $this->createMock( Parameters::class );
$parameters->method( 'getAction' )->willReturn( 'foo' );
$captchaConsequence = new CaptchaConsequence( $parameters );
$simpleCaptcha = Hooks::getInstance( 'bar' );
$this->assertFalse( $simpleCaptcha->shouldForceShowCaptcha() );
$captchaConsequence->execute();
$this->assertFalse( $simpleCaptcha->shouldForceShowCaptcha() );
$this->assertEquals(
'Filter {filter}: {action} is not defined in the list of triggers known to ConfirmEdit',
$logger->getBuffer()[0][1]
);
}
}

File Metadata

Mime Type
text/x-php
Expires
Aug 17 2026, 07:04 (11 w, 4 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
73/a6/c639d3a3561fd70c6c6b699b87da
Default Alt Text
AbuseFilterTest.php (2 KB)

Event Timeline