Skip to content

Instantly share code, notes, and snippets.

@preaction
Created February 24, 2013 03:38
Show Gist options
  • Save preaction/5022465 to your computer and use it in GitHub Desktop.
Save preaction/5022465 to your computer and use it in GitHub Desktop.
Base Web Test for twisted web
import unittest
from twisted.web.resource import Resource
from twisted.web.server import Request, Site
from twisted.web.http import StringTransport
from twisted.protocols.basic import LineReceiver
class BaseWebTest( unittest.TestCase ):
web_root = None
""" The root resource """
site = None
""" The site """
def setUp( self ):
self.web_root = Resource()
self.site = Site( self.web_root )
def request( self, method, uri ):
req = Request( LineReceiver(), True )
req.transport = StringTransport()
req.method = method
req.uri = uri
req.clientproto = 'HTTP/1.1'
req.prepath = []
req.postpath = uri.split('/')[1:]
return req
def render( self, req ):
resource = self.site.getResourceFor( req )
req.render( resource )
resp = req.transport.getvalue().split('\r\n\r\n')
return {
"headers": resp[0],
"content": resp[1],
}
def render_json( self, req ):
response = self.render( req )
response["json"] = json.loads( response["content"] )
return response
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment