// Username returns the username.
func (u *Userinfo) Username() string {
+ if u == nil {
+ return ""
+ }
return u.username
}
// Password returns the password in case it is set, and whether it is set.
func (u *Userinfo) Password() (string, bool) {
+ if u == nil {
+ return "", false
+ }
return u.password, u.passwordSet
}
// String returns the encoded userinfo information in the standard form
// of "username[:password]".
func (u *Userinfo) String() string {
+ if u == nil {
+ return ""
+ }
s := escape(u.username, encodeUserPassword)
if u.passwordSet {
s += ":" + escape(u.password, encodeUserPassword)
t.Errorf("json decoded to: %s\nwant: %s\n", u1, u)
}
}
+
+func TestNilUser(t *testing.T) {
+ defer func() {
+ if v := recover(); v != nil {
+ t.Fatalf("unexpected panic: %v", v)
+ }
+ }()
+
+ u, err := Parse("http://foo.com/")
+
+ if err != nil {
+ t.Fatalf("parse err: %v", err)
+ }
+
+ if v := u.User.Username(); v != "" {
+ t.Fatalf("expected empty username, got %s", v)
+ }
+
+ if v, ok := u.User.Password(); v != "" || ok {
+ t.Fatalf("expected empty password, got %s (%v)", v, ok)
+ }
+
+ if v := u.User.String(); v != "" {
+ t.Fatalf("expected empty string, got %s", v)
+ }
+}