package flagutil import ( "os" "testing" ) func TestNewURL(t *testing.T) { u := &URL{} f := func(s, exp string) { t.Helper() if err := u.Set(s); err != nil { t.Fatalf("failed to set %q value: %s", s, err) } if u.String() != exp { t.Fatalf("expected to get %q; got %q instead", exp, u.String()) } } f("", "") f("http://foo:8428", "http://foo:8428") f("http://username:password@foo:8428", "http://xxxxx:xxxxx@foo:8428") f("http://foo:8428?authToken=bar", "http://foo:8428?authToken=xxxxx") f("http://username:password@foo:8428?authToken=bar", "http://xxxxx:xxxxx@foo:8428?authToken=xxxxx") file, err := os.CreateTemp("", "") if err != nil { t.Fatal(err) } defer func() { _ = os.Remove(file.Name()) }() writeToFile(t, file.Name(), "http://foo:8428") f("file://"+file.Name(), "http://foo:8428") writeToFile(t, file.Name(), "http://xxxxx:password@foo:8428?authToken=bar") f("file://"+file.Name(), "http://xxxxx:xxxxx@foo:8428?authToken=xxxxx") } func writeToFile(t *testing.T, file, b string) { t.Helper() err := os.WriteFile(file, []byte(b), 0644) if err != nil { t.Fatal(err) } }