package database

import (
	"net/url"
	"testing"
)

func TestParseDSN(t *testing.T) {
	cfg, err := ParseDSN("postgres://username:p@ssword#@host:12345/dbname?key1=val2&key2=val2")
	if err != nil {
		t.Fatal(err)
	}
	if cfg.Password != "p@ssword#" {
		t.Fatalf("parsing error")
	}
}

func TestFormatDSN(t *testing.T) {
	src := "postgres://username:p@ssword#@host:12345/dbname?key1=val2&key2=val2"
	cfg, err := ParseDSN(src)
	if err != nil {
		t.Fatal(err)
	}
	dst, err := url.PathUnescape(cfg.FormatDSN())
	if err != nil {
		t.Fatal(err)
	}
	if src != dst {
		t.Fatalf("\n%s\n%s", src, dst)
	}
}