aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/includes/import/ImportTemporaryUserIntegrationTest.php
blob: 767e1007b1bacf8ee42d0f12ce0e571fea6f705b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php

use MediaWiki\Context\RequestContext;
use MediaWiki\MainConfigNames;
use MediaWiki\Tests\User\TempUser\TempUserTestTrait;
use Wikimedia\Timestamp\ConvertibleTimestamp;

/**
 * @group Database
 * @coversNothing
 */
class ImportTemporaryUserIntegrationTest extends MediaWikiIntegrationTestCase {
	use TempUserTestTrait;

	/**
	 * Test that category membership changes in RC function for imported anonymous revisions
	 * when temporary users are enabled (T373318).
	 */
	public function testShouldSuccessfullyUpdateCategoryMembershipInRecentChanges(): void {
		$this->enableAutoCreateTempUser();
		$this->overrideConfigValue( MainConfigNames::RCWatchCategoryMembership, true );

		$referenceTime = wfTimestampNow();
		ConvertibleTimestamp::setFakeTime( $referenceTime );

		$this->importTestData();
		$this->runJobs();

		$rc = RecentChange::newFromConds( [
			'rc_namespace' => NS_CATEGORY,
			'rc_title' => 'Test',
			'rc_source' => RecentChange::SRC_CATEGORIZE
		], __METHOD__ );

		$this->assertSame( '192.0.2.14', $rc->getPerformerIdentity()->getName() );
		$this->assertSame( $referenceTime, $rc->getAttribute( 'rc_timestamp' ) );
	}

	private function importTestData(): void {
		$file = __DIR__ . '/../../data/import/ImportAnonUserTest.xml';

		$importStreamSource = ImportStreamSource::newFromFile( $file );

		$this->assertTrue(
			$importStreamSource->isGood(),
			"Import source {$file} failed"
		);

		$importer = $this->getServiceContainer()
			->getWikiImporterFactory()
			->getWikiImporter( $importStreamSource->value, $this->getTestSysop()->getAuthority() );
		$importer->setDebug( true );

		$context = RequestContext::getMain();
		$context->setUser( $this->getTestUser()->getUser() );
		$reporter = new ImportReporter(
			$importer,
			false,
			'',
			false,
			$context
		);

		$reporter->open();
		$importer->doImport();
		$this->assertStatusGood( $reporter->close() );
	}
}