Issues (137)

tests/SphinxQL/ConnectionTest.php (8 issues)

1
<?php
2
3
use Foolz\SphinxQL\Drivers\ConnectionInterface;
4
use Foolz\SphinxQL\Expression;
5
use Foolz\SphinxQL\Tests\TestUtil;
6
7
class ConnectionTest extends \PHPUnit\Framework\TestCase
8
{
9
    /**
10
     * @var ConnectionInterface
11
     */
12
    private $connection = null;
13
14
    protected function setUp(): void
15
    {
16
        $this->connection = TestUtil::getConnectionDriver();
17
        $this->connection->setParams(array('host' => '127.0.0.1', 'port' => 9307));
18
    }
19
20
    protected function tearDown(): void
21
    {
22
        $this->connection = null;
23
    }
24
25
    public function test()
26
    {
27
        TestUtil::getConnectionDriver();
28
    }
29
30
    public function testGetParams()
31
    {
32
        $this->assertSame(
33
            array('host' => '127.0.0.1', 'port' => 9307, 'socket' => null),
34
            $this->connection->getParams()
0 ignored issues
show
The method getParams() does not exist on Foolz\SphinxQL\Drivers\ConnectionInterface. Since it exists in all sub-types, consider adding an abstract or default implementation to Foolz\SphinxQL\Drivers\ConnectionInterface. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

34
            $this->connection->/** @scrutinizer ignore-call */ 
35
                               getParams()
Loading history...
35
        );
36
37
        // create a new connection and get info
38
        $this->connection->setParams(array('host' => '127.0.0.2'));
0 ignored issues
show
The method setParams() does not exist on Foolz\SphinxQL\Drivers\ConnectionInterface. Since it exists in all sub-types, consider adding an abstract or default implementation to Foolz\SphinxQL\Drivers\ConnectionInterface. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

38
        $this->connection->/** @scrutinizer ignore-call */ 
39
                           setParams(array('host' => '127.0.0.2'));
Loading history...
39
        $this->connection->setParam('port', 9308);
0 ignored issues
show
The method setParam() does not exist on Foolz\SphinxQL\Drivers\ConnectionInterface. Since it exists in all sub-types, consider adding an abstract or default implementation to Foolz\SphinxQL\Drivers\ConnectionInterface. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

39
        $this->connection->/** @scrutinizer ignore-call */ 
40
                           setParam('port', 9308);
Loading history...
40
        $this->assertSame(
41
            array('host' => '127.0.0.2', 'port' => 9308, 'socket' => null),
42
            $this->connection->getParams()
43
        );
44
45
        $this->connection->setParam('host', 'localhost');
46
        $this->assertSame(
47
            array('host' => '127.0.0.1', 'port' => 9308, 'socket' => null),
48
            $this->connection->getParams()
49
        );
50
51
        // create a unix socket connection with host param
52
        $this->connection->setParam('host', 'unix:/var/run/sphinx.sock');
53
        $this->assertSame(
54
            array('host' => null, 'port' => 9308, 'socket' => '/var/run/sphinx.sock'),
55
            $this->connection->getParams()
56
        );
57
58
        // create unix socket connection with socket param
59
        $this->connection->setParam('host', '127.0.0.1');
60
        $this->connection->setParam('socket', '/var/run/sphinx.sock');
61
        $this->assertSame(
62
            array('host' => null, 'port' => 9308, 'socket' => '/var/run/sphinx.sock'),
63
            $this->connection->getParams()
64
        );
65
    }
66
67
    public function testGetConnectionParams()
68
    {
69
        // verify that (deprecated) getConnectionParams continues to work
70
        $this->assertSame(array('host' => '127.0.0.1', 'port' => 9307, 'socket' => null), $this->connection->getParams());
71
72
        // create a new connection and get info
73
        $this->connection->setParams(array('host' => '127.0.0.1', 'port' => 9308));
74
        $this->assertSame(array('host' => '127.0.0.1', 'port' => 9308, 'socket' => null), $this->connection->getParams());
75
    }
76
77
    public function testGetConnection()
78
    {
79
        $this->connection->connect();
0 ignored issues
show
The method connect() does not exist on Foolz\SphinxQL\Drivers\ConnectionInterface. Since it exists in all sub-types, consider adding an abstract or default implementation to Foolz\SphinxQL\Drivers\ConnectionInterface. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

79
        $this->connection->/** @scrutinizer ignore-call */ 
80
                           connect();
Loading history...
80
        $this->assertNotNull($this->connection->getConnection());
0 ignored issues
show
The method getConnection() does not exist on Foolz\SphinxQL\Drivers\ConnectionInterface. Since it exists in all sub-types, consider adding an abstract or default implementation to Foolz\SphinxQL\Drivers\ConnectionInterface. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

80
        $this->assertNotNull($this->connection->/** @scrutinizer ignore-call */ getConnection());
Loading history...
81
    }
82
83
    public function testGetConnectionThrowsException()
84
    {
85
        $this->expectException(Foolz\SphinxQL\Exception\ConnectionException::class);
86
        $this->connection->getConnection();
87
    }
88
89
    public function testConnect()
90
    {
91
        $this->connection->connect();
92
93
        $this->connection->setParam('options', array(MYSQLI_OPT_CONNECT_TIMEOUT => 1));
94
        $this->connection->connect();
95
    }
96
97
    public function testConnectThrowsException()
98
    {
99
        $this->expectException(Foolz\SphinxQL\Exception\ConnectionException::class);
100
        $this->connection->setParam('port', 9308);
101
        $this->connection->connect();
102
    }
103
104
    public function testPing()
105
    {
106
        $this->connection->connect();
107
        $this->assertTrue($this->connection->ping());
0 ignored issues
show
The method ping() does not exist on Foolz\SphinxQL\Drivers\ConnectionInterface. It seems like you code against a sub-type of said class. However, the method does not exist in Foolz\SphinxQL\Drivers\ConnectionBase. Are you sure you never get one of those? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

107
        $this->assertTrue($this->connection->/** @scrutinizer ignore-call */ ping());
Loading history...
108
    }
109
110
    public function testClose()
111
    {
112
        $this->expectException(Foolz\SphinxQL\Exception\ConnectionException::class);
113
        $encoding = mb_internal_encoding();
114
        $this->connection->connect();
115
116
        if (method_exists($this->connection, 'getInternalEncoding')) {
117
            $this->assertEquals($encoding, $this->connection->getInternalEncoding());
118
            $this->assertEquals('UTF-8', mb_internal_encoding());
119
        }
120
121
        $this->connection->close();
0 ignored issues
show
The method close() does not exist on Foolz\SphinxQL\Drivers\ConnectionInterface. Since it exists in all sub-types, consider adding an abstract or default implementation to Foolz\SphinxQL\Drivers\ConnectionInterface. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

121
        $this->connection->/** @scrutinizer ignore-call */ 
122
                           close();
Loading history...
122
        $this->assertEquals($encoding, mb_internal_encoding());
123
        $this->connection->getConnection();
124
    }
125
126
    public function testQuery()
127
    {
128
        $this->connection->connect();
129
        $this->assertSame(array(
130
            array('Variable_name' => 'total', 'Value' => '0'),
131
            array('Variable_name' => 'total_found', 'Value' => '0'),
132
            array('Variable_name' => 'time', 'Value' => '0.000'),
133
        ), $this->connection->query('SHOW META')->getStored());
0 ignored issues
show
Deprecated Code introduced by
The function Foolz\SphinxQL\Drivers\R...tInterface::getStored() has been deprecated: Commodity method for simple transition to version 1.0.0 ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

133
        ), /** @scrutinizer ignore-deprecated */ $this->connection->query('SHOW META')->getStored());

