Пример #1
0
    def test03_render_simultaneous(self):
        """
            requests that are received while another request is being
            handled (this may happen if the packet logic returned a
            deferred) are not blocked by the first request.
            """
        channel = self.Channel(self.site)
        r1 = pokersite.Request(channel, True)
        r1.site = r1.channel.site
        input = '{"type": "PacketPing"}'
        r1.gotLength(len(input))
        r1.handleContentChunk(input)
        r1.queued = 0
        d1 = defer.Deferred()
        r1.args = {'uid': ['uid'], 'auth': ['auth']}
        avatar1 = r1.getSession().avatar

        def handlePacketLogic1(packet):
            avatar1.sendPacket(d1)

        avatar1.handlePacketLogic = handlePacketLogic1
        r1.requestReceived('GET', '/?uid=uid&auth=auth', '')

        r2 = pokersite.Request(channel, True)
        r2.site = r2.channel.site
        input = '{"type": "PacketPing"}'
        r2.gotLength(len(input))
        r2.handleContentChunk(input)
        r2.queued = 0
        r2.args = {'uid': ['uid'], 'auth': ['auth']}
        avatar2 = r2.getSession().avatar

        def handlePacketLogic2(packet):
            avatar2.sendPacket(PacketPing())

        r2.getSession().avatar.handlePacketLogic = handlePacketLogic2
        r2.requestReceived('GET', '/?uid=uid&auth=auth', '')

        #
        # r1 not complete yet
        #
        self.assertEqual('', r1.transport.getvalue())
        #
        # r2 complete
        #
        self.assertSubstring('PacketPing', r2.transport.getvalue())
        #
        # r1 complete
        #
        d1.callback(PacketAck())
        self.assertSubstring('PacketAck', r1.transport.getvalue())
Пример #2
0
    def test02_ipNumberProxy(self):
        from twisted.internet import address

        class Channel:
            def __init__(self, site):
                self.site = site

        class MockClient:
            pass

        addr = address.IPv4Address('TCP', 'proxy.example.org', 7775)
        r = pokersite.Request(Channel(self.site), True)
        r.client = addr
        self.assertEquals(r.findProxiedIP(),
                          ('client-ip', 'proxy.example.org'))

        # received_headers will become requestHeaders RSN, according to:
        # http://python.net/crew/mwh/apidocs/twisted.web.http.Request.html

        r.received_headers[
            'x-cluster-client-ip'] = 'cluster-player.example.com'

        self.assertEquals(
            r.findProxiedIP(),
            ('x-cluster-client-ip', 'cluster-player.example.com'))

        r.received_headers['x-forwarded-for'] = 'forward-player.example.com'
        self.assertEquals(r.findProxiedIP(),
                          ('x-forwarded-for', 'forward-player.example.com'))
Пример #3
0
    def test05_render_content(self):
        r = pokersite.Request(self.Channel(self.site), True)
        r.site = r.channel.site
        r.gotLength(0)
        r.handleContentChunk('')
        r.queued = 0
        r.requestReceived('GET', '/?packet={"type":"PacketPing"}', '')

        self.assertSubstring('\r\n\r\n[]', r.transport.getvalue())
Пример #4
0
 def test01_render(self):
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     input = ''
     r.gotLength(len(input))
     r.handleContentChunk(input)
     r.requestReceived('GET', '/?tourney_serial=666', '')
     self.assertSubstring('\nOK', r.transport.getvalue())
     self.assertEquals(666, self.service.tourney_serial)
     r.getSession().expire()
Пример #5
0
 def test01_render(self):
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     packet_input = '{"type": %d}' % PACKET_PING
     r.gotLength(len(packet_input))
     r.handleContentChunk(packet_input)
     r.requestReceived('GET', '/', '')
     
     self.assertSubstring('\r\n\r\n[]', r.transport.getvalue())
     self.assertEqual(True, hasattr(r, "HERE"))
Пример #6
0
 def test01_name(self):
     class Channel:
         def __init__(self, site):
             self.site = site
     
     r = pokersite.Request(Channel(self.site), True)
     r.site = r.channel.site
     r.args = { 'uid': [ 'uid' ], 'auth': ['auth'] }
     session = r.getSession()
     session.expire()
     self.assertEqual(True, session.expired)
