Skip to content

Commit 5f99e1c

Browse files
bodqhrohromremond
authored andcommitted
Support partial JIDs in Bare/Full methods
1 parent ac5b066 commit 5f99e1c

File tree

2 files changed

+42
-17
lines changed

2 files changed

+42
-17
lines changed

stanza/jid.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,21 @@ func NewJid(sjid string) (*Jid, error) {
5151
}
5252

5353
func (j *Jid) Full() string {
54-
return j.Node + "@" + j.Domain + "/" + j.Resource
54+
if j.Resource == "" {
55+
return j.Bare()
56+
} else if j.Node == "" {
57+
return j.Node + "/" + j.Resource
58+
} else {
59+
return j.Node + "@" + j.Domain + "/" + j.Resource
60+
}
5561
}
5662

5763
func (j *Jid) Bare() string {
58-
return j.Node + "@" + j.Domain
64+
if j.Node == "" {
65+
return j.Domain
66+
} else {
67+
return j.Node + "@" + j.Domain
68+
}
5969
}
6070

6171
// ============================================================================

stanza/jid_test.go

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -61,26 +61,41 @@ func TestIncorrectJids(t *testing.T) {
6161
}
6262

6363
func TestFull(t *testing.T) {
64-
jid := "test@domain.com/my resource"
65-
parsedJid, err := NewJid(jid)
66-
if err != nil {
67-
t.Errorf("could not parse jid: %v", err)
64+
fullJids := []string{
65+
"test@domain.com/my resource",
66+
"test@domain.com",
67+
"domain.com",
6868
}
69-
fullJid := parsedJid.Full()
70-
if fullJid != jid {
71-
t.Errorf("incorrect full jid: %s", fullJid)
69+
for _, sjid := range fullJids {
70+
parsedJid, err := NewJid(sjid)
71+
if err != nil {
72+
t.Errorf("could not parse jid: %v", err)
73+
}
74+
fullJid := parsedJid.Full()
75+
if fullJid != sjid {
76+
t.Errorf("incorrect full jid: %s", fullJid)
77+
}
7278
}
7379
}
7480

7581
func TestBare(t *testing.T) {
76-
jid := "test@domain.com"
77-
fullJid := jid + "/my resource"
78-
parsedJid, err := NewJid(fullJid)
79-
if err != nil {
80-
t.Errorf("could not parse jid: %v", err)
82+
tests := []struct {
83+
jidstr string
84+
expected string
85+
}{
86+
{jidstr: "test@domain.com", expected: "test@domain.com"},
87+
{jidstr: "test@domain.com/resource", expected: "test@domain.com"},
88+
{jidstr: "domain.com", expected: "domain.com"},
8189
}
82-
bareJid := parsedJid.Bare()
83-
if bareJid != jid {
84-
t.Errorf("incorrect bare jid: %s", bareJid)
90+
91+
for _, tt := range tests {
92+
parsedJid, err := NewJid(tt.jidstr)
93+
if err != nil {
94+
t.Errorf("could not parse jid: %v", err)
95+
}
96+
bareJid := parsedJid.Bare()
97+
if bareJid != tt.expected {
98+
t.Errorf("incorrect bare jid: %s", bareJid)
99+
}
85100
}
86101
}

0 commit comments

Comments
 (0)