Skip to content

Commit 195f15c

Browse files
committed
Parsing IPv6 connection strings.
1 parent 57f8942 commit 195f15c

File tree

2 files changed

+392
-53
lines changed

2 files changed

+392
-53
lines changed

Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbConnectionStringTests.cs

Lines changed: 342 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,5 +178,347 @@ public void WireCryptMixedCase()
178178
var cs = new FbConnectionString(ConnectionString);
179179
Assert.AreEqual(FbWireCrypt.Required, cs.WireCrypt);
180180
}
181+
182+
[Test]
183+
public void ParsingDatabaseNewStyleHostnameWithoutPortWithoutPath()
184+
{
185+
const string ConnectionString = "database=//hostname/test.fdb";
186+
var cs = new FbConnectionString(ConnectionString);
187+
Assert.AreEqual("hostname", cs.DataSource);
188+
Assert.AreEqual("test.fdb", cs.Database);
189+
}
190+
191+
[Test]
192+
public void ParsingDatabaseNewStyleHostnameWithoutPortRootPath()
193+
{
194+
const string ConnectionString = "database=//hostname//test.fdb";
195+
var cs = new FbConnectionString(ConnectionString);
196+
Assert.AreEqual("hostname", cs.DataSource);
197+
Assert.AreEqual("/test.fdb", cs.Database);
198+
}
199+
200+
[Test]
201+
public void ParsingDatabaseNewStyleHostnameWithoutPortDrivePath()
202+
{
203+
const string ConnectionString = "database=//hostname/C:\\test.fdb";
204+
var cs = new FbConnectionString(ConnectionString);
205+
Assert.AreEqual("hostname", cs.DataSource);
206+
Assert.AreEqual("C:\\test.fdb", cs.Database);
207+
}
208+
209+
[Test]
210+
public void ParsingDatabaseNewStyleIP4WithoutPortWithoutPath()
211+
{
212+
const string ConnectionString = "database=//127.0.0.1/test.fdb";
213+
var cs = new FbConnectionString(ConnectionString);
214+
Assert.AreEqual("127.0.0.1", cs.DataSource);
215+
Assert.AreEqual("test.fdb", cs.Database);
216+
}
217+
218+
[Test]
219+
public void ParsingDatabaseNewStyleIP4WithoutPortRootPath()
220+
{
221+
const string ConnectionString = "database=//127.0.0.1//test.fdb";
222+
var cs = new FbConnectionString(ConnectionString);
223+
Assert.AreEqual("127.0.0.1", cs.DataSource);
224+
Assert.AreEqual("/test.fdb", cs.Database);
225+
}
226+
227+
[Test]
228+
public void ParsingDatabaseNewStyleIP4WithoutPortDrivePath()
229+
{
230+
const string ConnectionString = "database=//127.0.0.1/C:\\test.fdb";
231+
var cs = new FbConnectionString(ConnectionString);
232+
Assert.AreEqual("127.0.0.1", cs.DataSource);
233+
Assert.AreEqual("C:\\test.fdb", cs.Database);
234+
}
235+
236+
[Test]
237+
public void ParsingDatabaseNewStyleIP6WithoutPortWithoutPath()
238+
{
239+
const string ConnectionString = "database=//::1/test.fdb";
240+
var cs = new FbConnectionString(ConnectionString);
241+
Assert.AreEqual("::1", cs.DataSource);
242+
Assert.AreEqual("test.fdb", cs.Database);
243+
}
244+
245+
[Test]
246+
public void ParsingDatabaseNewStyleIP6WithoutPortRootPath()
247+
{
248+
const string ConnectionString = "database=//::1//test.fdb";
249+
var cs = new FbConnectionString(ConnectionString);
250+
Assert.AreEqual("::1", cs.DataSource);
251+
Assert.AreEqual("/test.fdb", cs.Database);
252+
}
253+
254+
[Test]
255+
public void ParsingDatabaseNewStyleIP6WithoutPortDrivePath()
256+
{
257+
const string ConnectionString = "database=//::1/C:\\test.fdb";
258+
var cs = new FbConnectionString(ConnectionString);
259+
Assert.AreEqual("::1", cs.DataSource);
260+
Assert.AreEqual("C:\\test.fdb", cs.Database);
261+
}
262+
263+
[Test]
264+
public void ParsingDatabaseOldStyleHostnameWithoutPortWithoutPath()
265+
{
266+
const string ConnectionString = "database=hostname:test.fdb";
267+
var cs = new FbConnectionString(ConnectionString);
268+
Assert.AreEqual("hostname", cs.DataSource);
269+
Assert.AreEqual("test.fdb", cs.Database);
270+
}
271+
272+
[Test]
273+
public void ParsingDatabaseOldStyleHostnameWithoutPortRootPath()
274+
{
275+
const string ConnectionString = "database=hostname:/test.fdb";
276+
var cs = new FbConnectionString(ConnectionString);
277+
Assert.AreEqual("hostname", cs.DataSource);
278+
Assert.AreEqual("/test.fdb", cs.Database);
279+
}
280+
281+
[Test]
282+
public void ParsingDatabaseOldStyleHostnameWithoutPortDrivePath()
283+
{
284+
const string ConnectionString = "database=hostname:C:\\test.fdb";
285+
var cs = new FbConnectionString(ConnectionString);
286+
Assert.AreEqual("hostname", cs.DataSource);
287+
Assert.AreEqual("C:\\test.fdb", cs.Database);
288+
}
289+
290+
[Test]
291+
public void ParsingDatabaseOldStyleIP4WithoutPortWithoutPath()
292+
{
293+
const string ConnectionString = "database=127.0.0.1:test.fdb";
294+
var cs = new FbConnectionString(ConnectionString);
295+
Assert.AreEqual("127.0.0.1", cs.DataSource);
296+
Assert.AreEqual("test.fdb", cs.Database);
297+
}
298+
299+
[Test]
300+
public void ParsingDatabaseOldStyleIP4WithoutPortRootPath()
301+
{
302+
const string ConnectionString = "database=127.0.0.1:/test.fdb";
303+
var cs = new FbConnectionString(ConnectionString);
304+
Assert.AreEqual("127.0.0.1", cs.DataSource);
305+
Assert.AreEqual("/test.fdb", cs.Database);
306+
}
307+
308+
[Test]
309+
public void ParsingDatabaseOldStyleIP4WithoutPortDrivePath()
310+
{
311+
const string ConnectionString = "database=127.0.0.1:C:\\test.fdb";
312+
var cs = new FbConnectionString(ConnectionString);
313+
Assert.AreEqual("127.0.0.1", cs.DataSource);
314+
Assert.AreEqual("C:\\test.fdb", cs.Database);
315+
}
316+
317+
[Test]
318+
public void ParsingDatabaseOldStyleIP6WithoutPortWithoutPath()
319+
{
320+
const string ConnectionString = "database=::1:test.fdb";
321+
var cs = new FbConnectionString(ConnectionString);
322+
Assert.AreEqual("::1", cs.DataSource);
323+
Assert.AreEqual("test.fdb", cs.Database);
324+
}
325+
326+
[Test]
327+
public void ParsingDatabaseOldStyleIP6WithoutPortRootPath()
328+
{
329+
const string ConnectionString = "database=::1:/test.fdb";
330+
var cs = new FbConnectionString(ConnectionString);
331+
Assert.AreEqual("::1", cs.DataSource);
332+
Assert.AreEqual("/test.fdb", cs.Database);
333+
}
334+
335+
[Test]
336+
public void ParsingDatabaseOldStyleIP6WithoutPortDrivePath()
337+
{
338+
const string ConnectionString = "database=::1:C:\\test.fdb";
339+
var cs = new FbConnectionString(ConnectionString);
340+
Assert.AreEqual("::1", cs.DataSource);
341+
Assert.AreEqual("C:\\test.fdb", cs.Database);
342+
}
343+
344+
[Test]
345+
public void ParsingDatabaseNewStyleHostnameWithPortWithoutPath()
346+
{
347+
const string ConnectionString = "database=//hostname:6666/test.fdb";
348+
var cs = new ConnectionString(ConnectionString);
349+
Assert.AreEqual("hostname", cs.DataSource);
350+
Assert.AreEqual("test.fdb", cs.Database);
351+
Assert.AreEqual(6666, cs.Port);
352+
}
353+
354+
[Test]
355+
public void ParsingDatabaseNewStyleHostnameWithPortRootPath()
356+
{
357+
const string ConnectionString = "database=//hostname:6666//test.fdb";
358+
var cs = new ConnectionString(ConnectionString);
359+
Assert.AreEqual("hostname", cs.DataSource);
360+
Assert.AreEqual("/test.fdb", cs.Database);
361+
Assert.AreEqual(6666, cs.Port);
362+
}
363+
364+
[Test]
365+
public void ParsingDatabaseNewStyleHostnameWithPortDrivePath()
366+
{
367+
const string ConnectionString = "database=//hostname:6666/C:\\test.fdb";
368+
var cs = new ConnectionString(ConnectionString);
369+
Assert.AreEqual("hostname", cs.DataSource);
370+
Assert.AreEqual("C:\\test.fdb", cs.Database);
371+
Assert.AreEqual(6666, cs.Port);
372+
}
373+
374+
[Test]
375+
public void ParsingDatabaseNewStyleIP4WithPortWithoutPath()
376+
{
377+
const string ConnectionString = "database=//127.0.0.1:6666/test.fdb";
378+
var cs = new ConnectionString(ConnectionString);
379+
Assert.AreEqual("127.0.0.1", cs.DataSource);
380+
Assert.AreEqual("test.fdb", cs.Database);
381+
Assert.AreEqual(6666, cs.Port);
382+
}
383+
384+
[Test]
385+
public void ParsingDatabaseNewStyleIP4WithPortRootPath()
386+
{
387+
const string ConnectionString = "database=//127.0.0.1:6666//test.fdb";
388+
var cs = new ConnectionString(ConnectionString);
389+
Assert.AreEqual("127.0.0.1", cs.DataSource);
390+
Assert.AreEqual("/test.fdb", cs.Database);
391+
Assert.AreEqual(6666, cs.Port);
392+
}
393+
394+
[Test]
395+
public void ParsingDatabaseNewStyleIP4WithPortDrivePath()
396+
{
397+
const string ConnectionString = "database=//127.0.0.1:6666/C:\\test.fdb";
398+
var cs = new ConnectionString(ConnectionString);
399+
Assert.AreEqual("127.0.0.1", cs.DataSource);
400+
Assert.AreEqual("C:\\test.fdb", cs.Database);
401+
Assert.AreEqual(6666, cs.Port);
402+
}
403+
404+
[Test]
405+
public void ParsingDatabaseNewStyleIP6WithPortWithoutPath()
406+
{
407+
const string ConnectionString = "database=//[::1]:6666/test.fdb";
408+
var cs = new ConnectionString(ConnectionString);
409+
Assert.AreEqual("::1", cs.DataSource);
410+
Assert.AreEqual("test.fdb", cs.Database);
411+
Assert.AreEqual(6666, cs.Port);
412+
}
413+
414+
[Test]
415+
public void ParsingDatabaseNewStyleIP6WithPortRootPath()
416+
{
417+
const string ConnectionString = "database=//[::1]:6666//test.fdb";
418+
var cs = new ConnectionString(ConnectionString);
419+
Assert.AreEqual("::1", cs.DataSource);
420+
Assert.AreEqual("/test.fdb", cs.Database);
421+
Assert.AreEqual(6666, cs.Port);
422+
}
423+
424+
[Test]
425+
public void ParsingDatabaseNewStyleIP6WithPortDrivePath()
426+
{
427+
const string ConnectionString = "database=//[::1]:6666/C:\\test.fdb";
428+
var cs = new ConnectionString(ConnectionString);
429+
Assert.AreEqual("::1", cs.DataSource);
430+
Assert.AreEqual("C:\\test.fdb", cs.Database);
431+
Assert.AreEqual(6666, cs.Port);
432+
}
433+
434+
[Test]
435+
public void ParsingDatabaseOldStyleHostnameWithPortWithoutPath()
436+
{
437+
const string ConnectionString = "database=hostname/6666:test.fdb";
438+
var cs = new ConnectionString(ConnectionString);
439+
Assert.AreEqual("hostname", cs.DataSource);
440+
Assert.AreEqual("test.fdb", cs.Database);
441+
Assert.AreEqual(6666, cs.Port);
442+
}
443+
444+
[Test]
445+
public void ParsingDatabaseOldStyleHostnameWithPortRootPath()
446+
{
447+
const string ConnectionString = "database=hostname/6666:/test.fdb";
448+
var cs = new ConnectionString(ConnectionString);
449+
Assert.AreEqual("hostname", cs.DataSource);
450+
Assert.AreEqual("/test.fdb", cs.Database);
451+
Assert.AreEqual(6666, cs.Port);
452+
}
453+
454+
[Test]
455+
public void ParsingDatabaseOldStyleHostnameWithPortDrivePath()
456+
{
457+
const string ConnectionString = "database=hostname/6666:C:\\test.fdb";
458+
var cs = new ConnectionString(ConnectionString);
459+
Assert.AreEqual("hostname", cs.DataSource);
460+
Assert.AreEqual("C:\\test.fdb", cs.Database);
461+
Assert.AreEqual(6666, cs.Port);
462+
}
463+
464+
[Test]
465+
public void ParsingDatabaseOldStyleIP4WithPortWithoutPath()
466+
{
467+
const string ConnectionString = "database=127.0.0.1/6666:test.fdb";
468+
var cs = new ConnectionString(ConnectionString);
469+
Assert.AreEqual("127.0.0.1", cs.DataSource);
470+
Assert.AreEqual("test.fdb", cs.Database);
471+
Assert.AreEqual(6666, cs.Port);
472+
}
473+
474+
[Test]
475+
public void ParsingDatabaseOldStyleIP4WithPortRootPath()
476+
{
477+
const string ConnectionString = "database=127.0.0.1/6666:/test.fdb";
478+
var cs = new ConnectionString(ConnectionString);
479+
Assert.AreEqual("127.0.0.1", cs.DataSource);
480+
Assert.AreEqual("/test.fdb", cs.Database);
481+
Assert.AreEqual(6666, cs.Port);
482+
}
483+
484+
[Test]
485+
public void ParsingDatabaseOldStyleIP4WithPortDrivePath()
486+
{
487+
const string ConnectionString = "database=127.0.0.1/6666:C:\\test.fdb";
488+
var cs = new ConnectionString(ConnectionString);
489+
Assert.AreEqual("127.0.0.1", cs.DataSource);
490+
Assert.AreEqual("C:\\test.fdb", cs.Database);
491+
Assert.AreEqual(6666, cs.Port);
492+
}
493+
494+
[Test]
495+
public void ParsingDatabaseOldStyleIP6WithPortWithoutPath()
496+
{
497+
const string ConnectionString = "database=::1/6666:test.fdb";
498+
var cs = new ConnectionString(ConnectionString);
499+
Assert.AreEqual("::1", cs.DataSource);
500+
Assert.AreEqual("test.fdb", cs.Database);
501+
Assert.AreEqual(6666, cs.Port);
502+
}
503+
504+
[Test]
505+
public void ParsingDatabaseOldStyleIP6WithPortRootPath()
506+
{
507+
const string ConnectionString = "database=::1/6666:/test.fdb";
508+
var cs = new ConnectionString(ConnectionString);
509+
Assert.AreEqual("::1", cs.DataSource);
510+
Assert.AreEqual("/test.fdb", cs.Database);
511+
Assert.AreEqual(6666, cs.Port);
512+
}
513+
514+
[Test]
515+
public void ParsingDatabaseOldStyleIP6WithPortDrivePath()
516+
{
517+
const string ConnectionString = "database=::1/6666:C:\\test.fdb";
518+
var cs = new ConnectionString(ConnectionString);
519+
Assert.AreEqual("::1", cs.DataSource);
520+
Assert.AreEqual("C:\\test.fdb", cs.Database);
521+
Assert.AreEqual(6666, cs.Port);
522+
}
181523
}
182524
}

0 commit comments

Comments
 (0)