ConnectionTest.php 1.68 KB
Newer Older
till's avatar
till committed
1
<?php
Sergei Morozov's avatar
Sergei Morozov committed
2

3
namespace Doctrine\Tests\DBAL\Functional\Driver\Mysqli;
Sergei Morozov's avatar
Sergei Morozov committed
4 5 6 7 8

use Doctrine\DBAL\Driver\Mysqli\Driver;
use Doctrine\DBAL\Driver\Mysqli\MysqliConnection;
use Doctrine\Tests\DbalFunctionalTestCase;
use const MYSQLI_OPT_CONNECT_TIMEOUT;
9
use function extension_loaded;
till's avatar
till committed
10

Sergei Morozov's avatar
Sergei Morozov committed
11
class ConnectionTest extends DbalFunctionalTestCase
till's avatar
till committed
12
{
13
    protected function setUp()
till's avatar
till committed
14
    {
Sergei Morozov's avatar
Sergei Morozov committed
15
        if (! extension_loaded('mysqli')) {
till's avatar
till committed
16 17 18 19
            $this->markTestSkipped('mysqli is not installed.');
        }

        parent::setUp();
20

Sergei Morozov's avatar
Sergei Morozov committed
21
        if ($this->connection->getDriver() instanceof Driver) {
Sergei Morozov's avatar
Sergei Morozov committed
22
            return;
23
        }
Sergei Morozov's avatar
Sergei Morozov committed
24 25

        $this->markTestSkipped('MySQLi only test.');
till's avatar
till committed
26 27
    }

28
    protected function tearDown()
till's avatar
till committed
29 30 31 32 33 34
    {
        parent::tearDown();
    }

    public function testDriverOptions()
    {
Sergei Morozov's avatar
Sergei Morozov committed
35
        $driverOptions = [MYSQLI_OPT_CONNECT_TIMEOUT => 1];
till's avatar
till committed
36 37

        $connection = $this->getConnection($driverOptions);
Sergei Morozov's avatar
Sergei Morozov committed
38
        self::assertInstanceOf(MysqliConnection::class, $connection);
till's avatar
till committed
39 40 41 42 43 44 45
    }

    /**
     * @expectedException \Doctrine\DBAL\Driver\Mysqli\MysqliException
     */
    public function testUnsupportedDriverOption()
    {
Sergei Morozov's avatar
Sergei Morozov committed
46
        $this->getConnection(['hello' => 'world']); // use local infile
till's avatar
till committed
47 48
    }

49 50
    public function testPing()
    {
Sergei Morozov's avatar
Sergei Morozov committed
51
        $conn = $this->getConnection([]);
52
        self::assertTrue($conn->ping());
53 54
    }

Sergei Morozov's avatar
Sergei Morozov committed
55 56 57
    /**
     * @param mixed[] $driverOptions
     */
till's avatar
till committed
58 59
    private function getConnection(array $driverOptions)
    {
Sergei Morozov's avatar
Sergei Morozov committed
60 61 62 63 64
        return new MysqliConnection(
            [
                'host' => $GLOBALS['db_host'],
                'dbname' => $GLOBALS['db_name'],
            ],
till's avatar
till committed
65 66 67 68 69
            $GLOBALS['db_username'],
            $GLOBALS['db_password'],
            $driverOptions
        );
    }
70
}