Changeset 88:58b00aeed1a6


Ignore:
Timestamp:
Feb 25, 2010, 10:14:57 AM (11 years ago)
Author:
Ralph Meijer <ralphm@…>
Branch:
default
Message:

Service Discovery fixes for PubSubService?.

  • PubSubService? now properly implements IDisco.
  • Invalid returned values or exceptions raised by getInfo calls on PubSubResource? instances are now logged and ignored.
Location:
wokkel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • wokkel/pubsub.py

    r87 r88  
    10121012    """
    10131013
    1014     implements(IPubSubService)
     1014    implements(IPubSubService, disco.IDisco)
    10151015
    10161016    iqHandlers = {
     
    10581058
    10591059
    1060     def getDiscoInfo(self, requestor, target, nodeIdentifier):
    1061         def toInfo(nodeInfo, info):
     1060    def getDiscoInfo(self, requestor, target, nodeIdentifier=''):
     1061        def toInfo(nodeInfo):
    10621062            if not nodeInfo:
    1063                 return info
     1063                return
    10641064
    10651065            (nodeType, metaData) = nodeInfo['type'], nodeInfo['meta-data']
     
    10811081                info.append(form)
    10821082
    1083             return info
     1083            return
    10841084
    10851085        info = []
     
    11071107
    11081108        d = defer.maybeDeferred(getInfo, requestor, target, nodeIdentifier or '')
    1109         d.addCallback(toInfo, info)
     1109        d.addCallback(toInfo)
    11101110        d.addErrback(log.err)
     1111        d.addCallback(lambda _: info)
    11111112        return d
    11121113
    11131114
    1114     def getDiscoItems(self, requestor, target, nodeIdentifier):
     1115    def getDiscoItems(self, requestor, target, nodeIdentifier=''):
    11151116        if self.hideNodes:
    11161117            d = defer.succeed([])
  • wokkel/test/test_pubsub.py

    r87 r88  
    19041904
    19051905
     1906    def test_interfaceIDisco(self):
     1907        """
     1908        Do instances of L{pubsub.PubSubService} provide L{iwokkel.IDisco}?
     1909        """
     1910        verify.verifyObject(iwokkel.IDisco, self.service)
     1911
     1912
    19061913    def test_connectionMade(self):
    19071914        """
     
    20062013        d = self.service.getDiscoInfo(JID('user@example.org/home'),
    20072014                                      JID('pubsub.example.org'), '')
     2015        d.addCallback(cb)
     2016        return d
     2017
     2018
     2019    def test_getDiscoInfoBadResponse(self):
     2020        """
     2021        If getInfo returns invalid response, it should be logged, then ignored.
     2022        """
     2023        def cb(info):
     2024            self.assertEquals([], info)
     2025            self.assertEqual(1, len(self.flushLoggedErrors(TypeError)))
     2026
     2027        def getInfo(requestor, target, nodeIdentifier):
     2028            return defer.succeed('bad response')
     2029
     2030        self.resource.getInfo = getInfo
     2031        d = self.service.getDiscoInfo(JID('user@example.org/home'),
     2032                                      JID('pubsub.example.org'), 'test')
     2033        d.addCallback(cb)
     2034        return d
     2035
     2036
     2037    def test_getDiscoInfoException(self):
     2038        """
     2039        If getInfo returns invalid response, it should be logged, then ignored.
     2040        """
     2041        def cb(info):
     2042            self.assertEquals([], info)
     2043            self.assertEqual(1, len(self.flushLoggedErrors(NotImplementedError)))
     2044
     2045        def getInfo(requestor, target, nodeIdentifier):
     2046            return defer.fail(NotImplementedError())
     2047
     2048        self.resource.getInfo = getInfo
     2049        d = self.service.getDiscoInfo(JID('user@example.org/home'),
     2050                                      JID('pubsub.example.org'), 'test')
    20082051        d.addCallback(cb)
    20092052        return d
Note: See TracChangeset for help on using the changeset viewer.