Passed
Push — develop ( a1a700...3db8d1 )
by Freddie
08:39
created

UserTest::testItUserMySqlCreate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 7
nc 1
nop 0
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
/*
3
 * This file is part of FlexPHP.
4
 *
5
 * (c) Freddie Gar <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
namespace FlexPHP\Database\Tests\Unit;
11
12
use FlexPHP\Database\User;
13
use FlexPHP\Database\Tests\TestCase;
14
15
class UserTest extends TestCase
16
{
17
    public function testItUserMySqlCreate(): void
18
    {
19
        $name = 'jon';
20
        $password = 'p4sw00rd';
21
22
        $user = new User($name, $password);
23
        $user->setPlatform('MySQL');
24
        $this->assertEquals(<<<T
25
CREATE USER '$name'@'%' IDENTIFIED BY '$password';
26
T
27
, $user->toSqlCreate());
28
    }
29
30
    public function testItUserMySqlDrop(): void
31
    {
32
        $name = 'jon';
33
        $password = 'p4sw00rd';
34
35
        $user = new User($name, $password);
36
        $user->setPlatform('MySQL');
37
        $this->assertEquals(<<<T
38
DROP USER '$name'@'%';
39
T
40
, $user->toSqlDrop());
41
    }
42
43
    public function testItUserMySqlGrants(): void
44
    {
45
        $name = 'jon';
46
        $password = 'p4sw00rd';
47
        $database = 'db';
48
        $table = 'table';
49
50
        $user = new User($name, $password);
51
        $user->setPlatform('MySQL');
52
        $user->setGrants(['CREATE'], $database, $table);
53
        $this->assertEquals(<<<T
54
GRANT CREATE ON $database.$table TO '$name'@'%';
55
T
56
, $user->toSqlPrivileges());
57
    }
58
59
    public function testItUserSqlSrvCreate(): void
60
    {
61
        $name = 'jon';
62
        $password = 'p4sw00rd';
63
64
        $user = new User($name, $password);
65
        $user->setPlatform('SQLSrv');
66
        $this->assertEquals(<<<T
67
CREATE LOGIN $name WITH PASSWORD = '$password';
68
GO
69
CREATE USER $name FOR LOGIN $name;
70
GO
71
T
72
, $user->toSqlCreate());
73
    }
74
75
    public function testItUserSqlSrvDrop(): void
76
    {
77
        $name = 'jon';
78
        $password = 'p4sw00rd';
79
80
        $user = new User($name, $password);
81
        $user->setPlatform('SQLSrv');
82
        $this->assertEquals(<<<T
83
DROP USER $name;
84
GO
85
T
86
, $user->toSqlDrop());
87
    }
88
89
    public function testItUserSqlSrvGrants(): void
90
    {
91
        $name = 'jon';
92
        $password = 'p4sw00rd';
93
        $database = 'db';
94
        $table = 'table';
95
        $permission = 'CREATE';
96
97
        $user = new User($name, $password);
98
        $user->setPlatform('SQLSrv');
99
        $user->setGrants(['CREATE'], $database, $table);
100
        $this->assertEquals(<<<T
101
GRANT $permission ON $database.$table TO $name;
102
GO
103
T
104
, $user->toSqlPrivileges());
105
    }
106
}
107