Пример #7
0
 def test02_not_found(self):
     serial = 100
     self.service.setPlayerImage(
         PacketPokerPlayerImage(image='', serial=serial))
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     r.gotLength(0)
     r.handleContentChunk('')
     r.requestReceived('GET', '/%i' % serial, '')
     self.assertSubstring('not found', r.transport.getvalue())
     self.assertEquals(serial, self.service.player_serial)
Пример #8
0
 def test02_explain_no(self):
     class Channel:
         def __init__(self, site):
             self.site = site
     
     r = pokersite.Request(Channel(self.site), True)
     r.site = r.channel.site
     r.args = { 'uid': [ 'uid' ], 'auth': ['auth'], 'explain': ['no'] }
     session = r.getSession()
     self.assertEquals(None, session.avatar.explain)
     session.expire()
     self.assertEqual(True, session.expired)
Пример #9
0
 def test02_error_prefix(self):
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     r.received_headers['x-forwarded-for'] = '1.2.3.4'
     d = defer.Deferred()
     d.addCallback(lambda error: self.assertSubstring('1.2.3.4', error))
     r.site.resource.error = d.callback
     input = '{"type": "PacketPing"}'
     r.gotLength(len(input))
     r.handleContentChunk(input)
     r.requestReceived('GET', '/', '')
     return d
Пример #10
0
 def test07_message_prefix(self):
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     r.received_headers['x-forwarded-for'] = '1.2.3.4'
     r.site.resource.message = lambda message: self.assertSubstring('1.2.3.4', message)
     packet_input = '{"type": %d}' % PACKET_PING
     r.gotLength(len(packet_input))
     r.handleContentChunk(packet_input)
     r.queued = 0
     d = r.notifyFinish()
     r.requestReceived('GET', '/', '')
     return d
Пример #11
0
 def longPoll():
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     packet_input = '{"type": "PacketPokerLongPoll"}'
     r.gotLength(len(packet_input))
     r.handleContentChunk(packet_input)
     r.queued = 0
     d = r.notifyFinish()
     r.args = { 'uid': [ 'uid' ], 'auth': ['auth'] }
     _session = r.getSession()
     r.requestReceived('GET', '/?uid=uid&auth=auth', '')
     return d
Пример #12
0
 def test01_render(self):
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     packet_input = '{"type": %d}' % PACKET_PING
     r.gotLength(len(packet_input))
     r.handleContentChunk(packet_input)
     r.queued = 0
     d = r.notifyFinish()
     def finish(result):
         self.assertSubstring('\r\n\r\n[]', r.transport.getvalue())
     d.addCallback(finish)
     r.requestReceived('GET', '/', '')
     return d
Пример #13
0
 def test01_render(self):
     data = 'image data'
     serial = 64
     self.service.setPlayerImage(
         PacketPokerPlayerImage(image=base64.b64encode(data),
                                serial=serial))
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     r.gotLength(0)
     r.handleContentChunk('')
     r.requestReceived('GET', '/%i' % serial, '')
     self.assertSubstring('\r\n\r\n%s' % data, r.transport.getvalue())
     self.assertEquals(serial, self.service.player_serial)
Пример #14
0
 def test06_1_render_do_not_expire_session_if_long_poll_return(self):
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     packet_input = '{"type": "PacketPokerLongPollReturn"}'
     r.gotLength(len(packet_input))
     r.handleContentChunk(packet_input)
     r.queued = 0
     d = r.notifyFinish()
     r.args = { 'uid': [ 'uid' ], 'auth': ['auth'] }
     session = r.getSession()
     def finish(result):
         self.assertEqual(False, session.expired)
     d.addCallback(finish)
     r.requestReceived('GET', '/?uid=uid&auth=auth', '')
     return d
