File: ServerSettingsTest.php

package info (click to toggle)
phpmyadmin 4%3A5.2.1%2Bdfsg-1%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 131,332 kB
  • sloc: javascript: 212,681; php: 168,094; xml: 18,098; sql: 504; sh: 274; makefile: 205; python: 199
file content (143 lines) | stat: -rw-r--r-- 3,779 bytes parent folder | download
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?php

declare(strict_types=1);

namespace PhpMyAdmin\Tests\Selenium;

use function sleep;

/**
 * @coversNothing
 */
class ServerSettingsTest extends TestBase
{
    /**
     * Create a test database for this test class
     *
     * @var bool
     */
    protected static $createDatabase = false;

    /**
     * setUp function
     */
    protected function setUp(): void
    {
        parent::setUp();
        $this->login();
        $this->expandMore();
        $this->waitForElement('partialLinkText', 'Settings')->click();
        $this->waitAjax();

        $this->waitForElement('xpath', "//a[@class='nav-link text-nowrap' and contains(., 'Settings')]");
    }

    /**
     * Saves config and asserts correct message.
     */
    private function saveConfig(): void
    {
        // Submit the form
        $ele = $this->waitForElement(
            'xpath',
            "//div[contains(@class, 'tab-pane') and contains(@class, 'show')"
                . " and contains(@class, 'active')]//input[@value='Apply']"
        );
        $this->scrollToBottom();
        $this->moveto($ele);
        $ele->click();

        $this->waitUntilElementIsPresent(
            'xpath',
            "//div[@class='alert alert-success' and contains(., 'Configuration has been saved')]",
            5000
        );
    }

    /**
     * Tests whether hiding a database works or not
     *
     * @group large
     */
    public function testHideDatabase(): void
    {
        $this->createDatabase();
        $this->byPartialLinkText('Features')->click();
        $this->waitAjax();

        $this->waitForElement('xpath', "//a[contains(@href, '#Databases')]")->click();

        $ele = $this->waitForElement('name', 'Servers-1-hide_db');
        $this->moveto($ele);
        $ele->clear();
        $ele->sendKeys($this->databaseName);

        $this->saveConfig();
        $this->assertFalse(
            $this->isElementPresent('partialLinkText', $this->databaseName)
        );

        $this->waitForElement('xpath', "//a[contains(@href, '#Databases')]")->click();

        $this->waitForElement('name', 'Servers-1-hide_db')->clear();
        $this->saveConfig();
        $this->assertTrue(
            $this->isElementPresent('partialLinkText', $this->databaseName)
        );
    }

    /**
     * Tests whether the various settings tabs are displayed when clicked
     *
     * @group large
     */
    public function testSettingsTabsAreDisplayed(): void
    {
        $this->byPartialLinkText('SQL queries')->click();
        $this->waitAjax();

        $this->waitForElement('className', 'nav-tabs');

        $this->byPartialLinkText('SQL Query box')->click();
        $this->assertTrue(
            $this->byId('Sql_box')->isDisplayed()
        );
        $this->assertFalse(
            $this->byId('Sql_queries')->isDisplayed()
        );

        $this->byCssSelector("a[href='#Sql_queries']")->click();
        $this->assertFalse(
            $this->byId('Sql_box')->isDisplayed()
        );
        $this->assertTrue(
            $this->byId('Sql_queries')->isDisplayed()
        );
    }

    /**
     * Tests if hiding the logo works or not
     *
     * @group large
     */
    public function testHideLogo(): void
    {
        $this->byPartialLinkText('Navigation panel')->click();
        $this->waitAjax();

        $this->waitForElement('name', 'NavigationDisplayLogo')
            ->click();
        $this->saveConfig();
        sleep(1);
        $this->assertFalse(
            $this->isElementPresent('id', 'imgpmalogo')
        );

        $this->byCssSelector("a[href='#NavigationDisplayLogo']")->click();
        $this->saveConfig();
        sleep(1);
        $this->assertTrue(
            $this->isElementPresent('id', 'imgpmalogo')
        );
    }
}