Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
--TEST--
2
DB::parseDSN
3
--SKIPIF--
4
<?php require_once dirname(__FILE__) . '/skipif.inc'; ?>
5
--FILE--
6
<?php // -*- C++ -*-
7
require_once dirname(__FILE__) . '/include.inc';
8
require_once 'DB.php';
9
 
10
function reparseDSN($dsn) {
11
    $parsed = DB::parseDSN($dsn);
12
    $reparsed = DB::parseDSN(DB::getDSNString($dsn, false));
13
    if (count($diff = array_diff($parsed, $reparsed)) > 0) {
14
        echo "Parsing the original DSN and the DSN generated by getDSNString results in differences:\n";
15
        printf("%-20s%-29s%-29s\n", 'Field', 'Parsed', 'Reparsed');
16
        printf("%-20s%-29s%-29s\n", '-----', '------', '--------');
17
        foreach ($parsed as $key => $value) {
18
            printf("%-20s%-29s%-29s\n", $key, $value, $reparsed[$key]);
19
        }
20
        echo "The reparsed DSN was: ".DB::getDSNString($dsn, false)."\n";
21
    }
22
}
23
 
24
function test($dsn) {
25
    echo "DSN: $dsn\n";
26
    print_r(DB::parseDSN($dsn));
27
    reparseDSN($dsn);
28
}
29
 
30
function testArray($dsn) {
31
    echo "DSN: array\n";
32
    print_r(DB::parseDSN($dsn));
33
    reparseDSN($dsn);
34
}
35
 
36
print "testing DB::parseDSN...\n\n";
37
 
38
test("mysql");
39
test("odbc(mssql)");
40
test('odbc(db2)://user:password@/database');
41
test('odbc(access):///database');
42
test('odbc://admin@/datasourceName');
43
test("mysql://localhost");
44
test("mysql://remote.host.com/db");
45
test("oci8://system:manager@");
46
test("oci8://user:pass@tns-name");
47
test("odbc(solid)://foo:bar@tcp+localhost+1313");  // deprecated
48
test("pgsql://user@unix+localhost/pear");          // deprecated
49
test("ibase://user%40domain:password@host");
50
test("ibase://user@domain:pass@word@/database");   // also supported
51
test("ifx://user@domain:pass@word@host.com//usr/db/general.db");
52
test('ifx://remote.host.com/c:\windows\my.db');
53
test('oci8://SHOOTOUT:******@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.101.161)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TIS)))');
54
 
55
// new formats
56
test("odbc(solid)://foo:bar@localhost:1313");
57
test("pgsql://user@unix()/pear");
58
test("mysql://user@unix(/path/to/socket)/pear");
59
test("pgsql://user@tcp()/pear");
60
test("pgsql://user@tcp(somehost)/pear");
61
test("pgsql://user:pass@word@tcp(somehost:7777)/pear");
62
 
63
// special backend options
64
test('ibase://user:pass@localhost//var/lib/dbase.dbf?role=foo');
65
test('dbase://@/?role=foo&dialect=bar');
66
test('sqlite:////unix/path/to/database?option=value&anotheroption=anothervalue');
67
test('sqlite:///c:/win/path/to/database?option=value');
68
 
69
// some examples from manual
70
test('mysql://username@hostspec');
71
test('mysql://hostspec/database');
72
test('mysql://hostspec');
73
test('mysql:///database');
74
 
75
// array tests
76
$array = array(
77
    'phptype'  => 'mysql',
78
    'hostspec' => 'foobar',
79
);
80
testArray($array);
81
 
82
?>
83
--GET--
84
--POST--
85
--EXPECT--
86
testing DB::parseDSN...
87
 
