roster_test.go
changeset 98 c9cc4eda6dce
parent 72 53f15893a1a7
child 110 7696e6a01709
equal deleted inserted replaced
88:d2ec96c80efe 98:c9cc4eda6dce
     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),