@@ -243,6 +243,190 @@ func TestIPFSMode(t *testing.T) {
243243 }
244244}
245245
246+ func TestDatabaseURL (t * testing.T ) {
247+ var tests = []struct {
248+ url string
249+ expected string
250+ }{
251+ {
252+ url : defDatabaseURL ,
253+ expected : defDatabaseURL ,
254+ },
255+ {
256+ url : "foo bar" ,
257+ expected : "foo bar" ,
258+ },
259+ {
260+ url : "user=username password=passwd host=pg.pooler.com port=6543 dbname=postgres" ,
261+ expected : "user=username password=passwd host=pg.pooler.com port=6543 dbname=postgres" ,
262+ },
263+ }
264+
265+ for i , test := range tests {
266+ t .Run (strconv .Itoa (i ), func (t * testing.T ) {
267+ os .Clearenv ()
268+ os .Setenv ("WAYBACK_DATABASE_URL" , test .url )
269+
270+ parser := NewParser ()
271+ opts , err := parser .ParseEnvironmentVariables ()
272+ if err != nil {
273+ t .Fatalf (`Parsing environment variables failed: %v` , err )
274+ }
275+
276+ expected := test .expected
277+ got := opts .DatabaseURL ()
278+
279+ if got != expected {
280+ t .Errorf (`Unexpected database URL, got %v instead of %s` , got , expected )
281+ }
282+ })
283+ }
284+ }
285+
286+ func TestIsDefaultDatabaseURL (t * testing.T ) {
287+ var tests = []struct {
288+ url string
289+ expected bool
290+ }{
291+ {
292+ url : defDatabaseURL ,
293+ expected : true ,
294+ },
295+ {
296+ url : "foo bar" ,
297+ expected : false ,
298+ },
299+ }
300+
301+ for i , test := range tests {
302+ t .Run (strconv .Itoa (i ), func (t * testing.T ) {
303+ os .Clearenv ()
304+ os .Setenv ("WAYBACK_DATABASE_URL" , test .url )
305+
306+ parser := NewParser ()
307+ opts , err := parser .ParseEnvironmentVariables ()
308+ if err != nil {
309+ t .Fatalf (`Parsing environment variables failed: %v` , err )
310+ }
311+
312+ expected := test .expected
313+ got := opts .IsDefaultDatabaseURL ()
314+
315+ if got != expected {
316+ t .Errorf (`Unexpected default database URL, got %t instead of %t` , got , expected )
317+ }
318+ })
319+ }
320+ }
321+
322+ func TestDatabaseMaxConns (t * testing.T ) {
323+ var tests = []struct {
324+ maxConns int
325+ expected int
326+ }{
327+ {
328+ maxConns : defDatabaseMaxConns ,
329+ expected : defDatabaseMaxConns ,
330+ },
331+ {
332+ maxConns : 100 ,
333+ expected : 100 ,
334+ },
335+ }
336+
337+ for i , test := range tests {
338+ t .Run (strconv .Itoa (i ), func (t * testing.T ) {
339+ os .Clearenv ()
340+ os .Setenv ("WAYBACK_DATABASE_MAX_CONNS" , strconv .Itoa (test .maxConns ))
341+
342+ parser := NewParser ()
343+ opts , err := parser .ParseEnvironmentVariables ()
344+ if err != nil {
345+ t .Fatalf (`Parsing environment variables failed: %v` , err )
346+ }
347+
348+ expected := test .expected
349+ got := opts .DatabaseMaxConns ()
350+
351+ if got != expected {
352+ t .Errorf (`Unexpected maxConns, got %v instead of %d` , got , expected )
353+ }
354+ })
355+ }
356+ }
357+
358+ func TestDatabaseMinConns (t * testing.T ) {
359+ var tests = []struct {
360+ minConns int
361+ expected int
362+ }{
363+ {
364+ minConns : defDatabaseMinConns ,
365+ expected : defDatabaseMinConns ,
366+ },
367+ {
368+ minConns : 100 ,
369+ expected : 100 ,
370+ },
371+ }
372+
373+ for i , test := range tests {
374+ t .Run (strconv .Itoa (i ), func (t * testing.T ) {
375+ os .Clearenv ()
376+ os .Setenv ("WAYBACK_DATABASE_MIN_CONNS" , strconv .Itoa (test .minConns ))
377+
378+ parser := NewParser ()
379+ opts , err := parser .ParseEnvironmentVariables ()
380+ if err != nil {
381+ t .Fatalf (`Parsing environment variables failed: %v` , err )
382+ }
383+
384+ expected := test .expected
385+ got := opts .DatabaseMinConns ()
386+
387+ if got != expected {
388+ t .Errorf (`Unexpected minConns, got %v instead of %d` , got , expected )
389+ }
390+ })
391+ }
392+ }
393+
394+ func TestDatabaseConnectionLifetime (t * testing.T ) {
395+ var tests = []struct {
396+ connectionLifetime int
397+ expected time.Duration
398+ }{
399+ {
400+ connectionLifetime : defDatabaseConnectionLifetime ,
401+ expected : defDatabaseConnectionLifetime * time .Minute ,
402+ },
403+ {
404+ connectionLifetime : 100 ,
405+ expected : 100 * time .Minute ,
406+ },
407+ }
408+
409+ for i , test := range tests {
410+ t .Run (strconv .Itoa (i ), func (t * testing.T ) {
411+ os .Clearenv ()
412+ os .Setenv ("WAYBACK_DATABASE_CONNECTION_LIFETIME" , strconv .Itoa (test .connectionLifetime ))
413+
414+ parser := NewParser ()
415+ opts , err := parser .ParseEnvironmentVariables ()
416+ if err != nil {
417+ t .Fatalf (`Parsing environment variables failed: %v` , err )
418+ }
419+
420+ expected := test .expected
421+ got := opts .DatabaseConnectionLifetime ()
422+
423+ if got != expected {
424+ t .Errorf (`Unexpected connection lifetime, got %v instead of %d` , got , expected )
425+ }
426+ })
427+ }
428+ }
429+
246430func TestIPFSTarget (t * testing.T ) {
247431 var tests = []struct {
248432 token string // managed ipfs token
0 commit comments