88
DSN: mysql
89
Array
90
(
91
    [phptype] => mysql
92
    [dbsyntax] => mysql
93
    [username] =>
94
    [password] =>
95
    [protocol] =>
96
    [hostspec] =>
97
    [port] =>
98
    [socket] =>
99
    [database] =>
100
)
101
DSN: odbc(mssql)
102
Array
103
(
104
    [phptype] => odbc
105
    [dbsyntax] => mssql
106
    [username] =>
107
    [password] =>
108
    [protocol] =>
109
    [hostspec] =>
110
    [port] =>
111
    [socket] =>
112
    [database] =>
113
)
114
DSN: odbc(db2)://user:password@/database
115
Array
116
(
117
    [phptype] => odbc
118
    [dbsyntax] => db2
119
    [username] => user
120
    [password] => password
121
    [protocol] => tcp
122
    [hostspec] =>
123
    [port] =>
124
    [socket] =>
125
    [database] => database
126
)
127
DSN: odbc(access):///database
128
Array
129
(
130
    [phptype] => odbc
131
    [dbsyntax] => access
132
    [username] =>
133
    [password] =>
134
    [protocol] => tcp
135
    [hostspec] =>
136
    [port] =>
137
    [socket] =>
138
    [database] => database
139
)
140
DSN: odbc://admin@/datasourceName
141
Array
142
(
143
    [phptype] => odbc
144
    [dbsyntax] => odbc
145
    [username] => admin
146
    [password] =>
147
    [protocol] => tcp
148
    [hostspec] =>
149
    [port] =>
150
    [socket] =>
151
    [database] => datasourceName
152
)
153
DSN: mysql://localhost
154
Array
155
(
156
    [phptype] => mysql
157
    [dbsyntax] => mysql
158
    [username] =>
159
    [password] =>
160
    [protocol] => tcp
161
    [hostspec] => localhost
162
    [port] =>
163
    [socket] =>
164
    [database] =>
165
)
166
DSN: mysql://remote.host.com/db
167
Array
168
(
169
    [phptype] => mysql
170
    [dbsyntax] => mysql
171
    [username] =>
172
    [password] =>
173
    [protocol] => tcp
174
    [hostspec] => remote.host.com
175
    [port] =>
176
    [socket] =>
177
    [database] => db
178
)
179
DSN: oci8://system:manager@
180
Array
181
(
182
    [phptype] => oci8
183
    [dbsyntax] => oci8
184
    [username] => system
185
    [password] => manager
186
    [protocol] => tcp
187
    [hostspec] =>
188
    [port] =>
189
    [socket] =>
190
    [database] =>
191
)
192
DSN: oci8://user:pass@tns-name
193
Array
194
(
195
    [phptype] => oci8
196
    [dbsyntax] => oci8
197
    [username] => user
198
    [password] => pass
199
    [protocol] => tcp
200
    [hostspec] => tns-name
201
    [port] =>
202
    [socket] =>
203
    [database] =>
204
)
205
DSN: odbc(solid)://foo:bar@tcp+localhost+1313
206
Array
207
(
208
    [phptype] => odbc
209
    [dbsyntax] => solid
210
    [username] => foo
211
    [password] => bar
212
    [protocol] => tcp
213
    [hostspec] => localhost+1313
214
    [port] =>
215
    [socket] =>
216
    [database] =>
217
)
218
DSN: pgsql://user@unix+localhost/pear
219
Array
220
(
221
    [phptype] => pgsql
222
    [dbsyntax] => pgsql
223
    [username] => user
224
    [password] =>
225
    [protocol] => unix
226
    [hostspec] =>
227
    [port] =>
228
    [socket] => localhost
229
    [database] => pear
230
)
231
DSN: ibase://user%40domain:password@host
232
Array
233
(
234
    [phptype] => ibase
235
    [dbsyntax] => ibase
236
    [username] => user@domain
237
    [password] => password
238
    [protocol] => tcp
239
    [hostspec] => host
240
    [port] =>
241
    [socket] =>
242
    [database] =>
243
)
244
DSN: ibase://user@domain:pass@word@/database
245
Array
246
(
247
    [phptype] => ibase
248
    [dbsyntax] => ibase
249
    [username] => user@domain
250
    [password] => pass@word
251
    [protocol] => tcp
252
    [hostspec] =>
253
    [port] =>
254
    [socket] =>
255
    [database] => database
256
)
257
DSN: ifx://user@domain:pass@word@host.com//usr/db/general.db
258
Array
259
(
260
    [phptype] => ifx
261
    [dbsyntax] => ifx
262
    [username] => user@domain
263
    [password] => pass@word
264
    [protocol] => tcp
265
    [hostspec] => host.com
266
    [port] =>
267
    [socket] =>
268
    [database] => /usr/db/general.db
269
)
270
DSN: ifx://remote.host.com/c:\windows\my.db
271
Array
272
(
273
    [phptype] => ifx
274
    [dbsyntax] => ifx
275
    [username] =>
276
    [password] =>
277
    [protocol] => tcp
278
    [hostspec] => remote.host.com
279
    [port] =>
280
    [socket] =>
281
    [database] => c:\windows\my.db
282
)
283
DSN: oci8://SHOOTOUT:******@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.101.161)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TIS)))
284
Array
285
(
286
    [phptype] => oci8
287
    [dbsyntax] => oci8
288
    [username] => SHOOTOUT
289
    [password] => ******
290
    [protocol] => tcp
291
    [hostspec] => (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.101.161)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=TIS)))
292
    [port] =>
293
    [socket] =>
294
    [database] =>
