Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
TestHandler
n/a
0 / 0
n/a
0 / 0
5
n/a
0 / 0
 __construct
n/a
0 / 0
n/a
0 / 0
1
 onUnitTestsAfterDatabaseSetup
n/a
0 / 0
n/a
0 / 0
2
 onUnitTestsBeforeDatabaseTeardown
n/a
0 / 0
n/a
0 / 0
2
1<?php
2declare( strict_types=1 );
3
4namespace MediaWiki\Extension\OATHAuth\Hook;
5
6use MediaWiki\Hook\UnitTestsAfterDatabaseSetupHook;
7use MediaWiki\Hook\UnitTestsBeforeDatabaseTeardownHook;
8use Wikimedia\Rdbms\ILoadBalancer;
9
10/** @codeCoverageIgnore */
11class TestHandler implements
12    UnitTestsAfterDatabaseSetupHook,
13    UnitTestsBeforeDatabaseTeardownHook
14{
15
16    public function __construct(
17        private readonly ILoadBalancer $loadBalancer,
18    ) {
19    }
20
21    /**
22     * If OATHAuth uses a different DB from the wiki default, create the tables in that DB.
23     * Largely follows UnitTestsHookHandler in CentralAuth.
24     * @inheritDoc
25     */
26    public function onUnitTestsAfterDatabaseSetup( $db, $prefix ) {
27        $originalPrefix = $db->tablePrefix();
28        $db->tablePrefix( $prefix );
29        if ( !$db->tableExists( 'oathauth_types', __METHOD__ ) ) {
30            $engine = $db->getType();
31            $db->sourceFile( __DIR__ . "/../../sql/$engine/tables-generated.sql" );
32        }
33        $db->tablePrefix( $originalPrefix );
34    }
35
36    public function onUnitTestsBeforeDatabaseTeardown() {
37        $schema = json_decode( file_get_contents( __DIR__ . '/../../sql/tables.json' ), true );
38        $tables = array_map( static fn ( $tableSchema ) => $tableSchema['name'], $schema );
39        $dbw = $this->loadBalancer->getMaintenanceConnectionRef( DB_PRIMARY );
40        foreach ( $tables as $table ) {
41            $dbw->dropTable( $table, __METHOD__ );
42        }
43    }
44
45}