-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Sat, Aug 16, 2008 at 6:54 PM, Johan Euphrosine wrote:
> On Wed, Aug 13, 2008 at 11:33 PM, Loic Dachary wrote:
>> The patch lacks proper error handling. Could you please check the
>> PokerSource error handlers and provide the equivalent for /AVATAR and
>> /UPLOAD ?
>
> s/PokerSource/PokerService/ ?
>
> Do you want me to add an error hander similar to
> PokerService.pipesFailed as errback ?
>
Let me know if the attached patch fix the reported issue
- --
bou ^
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: http://getfiregpg.org
iD8DBQFIpwmrZmEdV9SHoe4RAu7LAJ0e8WCVV3xRhEj+MljKswJPrvmFkACghXUu
QkpLxeAdNQUfANSPXBg5gas=
=uFu2
-----END PGP SIGNATURE-----
Index: pokernetwork/pokersite.py
===================================================================
--- pokernetwork/pokersite.py (revision 4274)
+++ pokernetwork/pokersite.py (working copy)
@@ -310,6 +310,16 @@
request.content.seek(0, 0)
data = request.args['filename'][0]
self.deferred.addCallback(lambda result: self.deferRender(request, data))
+ def failed(reason):
+ body = reason.getTraceback()
+ request.setResponseCode(http.INTERNAL_SERVER_ERROR)
+ request.setHeader('content-type',"text/html")
+ request.setHeader('content-length', str(len(body)))
+ request.expireSessionCookie()
+ request.write(body)
+ request.connectionLost(reason)
+ return True
+ self.deferred.addErrback(failed)
return server.NOT_DONE_YET
def deferRender(self, request, data):
@@ -355,6 +365,16 @@
request.content.seek(0, 0)
serial = int(request.path.split('/')[-1])
self.deferred.addCallback(lambda result: self.deferRender(request, serial))
+ def failed(reason):
+ body = reason.getTraceback()
+ request.setResponseCode(http.INTERNAL_SERVER_ERROR)
+ request.setHeader('content-type',"text/html")
+ request.setHeader('content-length', str(len(body)))
+ request.expireSessionCookie()
+ request.write(body)
+ request.connectionLost(reason)
+ return True
+ self.deferred.addErrback(failed)
return server.NOT_DONE_YET
def deferRender(self, request, serial):
Index: tests/test-pokersite.py.in
===================================================================
--- tests/test-pokersite.py.in (revision 4274)
+++ tests/test-pokersite.py.in (working copy)
@@ -287,10 +287,6 @@
input = ''
r.gotLength(len(input))
r.handleContentChunk(input)
- import cgi
- def parse_multipart_mockup(content, dict):
- return {'filename':[image_data]}
- cgi.parse_multipart = parse_multipart_mockup
r.requestReceived('POST', '/', '')
self.assertSubstring('image uploaded', r.transport.getvalue())
self.assertEquals(base64.b64encode(self.image_data),
@@ -314,7 +310,33 @@
r.requestReceived('POST', '/', '')
self.assertSubstring('not logged', r.transport.getvalue())
self.assertEquals(None, self.service.player_image)
+
+ def test03_error(self):
+ r = pokersite.Request(self.Channel(self.site), True)
+ r.site = r.channel.site
+
+ r.args = {}
+ session = self.site.makeSession()
+ r.session = session
+ self.assertNotEquals(None, r.getSession().avatar);
+ user_serial = 111
+ r.getSession().avatar.user.serial = user_serial
+ 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', '/', '')
+ self.assertSubstring(error_pattern, r.transport.getvalue())
+ self.assertEquals(None, self.service.player_image)
+ session.expire()
+
class PokerAvatarResourceTestCase(unittest.TestCase):
class Transport:
@@ -351,7 +373,7 @@
self.assertSubstring('\r\n\r\n%s' % data, r.transport.getvalue())
self.assertEquals(serial, self.service.player_serial)
- def test02_render_error(self):
+ def test02_not_found(self):
serial = 100
self.service.setPlayerImage(PacketPokerPlayerImage(image = '', serial = serial))
r = pokersite.Request(self.Channel(self.site), True)
@@ -362,6 +384,22 @@
self.assertSubstring('not found', r.transport.getvalue())
self.assertEquals(serial, self.service.player_serial)
+ 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)
+
class FilterTestCase(unittest.TestCase):
def setUp(self):
_______________________________________________
Pokersource-users mailing list
[email protected]
https://mail.gna.org/listinfo/pokersource-users