@@ -25,7 +25,7 @@ protected function setUp()
25
25
26
26
$ this ->pdo = new \PDO ('sqlite::memory: ' );
27
27
$ this ->pdo ->setAttribute (\PDO ::ATTR_ERRMODE , \PDO ::ERRMODE_EXCEPTION );
28
- $ sql = 'CREATE TABLE sessions (sess_id VARCHAR(128) PRIMARY KEY, sess_data TEXT , sess_time INTEGER) ' ;
28
+ $ sql = 'CREATE TABLE sessions (sess_id VARCHAR(128) PRIMARY KEY, sess_data BLOB , sess_time INTEGER) ' ;
29
29
$ this ->pdo ->exec ($ sql );
30
30
}
31
31
@@ -51,17 +51,74 @@ public function testInexistentTable()
51
51
$ storage ->close ();
52
52
}
53
53
54
+ public function testWithLazyDnsConnection ()
55
+ {
56
+ $ dbFile = tempnam (sys_get_temp_dir (), 'sf2_sqlite_sessions ' );
57
+ if (file_exists ($ dbFile )) {
58
+ @unlink ($ dbFile );
59
+ }
60
+
61
+ $ pdo = new \PDO ('sqlite: ' . $ dbFile );
62
+ $ sql = 'CREATE TABLE sessions (sess_id VARCHAR(255) PRIMARY KEY, sess_data BLOB, sess_time INTEGER) ' ;
63
+ $ pdo ->exec ($ sql );
64
+ $ pdo = null ;
65
+
66
+ $ storage = new PdoSessionHandler ('sqlite: ' . $ dbFile );
67
+ $ storage ->open ('' , 'sid ' );
68
+ $ data = $ storage ->read ('id ' );
69
+ $ storage ->write ('id ' , 'data ' );
70
+ $ storage ->close ();
71
+ $ this ->assertSame ('' , $ data , 'New session returns empty string data ' );
72
+
73
+ $ storage ->open ('' , 'sid ' );
74
+ $ data = $ storage ->read ('id ' );
75
+ $ storage ->close ();
76
+ $ this ->assertSame ('data ' , $ data , 'Written value can be read back correctly ' );
77
+
78
+ @unlink ($ dbFile );
79
+ }
80
+
81
+ public function testWithLazySavePathConnection ()
82
+ {
83
+ $ dbFile = tempnam (sys_get_temp_dir (), 'sf2_sqlite_sessions ' );
84
+ if (file_exists ($ dbFile )) {
85
+ @unlink ($ dbFile );
86
+ }
87
+
88
+ $ pdo = new \PDO ('sqlite: ' . $ dbFile );
89
+ $ sql = 'CREATE TABLE sessions (sess_id VARCHAR(255) PRIMARY KEY, sess_data BLOB, sess_time INTEGER) ' ;
90
+ $ pdo ->exec ($ sql );
91
+ $ pdo = null ;
92
+
93
+ // Open is called with what ini_set('session.save_path', 'sqlite:' . $dbFile) would mean
94
+ $ storage = new PdoSessionHandler (null );
95
+ $ storage ->open ('sqlite: ' . $ dbFile , 'sid ' );
96
+ $ data = $ storage ->read ('id ' );
97
+ $ storage ->write ('id ' , 'data ' );
98
+ $ storage ->close ();
99
+ $ this ->assertSame ('' , $ data , 'New session returns empty string data ' );
100
+
101
+ $ storage ->open ('sqlite: ' . $ dbFile , 'sid ' );
102
+ $ data = $ storage ->read ('id ' );
103
+ $ storage ->close ();
104
+ $ this ->assertSame ('data ' , $ data , 'Written value can be read back correctly ' );
105
+
106
+ @unlink ($ dbFile );
107
+ }
108
+
54
109
public function testReadWriteRead ()
55
110
{
56
111
$ storage = new PdoSessionHandler ($ this ->pdo );
57
112
$ storage ->open ('' , 'sid ' );
58
- $ this -> assertSame ( '' , $ storage ->read ('id ' ), ' New session returns empty string data ' );
113
+ $ data = $ storage ->read ('id ' );
59
114
$ storage ->write ('id ' , 'data ' );
60
115
$ storage ->close ();
116
+ $ this ->assertSame ('' , $ data , 'New session returns empty string data ' );
61
117
62
118
$ storage ->open ('' , 'sid ' );
63
- $ this -> assertSame ( ' data ' , $ storage ->read ('id ' ), ' Written value can be read back correctly ' );
119
+ $ data = $ storage ->read ('id ' );
64
120
$ storage ->close ();
121
+ $ this ->assertSame ('data ' , $ data , 'Written value can be read back correctly ' );
65
122
}
66
123
67
124
/**
@@ -77,8 +134,9 @@ public function testWriteDifferentSessionIdThanRead()
77
134
$ storage ->close ();
78
135
79
136
$ storage ->open ('' , 'sid ' );
80
- $ this -> assertSame ( ' data_of_new_session_id ' , $ storage ->read ('new_id ' ), ' Data of regenerated session id is available ' );
137
+ $ data = $ storage ->read ('new_id ' );
81
138
$ storage ->close ();
139
+ $ this ->assertSame ('data_of_new_session_id ' , $ data , 'Data of regenerated session id is available ' );
82
140
}
83
141
84
142
/**
@@ -109,8 +167,9 @@ public function testSessionDestroy()
109
167
$ this ->assertEquals (0 , $ this ->pdo ->query ('SELECT COUNT(*) FROM sessions ' )->fetchColumn ());
110
168
111
169
$ storage ->open ('' , 'sid ' );
112
- $ this -> assertSame ( '' , $ storage ->read ('id ' ), ' Destroyed session returns empty string ' );
170
+ $ data = $ storage ->read ('id ' );
113
171
$ storage ->close ();
172
+ $ this ->assertSame ('' , $ data , 'Destroyed session returns empty string ' );
114
173
}
115
174
116
175
public function testSessionGC ()
@@ -125,12 +184,14 @@ public function testSessionGC()
125
184
$ this ->assertEquals (1 , $ this ->pdo ->query ('SELECT COUNT(*) FROM sessions ' )->fetchColumn ());
126
185
127
186
$ storage ->open ('' , 'sid ' );
128
- $ this -> assertSame ( '' , $ storage ->read ('id ' ), ' Session already considered garbage, so not returning data even if it is not pruned yet ' );
187
+ $ data = $ storage ->read ('id ' );
129
188
$ storage ->gc (0 );
130
189
$ storage ->close ();
131
- $ this ->assertEquals (0 , $ this ->pdo ->query ('SELECT COUNT(*) FROM sessions ' )->fetchColumn ());
132
190
133
191
ini_set ('session.gc_maxlifetime ' , $ previousLifeTime );
192
+
193
+ $ this ->assertSame ('' , $ data , 'Session already considered garbage, so not returning data even if it is not pruned yet ' );
194
+ $ this ->assertEquals (0 , $ this ->pdo ->query ('SELECT COUNT(*) FROM sessions ' )->fetchColumn ());
134
195
}
135
196
136
197
public function testGetConnection ()
0 commit comments