1package xmpp
2
3import (
4	"github.com/coyim/coyim/xmpp/data"
5	. "gopkg.in/check.v1"
6)
7
8type RegisterSuite struct{}
9
10var _ = Suite(&RegisterSuite{})
11
12func (s *RegisterSuite) Test_CancelRegistration_SendCancelationRequest(c *C) {
13	expectedoOut := "<iq xmlns='jabber:client'  from='user@xmpp.org' type='set' id='.+'>\n" +
14		"\t<query xmlns='jabber:iq:register'>\n" +
15		"\t\t<remove/>\n" +
16		"\t</query>\n" +
17		"\t</iq>"
18
19	mockIn := &mockConnIOReaderWriter{}
20	conn := newConn()
21	conn.out = mockIn
22	conn.jid = "user@xmpp.org"
23
24	_, _, err := conn.CancelRegistration()
25	c.Assert(err, IsNil)
26	c.Assert(string(mockIn.write), Matches, expectedoOut)
27}
28
29func (s *RegisterSuite) Test_setupStream_registerWithoutAuthenticating(c *C) {
30	rw := &mockConnIOReaderWriter{read: []byte(
31		"<?xml version='1.0'?>" +
32			"<str:stream xmlns:str='http://etherx.jabber.org/streams' version='1.0'>" +
33			"<str:features>" +
34			"<mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>" +
35			"<mechanism>PLAIN</mechanism>" +
36			"</mechanisms>" +
37			"<register xmlns='http://jabber.org/features/iq-register'/>" +
38			"</str:features>" +
39			"<iq xmlns='jabber:client' type='result'>" +
40			"<query xmlns='jabber:iq:register'><username/></query>" +
41			"</iq>" +
42			"<iq xmlns='jabber:client' type='result'></iq>",
43	)}
44	conn := &fullMockedConn{rw: rw}
45
46	d := &dialer{
47		JID:      "user@domain",
48		password: "pass",
49		config: data.Config{
50			SkipTLS: true,
51			CreateCallback: func(title, instructions string, fields []interface{}) error {
52				return nil
53			},
54		},
55	}
56	_, err := d.setupStream(conn)
57
58	c.Assert(err, IsNil)
59	c.Assert(string(rw.write), Equals, ""+
60		"<?xml version='1.0'?>"+
61		"<stream:stream to='domain' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>\n"+
62		"<iq type='get' id='create_1'><query xmlns='jabber:iq:register'/></iq>"+
63		"</stream:stream>",
64	)
65}
66