Passed
Push — master ( 7d22f9...1460f7 )
by Jean Paul
01:51
created

PostgreSqlConnectorTest::testSetGetSslKey()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 10
rs 10
1
<?php declare( strict_types=1 );
2
3
namespace Coco\SourceWatcher\Tests\Core\Database\Connections;
4
5
use Coco\SourceWatcher\Core\Database\Connections\PostgreSqlConnector;
6
use Coco\SourceWatcher\Core\Row;
7
use Coco\SourceWatcher\Core\SourceWatcherException;
8
use Coco\SourceWatcher\Tests\Common\ParentTest;
9
use Doctrine\DBAL\DBALException;
10
11
/**
12
 * Class PostgreSqlConnectorTest
13
 *
14
 * @package Coco\SourceWatcher\Tests\Core\Database\Connections
15
 */
16
class PostgreSqlConnectorTest extends ParentTest
17
{
18
    private string $databaseName;
19
20
    private string $sslAllowMode;
21
    private string $sslRootCert;
22
    private string $sslCert;
23
    private string $sslKey;
24
    private string $sslCrl;
25
26
    private string $appName;
27
28
    public function setUp () : void
29
    {
30
        $this->databaseName = "people";
31
32
        $this->sslAllowMode = "allow";
33
        $this->sslRootCert = "~/.postgresql/root.crt";
34
        $this->sslCert = "~/.postgresql/postgresql.crt";
35
        $this->sslKey = "~/.postgresql/postgresql.key";
36
        $this->sslCrl = "~/.postgresql/root.crl";
37
38
        $this->appName = "App Name for PG Stat Activity";
39
    }
40
41
    public function testSetGetCharset () : void
42
    {
43
        $connector = new PostgreSqlConnector();
44
45
        $givenCharset = "utf8";
46
        $expectedCharset = "utf8";
47
48
        $connector->setCharset( $givenCharset );
49
50
        $this->assertEquals( $expectedCharset, $connector->getCharset() );
51
    }
52
53
    public function testSetGetDefaultDatabaseName () : void
54
    {
55
        $connector = new PostgreSqlConnector();
56
57
        $givenDefaultDatabaseName = $this->databaseName;
58
        $expectedDefaultDatabaseName = $this->databaseName;
59
60
        $connector->setDefaultDatabaseName( $givenDefaultDatabaseName );
61
62
        $this->assertEquals( $expectedDefaultDatabaseName, $connector->getDefaultDatabaseName() );
63
    }
64
65
    public function testSetGetSslMode () : void
66
    {
67
        $connector = new PostgreSqlConnector();
68
69
        $givenSslMode = $this->sslAllowMode;
70
        $expectedSslMode = $this->sslAllowMode;
71
72
        $connector->setSslMode( $givenSslMode );
73
74
        $this->assertEquals( $expectedSslMode, $connector->getSslMode() );
75
    }
76
77
    public function testSetGetSslRootCert () : void
78
    {
79
        $connector = new PostgreSqlConnector();
80
81
        $givenSslRootCert = $this->sslRootCert;
82
        $expectedSslRootCert = $this->sslRootCert;
83
84
        $connector->setSslRootCert( $givenSslRootCert );
85
86
        $this->assertEquals( $expectedSslRootCert, $connector->getSslRootCert() );
87
    }
88
89
    public function testSetGetSslCert () : void
90
    {
91
        $connector = new PostgreSqlConnector();
92
93
        $givenSslCert = $this->sslCert;
94
        $expectedSslCert = $this->sslCert;
95
96
        $connector->setSslCert( $givenSslCert );
97
98
        $this->assertEquals( $expectedSslCert, $connector->getSslCert() );
99
    }
100
101
    public function testSetGetSslKey () : void
102
    {
103
        $connector = new PostgreSqlConnector();
104
105
        $givenSslKey = $this->sslKey;
106
        $expectedSslKey = $this->sslKey;
107
108
        $connector->setSslKey( $givenSslKey );
109
110
        $this->assertEquals( $expectedSslKey, $connector->getSslKey() );
111
    }
112
113
    public function testSetGetSslCrl () : void
114
    {
115
        $connector = new PostgreSqlConnector();
116
117
        $givenSslCrl = $this->sslCrl;
118
        $expectedSslCrl = $this->sslCrl;
119
120
        $connector->setSslCrl( $givenSslCrl );
121
122
        $this->assertEquals( $expectedSslCrl, $connector->getSslCrl() );
123
    }
124
125
    public function testSetGetApplicationName () : void
126
    {
127
        $connector = new PostgreSqlConnector();
128
129
        $givenAppName = $this->appName;
130
        $expectedAppName = $this->appName;
131
132
        $connector->setApplicationName( $givenAppName );
133
134
        $this->assertEquals( $expectedAppName, $connector->getApplicationName() );
135
    }
136
137
    /**
138
     * @throws DBALException
139
     */
140
    public function testGetConnection () : void
141
    {
142
        $connector = new PostgreSqlConnector();
143
        $connector->setUser( "admin" );
144
        $connector->setPassword( "secret" );
145
        $connector->setHost( "localhost" );
146
        $connector->setPort( 5432 );
147
        $connector->setDbName( $this->databaseName );
148
        $connector->setCharset( "utf8" );
149
        $connector->setDefaultDatabaseName( $this->databaseName );
150
        $connector->setSslMode( $this->sslAllowMode );
151
        $connector->setSslRootCert( $this->sslRootCert );
152
        $connector->setSslCert( $this->sslCert );
153
        $connector->setSslKey( $this->sslKey );
154
        $connector->setSslCrl( $this->sslCrl );
155
        $connector->setApplicationName( $this->appName );
156
157
        $this->assertNotNull( $connector->getConnection() );
158
    }
159
160
    /**
161
     * @throws SourceWatcherException
162
     */
163
    public function testInsertUsingEnvironmentVariables () : void
164
    {
165
        $user = $this->getEnvironmentVariable( "UNIT_TEST_POSTGRESQL_USER", null );
166
        $password = $this->getEnvironmentVariable( "UNIT_TEST_POSTGRESQL_PASSWORD", null );
167
        $host = $this->getEnvironmentVariable( "UNIT_TEST_POSTGRESQL_HOST", null );
168
        $port = $this->getEnvironmentVariable( "UNIT_TEST_POSTGRESQL_PORT", 5432, "intval" );
169
        $dbName = $this->getEnvironmentVariable( "UNIT_TEST_POSTGRESQL_DB_NAME", null );
170
        $defaultDatabaseName = $this->getEnvironmentVariable( "UNIT_TEST_POSTGRESQL_DEFAULT_DATABASE_NAME", null );
171
172
        $connector = new PostgreSqlConnector();
173
        $connector->setUser( $user );
174
        $connector->setPassword( $password );
175
        $connector->setHost( $host );
176
        $connector->setPort( $port );
177
        $connector->setDbName( $dbName );
178
        $connector->setDefaultDatabaseName( $defaultDatabaseName );
179
180
        $connector->setTableName( "people" );
181
182
        $row = new Row( [ "name" => "John Doe", "email_address" => "[email protected]" ] );
183
184
        $this->assertEquals( 1, $connector->insert( $row ) );
185
    }
186
}
187