Ignore:
Timestamp:
May 9, 2012, 2:24:28 PM (8 years ago)
Author:
Ralph Meijer <ralphm@…>
Branch:
default
Message:

Add support for roster versioning.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wokkel/test/test_xmppim.py

    r172 r173  
    838838        self.assertEqual(JID('this@example.org'), request.sender)
    839839        self.assertEqual(None, request.item)
     840        self.assertEqual(None, request.version)
    840841
    841842
     
    855856        self.assertNotIdentical(None, request.item)
    856857        self.assertEqual(JID('user@example.org'), request.item.entity)
     858
     859
     860    def test_fromElementVersion(self):
     861        """
     862        If a ver attribute is present, put it in the request version.
     863        """
     864        xml = """
     865            <iq type='set' to='this@example.org/Home' from='this@example.org'>
     866              <query xmlns='jabber:iq:roster' ver='ver72'>
     867                <item jid='user@example.org'/>
     868              </query>
     869            </iq>
     870        """
     871        request = xmppim.RosterRequest.fromElement(parseXml(xml))
     872        self.assertEqual('ver72', request.version)
     873
     874
     875    def test_fromElementVersionEmpty(self):
     876        """
     877        The ver attribute may be empty.
     878        """
     879        xml = """
     880            <iq type='get' to='this@example.org/Home' from='this@example.org'>
     881              <query xmlns='jabber:iq:roster' ver=''/>
     882            </iq>
     883        """
     884        request = xmppim.RosterRequest.fromElement(parseXml(xml))
     885        self.assertEqual('', request.version)
    857886
    858887
     
    904933
    905934
     935    def test_toElementVersion(self):
     936        """
     937        If the roster version is set, a 'ver' attribute is added.
     938        """
     939        request = xmppim.RosterRequest()
     940        request.version = 'ver72'
     941        element = request.toElement()
     942        self.assertEqual('ver72', element.query.getAttribute('ver'))
     943
     944
     945    def test_toElementVersionEmpty(self):
     946        """
     947        If the roster version is the empty string, it should add 'ver', too.
     948        """
     949        request = xmppim.RosterRequest()
     950        request.version = ''
     951        element = request.toElement()
     952        self.assertEqual('', element.query.getAttribute('ver'))
     953
     954
    906955
    907956class RosterClientProtocolTest(unittest.TestCase, TestableRequestHandlerMixin):
     
    950999        def cb(roster):
    9511000            self.assertIn(JID('user@example.org'), roster)
     1001            self.assertIdentical(None, getattr(roster, 'version'))
    9521002
    9531003        d = self.service.getRoster()
     
    9601010        self.assertNotIdentical(None, iq.query)
    9611011        self.assertEqual(NS_ROSTER, iq.query.uri)
     1012        self.assertFalse(iq.query.hasAttribute('ver'))
    9621013
    9631014        # Fake successful response
     
    9671018        item['jid'] = 'user@example.org'
    9681019
     1020        d.callback(response)
     1021        return d
     1022
     1023
     1024    def test_getRosterVer(self):
     1025        """
     1026        A request for the roster with version passes the version on.
     1027        """
     1028        def cb(roster):
     1029            self.assertEqual('ver96', getattr(roster, 'version'))
     1030
     1031        d = self.service.getRoster(version='ver72')
     1032        d.addCallback(cb)
     1033
     1034        # Inspect outgoing iq request
     1035
     1036        iq = self.stub.output[-1]
     1037        self.assertEqual('ver72', iq.query.getAttribute('ver'))
     1038
     1039        # Fake successful response
     1040        response = toResponse(iq, 'result')
     1041        query = response.addElement((NS_ROSTER, 'query'))
     1042        query['ver'] = 'ver96'
     1043        item = query.addElement('item')
     1044        item['jid'] = 'user@example.org'
     1045
     1046        d.callback(response)
     1047        return d
     1048
     1049
     1050    def test_getRosterVerEmptyResult(self):
     1051        """
     1052        An empty response is returned as None.
     1053        """
     1054        def cb(response):
     1055            self.assertIdentical(None, response)
     1056
     1057        d = self.service.getRoster(version='ver72')
     1058        d.addCallback(cb)
     1059
     1060        # Inspect outgoing iq request
     1061
     1062        iq = self.stub.output[-1]
     1063
     1064        # Fake successful response
     1065        response = toResponse(iq, 'result')
    9691066        d.callback(response)
    9701067        return d
Note: See TracChangeset for help on using the changeset viewer.