Пример #15
0
 def longPollReturn():
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     packet_input = '{"type": "PacketPokerLongPollReturn"}'
     r.gotLength(len(packet_input))
     r.handleContentChunk(packet_input)
     r.queued = 0
     d = r.notifyFinish()
     r.args = { 'uid': [ 'uid' ], 'auth': ['auth'] }
     _session = r.getSession()
     def finish(result):                
         self.failIfSubstring('Session instance has no attribute \'avatar\'', r.transport.getvalue())
     d.addCallback(finish)
     r.requestReceived('GET', '/?uid=uid&auth=auth', '')
     return d
Пример #16
0
 def test02_render_error(self):
     packet_input = '{"type": %d}' % PACKET_PING
     r = pokersite.Request(self.Channel(self.site), True)
     r.findProxiedIP = lambda *a,**kw: ('client-ip','127.0.0.1')
     r.site = r.channel.site
     r.gotLength(len(packet_input))
     r.handleContentChunk(packet_input)
     r.queued = 0
     error_pattern = 'UNLIKELY'
     def handlePacketLogic(packet):
         raise UserWarning(error_pattern)
     r.args = { 'uid': ['uid'], 'auth': ['auth'] }
     r.getSession().avatar.handlePacketLogic = handlePacketLogic
     r.requestReceived('GET', '/?uid=uid&auth=auth', '')
     self.assertSubstring(error_pattern, r.transport.getvalue())
Пример #17
0
    def test02_unauthorized(self):
        r = pokersite.Request(self.Channel(self.site), True)
        r.site = r.channel.site

        r.args = {'uid': ['uid'], 'auth': ['auth']}
        self.assertEquals(False,
                          r.getSession().avatar.isLogged())

        r.received_headers['content-type'] = 'multipart/form-data'
        input = ''
        r.gotLength(len(input))
        r.handleContentChunk(input)
        r.requestReceived('POST', '/?uid=uid&auth=auth', '')
        self.assertSubstring('not logged', r.transport.getvalue())
        self.assertEquals(None, self.service.player_image)
Пример #18
0
    def test02_render_error(self):
        r = pokersite.Request(self.Channel(self.site), True)
        r.site = r.channel.site
        input = '{"type": "PacketPing"}'
        r.gotLength(len(input))
        r.handleContentChunk(input)
        r.queued = 0
        error_pattern = 'UNLIKELY'

        def handlePacketLogic(packet):
            raise UserWarning, error_pattern

        r.args = {'uid': ['uid'], 'auth': ['auth']}
        r.getSession().avatar.handlePacketLogic = handlePacketLogic
        r.requestReceived('GET', '/?uid=uid&auth=auth', '')
        self.assertSubstring(error_pattern, r.transport.getvalue())
Пример #19
0
    def test01_render(self):
        r = pokersite.Request(self.Channel(self.site), True)
        r.site = r.channel.site
        input = '{"type": "PacketPing"}'
        r.gotLength(len(input))
        r.handleContentChunk(input)
        r.queued = 0
        d = r.notifyFinish()

        def finish(reason):
            self.assertSubstring('FINISHED', r.transport.getvalue())
            return True

        d.addCallback(finish)
        r.requestReceived('GET', '/', '')
        return d
Пример #20
0
    def test01_render(self):
        r = pokersite.Request(self.Channel(self.site), True)
        r.site = r.channel.site
        input = '{"type": %d}' % PACKET_PING
        r.gotLength(len(input))
        r.handleContentChunk(input)

        d = r.notifyFinish()

        def finish(reason):
            self.assertSubstring('UNLIKELY', r.transport.getvalue())
            return True

        d.addBoth(finish)
        r.requestReceived('GET', '/', '')
        return d
Пример #21
0
 def test06_render_expire_logged(self):
     r = pokersite.Request(self.Channel(self.site), True)
     r.site = r.channel.site
     packet_input = '{"type": %d}' % PACKET_PING
     r.gotLength(len(packet_input))
     r.handleContentChunk(packet_input)
     r.queued = 0
     session = 'session'
     serial = '5'
     r.received_cookies['TWISTED_SESSION'] = session
     r.site.memcache.set(session, serial)
     d = r.notifyFinish()
     def finish(result):
         self.assertSubstring('\r\n\r\n[]', r.transport.getvalue())
         self.failIfSubstring('Expire', r.transport.getvalue())
     d.addCallback(finish)
     r.requestReceived('GET', '/', '')
     return d
