From 7a3c4b0a8742a86376676fe284cce4c4bd998084 Mon Sep 17 00:00:00 2001 From: Dreamy Jazz Date: Sat, 27 Jul 2024 22:13:47 +0100 Subject: [PATCH] Test CheckSignatures.php Why: * The maintenance scripts in core are mostly untested and testing the less complex scripts will improve the test coverage in core. What: * Add CheckSignaturesTest.php Bug: T371167 Change-Id: Ie9a8035716148cd91fd3c9886c8b23c3894b866a --- .../maintenance/CheckSignaturesTest.php | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tests/phpunit/maintenance/CheckSignaturesTest.php diff --git a/tests/phpunit/maintenance/CheckSignaturesTest.php b/tests/phpunit/maintenance/CheckSignaturesTest.php new file mode 100644 index 00000000000..205e35c243f --- /dev/null +++ b/tests/phpunit/maintenance/CheckSignaturesTest.php @@ -0,0 +1,77 @@ +getMutableTestUser()->getUserIdentity(); + $returnArray[] = $testUser; + } + return $returnArray; + } + + /** + * @param int $count + * @return UserIdentity[] + */ + private function generateUsersWithInvalidSignatures( int $count ): array { + $userOptionsManager = $this->getServiceContainer()->getUserOptionsManager(); + $returnArray = $this->generateMutableTestUsers( $count ); + foreach ( $returnArray as $user ) { + // Set the signature to invalid HTML + $userOptionsManager->setOption( $user, 'nickname', '{{test' ); + $userOptionsManager->setOption( $user, 'fancysig', true ); + $userOptionsManager->saveOptions( $user ); + } + return $returnArray; + } + + private function generateUsersWithValidSignatures( int $count ) { + $userOptionsManager = $this->getServiceContainer()->getUserOptionsManager(); + foreach ( $this->generateMutableTestUsers( $count ) as $user ) { + // Set the signature to invalid HTML + $userOptionsManager->setOption( $user, 'nickname', '[[User:' . $user->getName() . "]]" ); + $userOptionsManager->setOption( $user, 'fancysig', true ); + $userOptionsManager->saveOptions( $user ); + } + } + + /** @dataProvider provideExecute */ + public function testExecute( $validCount, $invalidCount ) { + $usersWithInvalidSignatures = $this->generateUsersWithInvalidSignatures( $invalidCount ); + $this->generateUsersWithValidSignatures( $validCount ); + $this->maintenance->execute(); + $expectedOutputRegex = '/'; + foreach ( $usersWithInvalidSignatures as $user ) { + $expectedOutputRegex .= $user->getName() . "\n"; + } + $expectedOutputRegex .= ".*$invalidCount invalid signatures/"; + $this->expectOutputRegex( $expectedOutputRegex ); + } + + public static function provideExecute() { + return [ + 'All signatures valid' => [ 4, 0 ], + 'Some signatures valid' => [ 2, 3 ], + ]; + } +}