1package xmpp 2 3import ( 4 "errors" 5 6 . "gopkg.in/check.v1" 7) 8 9type PresenceXMPPSuite struct{} 10 11var _ = Suite(&PresenceXMPPSuite{}) 12 13func (s *PresenceXMPPSuite) Test_SignalPresence_sendsPresenceInformation(c *C) { 14 mockOut := &mockConnIOReaderWriter{} 15 conn := conn{ 16 out: mockOut, 17 } 18 19 err := conn.SignalPresence("fo'o") 20 c.Assert(err, IsNil) 21 c.Assert(string(mockOut.write), Equals, "<presence><show>fo'o</show></presence>") 22} 23 24func (s *PresenceXMPPSuite) Test_SignalPresence_returnsWriterError(c *C) { 25 mockOut := &mockConnIOReaderWriter{err: errors.New("foo bar")} 26 conn := conn{ 27 out: mockOut, 28 } 29 30 err := conn.SignalPresence("fo'o") 31 c.Assert(err.Error(), Equals, "foo bar") 32} 33 34func (s *PresenceXMPPSuite) Test_SendPresence_sendsPresenceWithTheIdGiven(c *C) { 35 mockOut := &mockConnIOReaderWriter{} 36 conn := conn{ 37 out: mockOut, 38 } 39 40 expectedPresence := `<presence xmlns="jabber:client" id="123456&" to="someone<strange>@foo.com" type="subsc'ribe"></presence>` 41 42 err := conn.SendPresence("someone<strange>@foo.com", "subsc'ribe", "123456&", "") 43 c.Assert(err, IsNil) 44 c.Assert(string(mockOut.write), Equals, expectedPresence) 45} 46 47func (s *PresenceXMPPSuite) Test_SendPresence_sendsPresenceWithRandomID(c *C) { 48 mockOut := &mockConnIOReaderWriter{} 49 conn := conn{ 50 out: mockOut, 51 rand: &mockConnIOReaderWriter{read: []byte("123555111654")}, 52 } 53 54 expectedPresence := `<presence xmlns="jabber:client" id="3544672884359377457" to="someone<strange>@foo.com" type="subsc'ribe"></presence>` 55 err := conn.SendPresence("someone<strange>@foo.com", "subsc'ribe", "", "") 56 c.Assert(err, IsNil) 57 c.Assert(string(mockOut.write), Equals, expectedPresence) 58} 59 60func (s *PresenceXMPPSuite) Test_SendPresence_returnsWriterError(c *C) { 61 mockOut := &mockConnIOReaderWriter{err: errors.New("bar foo")} 62 conn := conn{ 63 out: mockOut, 64 } 65 66 err := conn.SendPresence("someone<strange>@foo.com", "subsc'ribe", "abc", "") 67 c.Assert(err.Error(), Equals, "bar foo") 68} 69 70func (s *PresenceXMPPSuite) Test_SendPresence_addsStatusToSubscribeMessage(c *C) { 71 mockOut := &mockConnIOReaderWriter{} 72 conn := conn{ 73 out: mockOut, 74 } 75 76 expectedPresence := `<presence xmlns="jabber:client" id="123" to="someone<strange>@foo.com" type="subscribe"><status>do you want <to>?</status></presence>` 77 err := conn.SendPresence("someone<strange>@foo.com", "subscribe", "123", "do you want <to>?") 78 c.Assert(err, IsNil) 79 c.Assert(string(mockOut.write), Equals, expectedPresence) 80} 81