3 // license that can be found in the LICENSE file. |
3 // license that can be found in the LICENSE file. |
4 |
4 |
5 package xmpp |
5 package xmpp |
6 |
6 |
7 import ( |
7 import ( |
|
8 "encoding/xml" |
8 "reflect" |
9 "reflect" |
9 "strings" |
|
10 "testing" |
10 "testing" |
11 "xml" |
|
12 ) |
11 ) |
13 |
12 |
14 // This is mostly just tests of the roster data structures. |
13 // This is mostly just tests of the roster data structures. |
15 |
14 |
16 func TestRosterIqMarshal(t *testing.T) { |
15 func TestRosterIqMarshal(t *testing.T) { |
17 iq := &Iq{From: "from", Lang: "en", Nested: []interface{}{RosterQuery{}}} |
16 iq := &Iq{From: "from", Lang: "en", |
|
17 Nested: []interface{}{RosterQuery{}}} |
18 exp := `<iq from="from" xml:lang="en"><query xmlns="` + |
18 exp := `<iq from="from" xml:lang="en"><query xmlns="` + |
19 NsRoster + `"></query></iq>` |
19 NsRoster + `"></query></iq>` |
20 assertMarshal(t, exp, iq) |
20 assertMarshal(t, exp, iq) |
21 } |
21 } |
22 |
22 |
23 func TestRosterIqUnmarshal(t *testing.T) { |
23 func TestRosterIqUnmarshal(t *testing.T) { |
24 str := `<iq from="from" xml:lang="en"><query xmlns="` + |
24 str := `<iq from="from" xml:lang="en"><query xmlns="` + |
25 NsRoster + `"><item jid="a@b.c"/></query></iq>` |
25 NsRoster + `"><item jid="a@b.c"/></query></iq>` |
26 r := strings.NewReader(str) |
26 iq := Iq{} |
27 var st Stanza = &Iq{} |
27 xml.Unmarshal([]byte(str), &iq) |
28 xml.Unmarshal(r, st) |
|
29 m := map[string]func(*xml.Name) interface{}{NsRoster: newRosterQuery} |
28 m := map[string]func(*xml.Name) interface{}{NsRoster: newRosterQuery} |
30 err := parseExtended(st, m) |
29 err := parseExtended(&iq, m) |
31 if err != nil { |
30 if err != nil { |
32 t.Fatalf("parseExtended: %v", err) |
31 t.Fatalf("parseExtended: %v", err) |
33 } |
32 } |
34 assertEquals(t, "iq", st.GetName()) |
33 assertEquals(t, "iq", iq.XMLName.Local) |
35 assertEquals(t, "from", st.GetFrom()) |
34 assertEquals(t, "from", iq.From) |
36 assertEquals(t, "en", st.GetLang()) |
35 assertEquals(t, "en", iq.Lang) |
37 nested := st.GetNested() |
36 nested := iq.Nested |
38 if nested == nil { |
37 if nested == nil { |
39 t.Fatalf("nested nil") |
38 t.Fatalf("nested nil") |
40 } |
39 } |
41 if len(nested) != 1 { |
40 if len(nested) != 1 { |
42 t.Fatalf("wrong size nested(%d): %v", len(nested), |
41 t.Fatalf("wrong size nested(%d): %v", len(nested), |