Пример #22
0
    def test01_render(self):
        r = pokersite.Request(self.Channel(self.site), True)
        r.site = r.channel.site

        r.args = {'uid': ['uid'], 'auth': ['auth']}
        r.site.memcache.set('auth', '111')
        self.assertEquals(True,
                          r.getSession().avatar.isLogged())

        image_data = "image data"
        r.received_headers['content-type'] = 'multipart/form-data'
        input = ''
        r.gotLength(len(input))
        r.handleContentChunk(input)
        r.requestReceived('POST', '/?uid=uid&auth=auth', '')
        self.assertSubstring('image uploaded', r.transport.getvalue())
        self.assertEquals(base64.b64encode(self.image_data),
                          self.service.player_image.image)
        r.getSession().expire()
Пример #23
0
    def test03_error(self):
        data = 'image data'
        serial = 64
        self.service.setPlayerImage(
            PacketPokerPlayerImage(image=base64.b64encode(data),
                                   serial=serial))
        r = pokersite.Request(self.Channel(self.site), True)
        r.site = r.channel.site
        r.gotLength(0)
        r.handleContentChunk('')
        error_pattern = 'UNLIKELY'

        def getPlayerImageFailed(player_serial):
            raise UserWarning, error_pattern

        self.service.getPlayerImage = getPlayerImageFailed
        r.requestReceived('GET', '/%i' % serial, '')
        self.assertSubstring('error_pattern', r.transport.getvalue())
        self.assertEquals(None, self.service.player_serial)
Пример #24
0
    def test08_error_prefix(self):
        r = pokersite.Request(self.Channel(self.site), True)
        r.site = r.channel.site
        r.received_headers['x-forwarded-for'] = '1.2.3.4'
        d = defer.Deferred()
        d.addCallback(lambda error: self.assertSubstring('1.2.3.4', error))
        r.site.resource.error = d.callback
        input = '{"type": "PacketPing"}'
        r.gotLength(len(input))
        r.handleContentChunk(input)
        r.queued = 0
        error_pattern = 'UNLIKELY'

        def handlePacketLogic(packet):
            raise UserWarning, error_pattern

        r.args = {'uid': ['uid'], 'auth': ['auth']}
        r.getSession().avatar.handlePacketLogic = handlePacketLogic
        r.requestReceived('GET', '/?uid=uid&auth=auth', '')
        return d
    def test01_rest_filter_finished_request(self):
        """
            proxyfilter.rest_filter should ignore finished request
            """
        class Transport:
            def write(self, data):
                pass

        class Channel:
            transport = Transport()

            def requestDone(self, request):
                pass

        class Service:
            verbose = 6

            def packet2resthost(self, packet):
                return (None, None, None)

        class Resource:
            service = Service()

        class Site:
            resource = Resource()

        class Packet:
            pass

        r = pokersite.Request(Channel(), True)
        input = '{"type": "PacketPing"}'
        r.gotLength(len(input))
        r.handleContentChunk(input)
        r.setResponseCode(http.OK)
        r.write("FINISHED")
        r.finish()
        r.noLongerQueued()
        proxyfilter.rest_filter(Site(), r, Packet())
Пример #26
0
    def test03_error(self):
        r = pokersite.Request(self.Channel(self.site), True)
        r.site = r.channel.site

        r.args = {'uid': ['uid'], 'auth': ['auth']}
        r.site.memcache.set('auth', '111')
        self.assertEquals(True,
                          r.getSession().avatar.isLogged())

        image_data = "image data"
        r.received_headers['content-type'] = 'multipart/form-data'
        input = ''
        r.gotLength(len(input))
        r.handleContentChunk(input)
        error_pattern = 'UNLIKELY'

        def setPlayerImageFailed(player_image):
            raise UserWarning, error_pattern

        self.service.setPlayerImage = setPlayerImageFailed
        r.requestReceived('POST', '/?uid=uid&auth=auth', '')
        self.assertSubstring(error_pattern, r.transport.getvalue())
        self.assertEquals(None, self.service.player_image)
        r.getSession().expire()