295
)
296
DSN: odbc(solid)://foo:bar@localhost:1313
297
Array
298
(
299
    [phptype] => odbc
300
    [dbsyntax] => solid
301
    [username] => foo
302
    [password] => bar
303
    [protocol] => tcp
304
    [hostspec] => localhost
305
    [port] => 1313
306
    [socket] =>
307
    [database] =>
308
)
309
DSN: pgsql://user@unix()/pear
310
Array
311
(
312
    [phptype] => pgsql
313
    [dbsyntax] => pgsql
314
    [username] => user
315
    [password] =>
316
    [protocol] => unix
317
    [hostspec] =>
318
    [port] =>
319
    [socket] =>
320
    [database] => pear
321
)
322
DSN: mysql://user@unix(/path/to/socket)/pear
323
Array
324
(
325
    [phptype] => mysql
326
    [dbsyntax] => mysql
327
    [username] => user
328
    [password] =>
329
    [protocol] => unix
330
    [hostspec] =>
331
    [port] =>
332
    [socket] => /path/to/socket
333
    [database] => pear
334
)
335
DSN: pgsql://user@tcp()/pear
336
Array
337
(
338
    [phptype] => pgsql
339
    [dbsyntax] => pgsql
340
    [username] => user
341
    [password] =>
342
    [protocol] => tcp
343
    [hostspec] =>
344
    [port] =>
345
    [socket] =>
346
    [database] => pear
347
)
348
DSN: pgsql://user@tcp(somehost)/pear
349
Array
350
(
351
    [phptype] => pgsql
352
    [dbsyntax] => pgsql
353
    [username] => user
354
    [password] =>
355
    [protocol] => tcp
356
    [hostspec] => somehost
357
    [port] =>
358
    [socket] =>
359
    [database] => pear
360
)
361
DSN: pgsql://user:pass@word@tcp(somehost:7777)/pear
362
Array
363
(
364
    [phptype] => pgsql
365
    [dbsyntax] => pgsql
366
    [username] => user
367
    [password] => pass@word
368
    [protocol] => tcp
369
    [hostspec] => somehost
370
    [port] => 7777
371
    [socket] =>
372
    [database] => pear
373
)
374
DSN: ibase://user:pass@localhost//var/lib/dbase.dbf?role=foo
375
Array
376
(
377
    [phptype] => ibase
378
    [dbsyntax] => ibase
379
    [username] => user
380
    [password] => pass
381
    [protocol] => tcp
382
    [hostspec] => localhost
383
    [port] =>
384
    [socket] =>
385
    [database] => /var/lib/dbase.dbf
386
    [role] => foo
387
)
388
DSN: dbase://@/?role=foo&dialect=bar
389
Array
390
(
391
    [phptype] => dbase
392
    [dbsyntax] => dbase
393
    [username] =>
394
    [password] =>
395
    [protocol] => tcp
396
    [hostspec] =>
397
    [port] =>
398
    [socket] =>
399
    [database] =>
400
    [role] => foo
401
    [dialect] => bar
402
)
403
DSN: sqlite:////unix/path/to/database?option=value&anotheroption=anothervalue
404
Array
405
(
406
    [phptype] => sqlite
407
    [dbsyntax] => sqlite
408
    [username] =>
409
    [password] =>
410
    [protocol] => tcp
411
    [hostspec] =>
412
    [port] =>
413
    [socket] =>
414
    [database] => /unix/path/to/database
415
    [option] => value
416
    [anotheroption] => anothervalue
417
)
418
DSN: sqlite:///c:/win/path/to/database?option=value
419
Array
420
(
421
    [phptype] => sqlite
422
    [dbsyntax] => sqlite
423
    [username] =>
424
    [password] =>
425
    [protocol] => tcp
426
    [hostspec] =>
427
    [port] =>
428
    [socket] =>
429
    [database] => c:/win/path/to/database
430
    [option] => value
431
)
432
DSN: mysql://username@hostspec
433
Array
434
(
435
    [phptype] => mysql
436
    [dbsyntax] => mysql
437
    [username] => username
438
    [password] =>
439
    [protocol] => tcp
440
    [hostspec] => hostspec
441
    [port] =>
442
    [socket] =>
443
    [database] =>
444
)
445
DSN: mysql://hostspec/database
446
Array
447
(
448
    [phptype] => mysql
449
    [dbsyntax] => mysql
450
    [username] =>
451
    [password] =>
452
    [protocol] => tcp
453
    [hostspec] => hostspec
454
    [port] =>
455
    [socket] =>
456
    [database] => database
457
)
458
DSN: mysql://hostspec
459
Array
460
(
461
    [phptype] => mysql
462
    [dbsyntax] => mysql
463
    [username] =>
464
    [password] =>
465
    [protocol] => tcp
466
    [hostspec] => hostspec
467
    [port] =>
468
    [socket] =>
469
    [database] =>
470
)
471
DSN: mysql:///database
472
Array
473
(
474
    [phptype] => mysql
475
    [dbsyntax] => mysql
476
    [username] =>
477
    [password] =>
478
    [protocol] => tcp
479
    [hostspec] =>
480
    [port] =>
481
    [socket] =>
482
    [database] => database
483
)
484
DSN: array
485
Array
486
(
487
    [phptype] => mysql
488
    [dbsyntax] => mysql
489
    [username] =>
490
    [password] =>
491
    [protocol] =>
492
    [hostspec] => foobar
493
    [port] =>
494
    [socket] =>
495
    [database] =>
496
)