87 xml.Name{Space: nsBind, Local: "bind"}}} |
87 xml.Name{Space: nsBind, Local: "bind"}}} |
88 exp := `<iq id="3" type="set"><bind xmlns="` + nsBind + |
88 exp := `<iq id="3" type="set"><bind xmlns="` + nsBind + |
89 `"></bind></iq>` |
89 `"></bind></iq>` |
90 assertMarshal(t, exp, iq) |
90 assertMarshal(t, exp, iq) |
91 } |
91 } |
|
92 |
|
93 func TestParseStanza(t *testing.T) { |
|
94 str := `<iq to="alice" from="bob" id="1" type="A"` + |
|
95 ` xml:lang="en"><foo>text</foo></iq>` |
|
96 st, err := ParseStanza(str) |
|
97 if err != nil { |
|
98 t.Fatalf("iq: %v", err) |
|
99 } |
|
100 assertEquals(t, "iq", st.XName()) |
|
101 assertEquals(t, "alice", st.XTo()) |
|
102 assertEquals(t, "bob", st.XFrom()) |
|
103 assertEquals(t, "1", st.XId()) |
|
104 assertEquals(t, "A", st.XType()) |
|
105 assertEquals(t, "en", st.XLang()) |
|
106 if st.XError() != nil { |
|
107 t.Errorf("iq: error %v", st.XError()) |
|
108 } |
|
109 if st.XChild() == nil { |
|
110 t.Errorf("iq: nil child") |
|
111 } |
|
112 assertEquals(t, "foo", st.XChild().XMLName.Local) |
|
113 assertEquals(t, "text", st.XChild().Chardata) |
|
114 |
|
115 str = `<message to="alice" from="bob"/>` |
|
116 st, err = ParseStanza(str) |
|
117 if err != nil { |
|
118 t.Fatalf("message: %v", err) |
|
119 } |
|
120 assertEquals(t, "message", st.XName()) |
|
121 assertEquals(t, "alice", st.XTo()) |
|
122 assertEquals(t, "bob", st.XFrom()) |
|
123 assertEquals(t, "", st.XId()) |
|
124 assertEquals(t, "", st.XLang()) |
|
125 if st.XError() != nil { |
|
126 t.Errorf("message: error %v", st.XError()) |
|
127 } |
|
128 if st.XChild() != nil { |
|
129 t.Errorf("message: child %v", st.XChild()) |
|
130 } |
|
131 |
|
132 str = `<presence/>` |
|
133 st, err = ParseStanza(str) |
|
134 if err != nil { |
|
135 t.Fatalf("presence: %v", err) |
|
136 } |
|
137 assertEquals(t, "presence", st.XName()) |
|
138 } |