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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use PhpMyAdmin\Replication;
use PhpMyAdmin\ReplicationGui;
use PhpMyAdmin\ReplicationInfo;
use PhpMyAdmin\Template;
/**
* @covers \PhpMyAdmin\ReplicationGui
*/
#[\PHPUnit\Framework\Attributes\CoversClass(\PhpMyAdmin\ReplicationGui::class)]
class ReplicationGuiTest extends AbstractTestCase
{
/**
* ReplicationGui instance
*
* @var ReplicationGui
*/
private $replicationGui;
/**
* Prepares environment for the test.
*/
protected function setUp(): void
{
parent::setUp();
//$_POST
$_POST['primary_add_user'] = 'primary_add_user';
//$GLOBALS
$GLOBALS['cfg']['MaxRows'] = 10;
$GLOBALS['cfg']['ServerDefault'] = 'server';
$GLOBALS['cfg']['RememberSorting'] = true;
$GLOBALS['cfg']['SQP'] = [];
$GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 1000;
$GLOBALS['cfg']['ShowSQL'] = true;
$GLOBALS['cfg']['TableNavigationLinksMode'] = 'icons';
$GLOBALS['cfg']['LimitChars'] = 100;
$GLOBALS['cfg']['DBG']['sql'] = false;
$GLOBALS['cfg']['ShowHint'] = true;
$GLOBALS['table'] = 'table';
$GLOBALS['server'] = 0;
$GLOBALS['urlParams'] = [];
$this->replicationGui = new ReplicationGui(new Replication(), new Template());
}
/**
* @group medium
*/
#[\PHPUnit\Framework\Attributes\Group('medium-group')]
public function testGetHtmlForPrimaryReplication(): void
{
$html = $this->replicationGui->getHtmlForPrimaryReplication();
//validate 1: Primary replication
self::assertStringContainsString('<div class="card-header">Primary replication</div>', $html);
self::assertStringContainsString('This server is configured as primary in a replication process.', $html);
//validate 2: getHtmlForReplicationStatusTable
self::assertStringContainsString('<div id="replication_primary_section"', $html);
self::assertStringContainsString('Binlog_Do_DB', $html);
self::assertStringContainsString('Binlog_Ignore_DB', $html);
self::assertStringContainsString('primary-bin.000030', $html);
//validate 3: getHtmlForReplicationReplicasTable
self::assertStringContainsString('replication_replicas_section', $html);
self::assertStringContainsString('<th>Server ID</th>', $html);
self::assertStringContainsString('<th>Host</th>', $html);
//replica host
self::assertStringContainsString('<td class="text-end font-monospace">Server_id1</td>', $html);
self::assertStringContainsString('<td class="text-end font-monospace">Server_id2</td>', $html);
self::assertStringContainsString('<td class="text-end font-monospace">Host1</td>', $html);
self::assertStringContainsString('<td class="text-end font-monospace">Host2</td>', $html);
//Notice
self::assertStringContainsString('Only replicas started with the', $html);
//validate 4: navigation URL
self::assertStringContainsString('<a href="index.php?route=/server/replication', $html);
self::assertStringContainsString('Add replica replication user', $html);
//validate 5: 'Add replication replica user' form
self::assertStringContainsString('<div id="primary_addreplicauser_gui">', $html);
}
public function testGetHtmlForReplicaConfiguration(): void
{
$replicationInfo = new ReplicationInfo($GLOBALS['dbi']);
$replicationInfo->load();
//Call the test function
$html = $this->replicationGui->getHtmlForReplicaConfiguration(
true,
$replicationInfo->getReplicaStatus()
);
//legend
self::assertStringContainsString('<div class="card-header">Replica replication</div>', $html);
self::assertStringContainsString('<div id="replica_configuration_gui">', $html);
//notice
self::assertStringContainsString('Server is configured as replica in a replication process.', $html);
//replica session
self::assertStringContainsString('<div id="replication_replica_section"', $html);
//variable
self::assertStringContainsString('Master_SSL_CA_Path', $html);
self::assertStringContainsString('Master_SSL_Cert', $html);
self::assertStringContainsString('Master_SSL_Cipher', $html);
self::assertStringContainsString('Seconds_Behind_Master', $html);
}
public function testGetHtmlForReplicationChangePrimary(): void
{
//Call the test function
$html = $this->replicationGui->getHtmlForReplicationChangePrimary('replica_changeprimary');
self::assertStringContainsString('<form method="post" action="index.php?route=/server/replication', $html);
self::assertStringContainsString('Replica configuration', $html);
self::assertStringContainsString('Change or reconfigure primary server', $html);
$notice = 'Make sure you have a unique server-id in your configuration file (my.cnf)';
self::assertStringContainsString($notice, $html);
}
}
|