This function has been deprecated. The supplier of the function has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.

Loading history...
134
    }
135
136
    public function testMultiQuery()
137
    {
138
        $this->connection->connect();
139
        $query = $this->connection->multiQuery(array('SHOW META'));
140
        $this->assertSame(array(
141
            array('Variable_name' => 'total', 'Value' => '0'),
142
            array('Variable_name' => 'total_found', 'Value' => '0'),
143
            array('Variable_name' => 'time', 'Value' => '0.000'),
144
        ), $query->getNext()->fetchAllAssoc());
145
    }
146
147
    public function testEmptyMultiQuery()
148
    {
149
        $this->expectException(Foolz\SphinxQL\Exception\SphinxQLException::class);
150
        $this->expectExceptionMessage('The Queue is empty.');
151
        $this->connection->connect();
152
        $this->connection->multiQuery(array());
153
    }
154
155
    public function testMultiQueryThrowsException()
156
    {
157
        $this->expectException(Foolz\SphinxQL\Exception\DatabaseException::class);
158
        $this->connection->multiQuery(array('SHOW METAL'));
159
    }
160
161
    public function testQueryThrowsException()
162
    {
163
        $this->expectException(Foolz\SphinxQL\Exception\DatabaseException::class);
164
        $this->connection->query('SHOW METAL');
165
    }
166
167
    public function testEscape()
168
    {
169
        $result = $this->connection->escape('\' "" \'\' ');
170
        $this->assertEquals('\'\\\' \\"\\" \\\'\\\' \'', $result);
171
    }
172
173
    public function testEscapeThrowsException()
174
    {
175
        $this->expectException(Foolz\SphinxQL\Exception\ConnectionException::class);
176
        // or we get the wrong error popping up
177
        $this->connection->setParam('port', 9308);
178
        $this->connection->connect();
179
        $this->connection->escape('\' "" \'\' ');
180
    }
181
182
    public function testQuote()
183
    {
184
        $this->connection->connect();
185
        $this->assertEquals('null', $this->connection->quote(null));
186
        $this->assertEquals(1, $this->connection->quote(true));
187
        $this->assertEquals(0, $this->connection->quote(false));
188
        $this->assertEquals("fo'o'bar", $this->connection->quote(new Expression("fo'o'bar")));
189
        $this->assertEquals(123, $this->connection->quote(123));
190
        $this->assertEquals("12.300000", $this->connection->quote(12.3));
191
        $this->assertEquals("'12.3'", $this->connection->quote('12.3'));
192
        $this->assertEquals("'12'", $this->connection->quote('12'));
193
    }
194
195
    public function testQuoteArr()
196
    {
197
        $this->connection->connect();
198
        $this->assertEquals(
199
            array('null', 1, 0, "fo'o'bar", 123, "12.300000", "'12.3'", "'12'"),
200
            $this->connection->quoteArr(array(null, true, false, new Expression("fo'o'bar"), 123, 12.3, '12.3', '12'))
201
        );
202
    }
203
204
}
205