Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(94)

Unified Diff: third_party/twisted_8_1/twisted/web/test/test_woven.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/web/test/test_woven.py
diff --git a/third_party/twisted_8_1/twisted/web/test/test_woven.py b/third_party/twisted_8_1/twisted/web/test/test_woven.py
deleted file mode 100644
index 29dd17fc10c3b8fbbd377342b16d62c64b3485f3..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/web/test/test_woven.py
+++ /dev/null
@@ -1,570 +0,0 @@
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-
-from twisted.trial import unittest
-from twisted.web import server, resource, microdom, domhelpers
-from twisted.web import http
-from twisted.web.test import test_web
-from twisted.internet import reactor, defer, address
-
-from twisted.web.woven import template, model, view, controller, widgets, input, page, guard
-
-outputNum = 0
-
-# Reusable test harness
-
-class WovenTC(unittest.TestCase):
- modelFactory = lambda self: None
- resourceFactory = None
- def setUp(self):
- self.m = self.modelFactory()
- self.t = self.resourceFactory(self.m)
- self.r = test_web.DummyRequest([''])
- self.r.prepath = ['']
- self.prerender()
- self.t.render(self.r)
-
- self.channel = "a fake channel"
- self.output = ''.join(self.r.written)
- assert self.output, "No output was generated by the test."
- global outputNum
- open("wovenTestOutput%s.html" % (outputNum + 1), 'w').write(self.output)
- outputNum += 1
- self.d = microdom.parseString(self.output)
-
- def prerender(self):
- pass
-
-# Test 1
-# Test that replacing nodes with a string works properly
-
-
-class SimpleTemplate(template.DOMTemplate):
- template = """<http>
- <head>
- <title id="title"><span view="getTitle">Hello</span></title>
- </head>
- <body>
- <h3 id="hello"><span view="getHello">Hi</span></h3>
- </body>
-</http>"""
-
- def factory_getTitle(self, request, node):
- return "Title"
-
- def factory_getHello(self, request, node):
- return "Hello"
-
-
-class DOMTemplateTest(WovenTC):
- resourceFactory = SimpleTemplate
- def testSimpleRender(self):
- titleNode = self.d.getElementById("title")
- helloNode = self.d.getElementById("hello")
-
- self.assert_(domhelpers.gatherTextNodes(titleNode) == 'Title')
- self.assert_(domhelpers.gatherTextNodes(helloNode) == 'Hello')
-
-
-# Test 2
-# Test just like the first, but with Text widgets
-
-class TemplateWithWidgets(SimpleTemplate):
- def wcfactory_getTitle(self, request, node):
- return widgets.Text("Title")
-
- def wcfactory_getHello(self, request, node):
- return widgets.Text("Hello")
-
-
-class TWWTest(DOMTemplateTest):
- resourceFactory = TemplateWithWidgets
-
-
-# Test 3
-# Test a fancier widget, and controllers handling submitted input
-
-
-class MDemo(model.AttributeModel):
- foo = "Hello world"
- color = 'blue'
-
-
-class FancyBox(widgets.Widget):
- def setUp(self, request, node, data):
- self['style'] = 'margin: 1em; padding: 1em; background-color: %s' % data
-
-
-class VDemo(view.View):
- template = """<html>
-
-<div id="box" model="color" view="FancyBox"></div>
-
-<form action="">
-Type a color and hit submit:
-<input type="text" controller="change" model="color" name="color" />
-<input type="submit" />
-</form>
-
-</html>
-"""
- def wvfactory_FancyBox(self, request, node, model):
- return FancyBox(model)
-
- def renderFailure(self, failure, request):
- return failure
-
-
-class ChangeColor(input.Anything):
- def commit(self, request, node, data):
- session = request.getSession()
- session.color = data
- self.model.setData(request, data)
- self.model.notify({'request': request})
-
-
-class CDemo(controller.Controller):
- def setUp(self, request):
- session = request.getSession()
- self.model.color = getattr(session, 'color', self.model.color)
-
- def wcfactory_change(self, request, node, model):
- return ChangeColor(model)
-
-
-view.registerViewForModel(VDemo, MDemo)
-controller.registerControllerForModel(CDemo, MDemo)
-
-
-class ControllerTest(WovenTC):
- modelFactory = MDemo
- resourceFactory = CDemo
-
- def prerender(self):
- self.r.addArg('color', 'red')
-
- def testControllerOutput(self):
- boxNode = self.d.getElementById("box")
- assert boxNode, "Test %s failed" % outputNum
- style = boxNode.getAttribute("style")
- styles = style.split(";")
- sDict = {}
- for item in styles:
- key, value = item.split(":")
- key = key.strip()
- value = value.strip()
- sDict[key] = value
-
-# print sDict
- assert sDict['background-color'] == 'red'
-
-
-# Test 4
-# Test a list, a list widget, and Deferred data handling
-
-identityList = ['asdf', 'foo', 'fredf', 'bob']
-
-class MIdentityList(model.AttributeModel):
- def __init__(self):
- model.Model.__init__(self)
- self.identityList = defer.Deferred()
- self.identityList.callback(identityList)
-
-
-class VIdentityList(view.View):
- template = """<html>
- <ul id="list" view="identityList" model="identityList">
- <li listItemOf="identityList" view="text">
- Stuff.
- </li>
- </ul>
-</html>"""
-
- def wvfactory_identityList(self, request, node, model):
- return widgets.List(model)
-
- def wvfactory_text(self, request, node, model):
- return widgets.Text(model)
-
- def renderFailure(self, failure, request):
- return failure
-
-
-class CIdentityList(controller.Controller):
- pass
-
-
-view.registerViewForModel(VIdentityList, MIdentityList)
-controller.registerControllerForModel(CIdentityList, MIdentityList)
-
-
-class ListDeferredTest(WovenTC):
- modelFactory = MIdentityList
- resourceFactory = CIdentityList
-
- def testOutput(self):
- listNode = self.d.getElementById("list")
- assert listNode, "Test %s failed; there was no element with the id 'list' in the output" % outputNum
- liNodes = domhelpers.getElementsByTagName(listNode, 'li')
- assert len(liNodes) == len(identityList), "Test %s failed; the number of 'li' nodes did not match the list size" % outputNum
-
-
-# Test 5
-# Test nested lists
-
-class LLModel(model.AttributeModel):
- data = [['foo', 'bar', 'baz'],
- ['gum', 'shoe'],
- ['ggg', 'hhh', 'iii']
- ]
-
-
-class LLView(view.View):
- template = """<html>
- <ul id="first" view="List" model="data">
- <li pattern="listItem" view="DefaultWidget">
- <ol view="List">
- <li pattern="listItem" view="Text" />
- </ol>
- </li>
- </ul>
-</html>"""
-
- def wvfactory_List(self, request, node, model):
- return widgets.List(model)
-
-
-class NestedListTest(WovenTC):
- modelFactory = LLModel
- resourceFactory = LLView
-
- def testOutput(self):
- listNode = self.d.getElementById("first")
- assert listNode, "Test %s failed" % outputNum
- liNodes = filter(lambda x: hasattr(x, 'tagName') and x.tagName == 'li', listNode.childNodes)
-# print len(liNodes), len(self.m.data), liNodes, self.m.data
- assert len(liNodes) == len(self.m.data), "Test %s failed" % outputNum
- for i in range(len(liNodes)):
- sublistNode = domhelpers.getElementsByTagName(liNodes[i], 'ol')[0]
- subLiNodes = domhelpers.getElementsByTagName(sublistNode, 'li')
- assert len(self.m.data[i]) == len(subLiNodes)
-
-# Test 6
-# Test notification when a model is a dict or a list
-
-class MNotifyTest(model.AttributeModel):
- def initialize(self, *args, **kwargs):
- self.root = {"inventory": [], 'log': ""}
-
-
-class VNotifyTest(view.View):
- template = """<html>
- <body>
- <ol id="theList" model="root/inventory" view="List">
- <li view="someText" pattern="listItem" />
- </ol>
-
- <form action="">
- <input model="root" view="DefaultWidget" controller="updateInventory" name="root" />
- <input type="submit" />
- </form>
- </body>
-</html>"""
-
- def wvfactory_someText(self, request, node, m):
- return widgets.Text(m)
-
-class InventoryUpdater(input.Anything):
- def commit(self, request, node, data):
- invmodel = self.model.getSubmodel(request, "inventory")
- log = self.model.getSubmodel(request, "log")
- inv = invmodel.getData(request)
- inv.append(data) # just add a string to the list
- log.setData(request, log.getData(request) + ("%s added to servers\n" % data))
- invmodel.setData(request, inv)
- invmodel.notify({'request': request})
-
-
-class CNotifyTest(controller.Controller):
- def wcfactory_updateInventory(self, request, node, model):
- return InventoryUpdater(model)
-
-
-view.registerViewForModel(VNotifyTest, MNotifyTest)
-controller.registerControllerForModel(CNotifyTest, MNotifyTest)
-
-class NotifyTest(WovenTC):
- modelFactory = MNotifyTest
- resourceFactory = CNotifyTest
-
- def prerender(self):
- self.r.addArg('root', 'test')
-
- def testComplexNotification(self):
- listNode = self.d.getElementById("theList")
- self.assert_(listNode, "Test %s failed" % outputNum)
- liNodes = domhelpers.getElementsByTagName(listNode, 'li')
- self.assert_(liNodes,
- "DOM was not updated by notifying Widgets. Test %s" % outputNum)
- text = domhelpers.gatherTextNodes(liNodes[0])
- self.assert_(text.strip() == "test",
- "Wrong output: %s. Test %s" % (text, outputNum))
-
-view.registerViewForModel(LLView, LLModel)
-
-#### Test 7
-# Test model path syntax
-# model="/" should get you the root object
-# model="." should get you the current object
-# model=".." should get you the parent model object
-
-
-# xxx sanity check for now; just make sure it doesn't raise anything
-
-class ModelPathTest(WovenTC):
- modelFactory = lambda self: ['hello', ['hi', 'there'],
- 'hi', ['asdf', ['qwer', 'asdf']]]
- resourceFactory = page.Page
-
- def prerender(self):
- self.t.template = """<html>
- <div model="0" view="None">
- <div model=".." view="Text" />
- </div>
-
- <div model="0" view="None">
- <div model="../1/../2/../3" view="Text" />
- </div>
-
- <div model="0" view="None">
- <div model="../3/1/./1" view="Text" />
- </div>
-
- <div model="3/1/0" view="None">
- <div model="/" view="Text" />
- </div>
-
- <div model="3/1/0" view="None">
- <div model="/3" view="Text" />
- </div>
-
-</html>"""
-
-#### Test 8
-# Test a large number of widgets
-
-class HugeTest(WovenTC):
- modelFactory = lambda self: ['hello' for x in range(100)]
- resourceFactory = page.Page
-
- def prerender(self):
- self.t.template = """<html>
- <div model="." view="List">
- <div pattern="listItem" view="Text" />
- </div>
-</html>"""
-
- def testHugeTest(self):
- pass
-
-
-class ListOfDeferredsTest(WovenTC):
- """Test rendering a model which is a list of Deferreds."""
-
- modelFactory = lambda self: [defer.succeed("hello"), defer.succeed("world")]
- resourceFactory = page.Page
-
- def prerender(self):
- t = '''<div model="." view="List">
- <b pattern="listItem" view="Text" />
- </div>'''
- self.t.template = t
-
- def testResult(self):
- n = self.d.firstChild()
- self.assertEquals(len(n.childNodes), 2)
- for c in n.childNodes:
- self.assertEquals(c.nodeName, "b")
- self.assertEquals(n.firstChild().firstChild().toxml().strip(), "hello")
- self.assertEquals(n.lastChild().firstChild().toxml().strip(), "world")
-
-
-class FakeHTTPChannel:
- # TODO: this should be an interface in twisted.protocols.http... lots of
- # things want to fake out HTTP
- def __init__(self):
- self.transport = self
- self.factory = self
- self.received_cookies = {}
-
- # 'factory' attribute needs this
- def log(self, req):
- pass
-
- # 'channel' of request needs this
- def requestDone(self, req):
- self.req = req
-
- # 'transport' attribute needs this
- def getPeer(self):
- return address.IPv4Address("TCP", "fake", "fake")
- def getHost(self):
- return address.IPv4Address("TCP", "fake", 80)
-
- def write(self, data):
- # print data
- pass
- def writeSequence(self, datas):
- for data in datas:
- self.write(data)
-
- # Utility for testing.
-
- def makeFakeRequest(self, path, **vars):
- req = FakeHTTPRequest(self, queued=0)
- req.received_cookies.update(self.received_cookies)
- req.requestReceived("GET", path, "1.0")
- return req
-
-class FakeHTTPRequest(server.Request):
- def __init__(self, *args, **kw):
- server.Request.__init__(self, *args, **kw)
- self._cookieCache = {}
- from cStringIO import StringIO
- self.content = StringIO()
- self.received_headers['host'] = 'fake.com'
- self.written = StringIO()
-
- def write(self, data):
- self.written.write(data)
- server.Request.write(self, data)
-
- def addCookie(self, k, v, *args,**kw):
- server.Request.addCookie(self,k,v,*args,**kw)
- assert not self._cookieCache.has_key(k), "Should not be setting duplicate cookies!"
- self._cookieCache[k] = v
- self.channel.received_cookies[k] = v
-
- def processingFailed(self, fail):
- raise fail
-
-class FakeSite(server.Site):
- def getResourceFor(self, req):
- res = server.Site.getResourceFor(self,req)
- self.caughtRes = res
- return res
-
-from twisted.web import static
-
-class GuardTest(unittest.TestCase):
- def testSessionInit(self):
- sessWrapped = static.Data("you should never see this", "text/plain")
- swChild = static.Data("NO", "text/plain")
- sessWrapped.putChild("yyy",swChild)
- swrap = guard.SessionWrapper(sessWrapped)
- da = static.Data("b","text/plain")
- da.putChild("xxx", swrap)
- st = FakeSite(da)
- chan = FakeHTTPChannel()
- chan.site = st
-
- # first we're going to make sure that the session doesn't get set by
- # accident when browsing without first explicitly initializing the
- # session
- req = FakeHTTPRequest(chan, queued=0)
- req.requestReceived("GET", "/xxx/yyy", "1.0")
- assert len(req._cookieCache.values()) == 0, req._cookieCache.values()
- self.assertEquals(req.getSession(),None)
-
- # now we're going to make sure that the redirect and cookie are properly set
- req = FakeHTTPRequest(chan, queued=0)
- req.requestReceived("GET", "/xxx/"+guard.INIT_SESSION, "1.0")
- ccv = req._cookieCache.values()
- self.assertEquals(len(ccv),1)
- cookie = ccv[0]
- # redirect set?
- self.failUnless(req.headers.has_key('location'))
- # redirect matches cookie?
- self.assertEquals(req.headers['location'].split('/')[-1], guard.SESSION_KEY+cookie)
- # URL is correct?
- self.assertEquals(req.headers['location'],
- 'http://fake.com/xxx/'+guard.SESSION_KEY+cookie)
- oldreq = req
-
- # now let's try with a request for the session-cookie URL that has a cookie set
- url = "/"+(oldreq.headers['location'].split('http://fake.com/',1))[1]
- req = chan.makeFakeRequest(url)
- self.assertEquals(req.headers['location'].split('?')[0],
- 'http://fake.com/xxx/')
- for sz in swrap.sessions.values():
- sz.expire()
-
-
-
-class _TestPage(page.Page):
- template = """
- <html><body>
-
- <div>First: <span model="title" view="Text"/></div>
- <div>Second: <span model="title" view="Text"/></div>
- <div>Third: <span model="title" view="Text"/></div>
-
- </body></html>
- """
-
- def wmfactory_title(self, request):
- d = defer.Deferred()
- reactor.callLater(0, d.callback, 'The Result')
- return d
-
-class DeferredModelTestCase(unittest.TestCase):
- def testDeferredModel(self):
- # Test that multiple uses of a deferred model work correctly.
- channel = FakeHTTPChannel()
- channel.site = FakeSite(_TestPage())
- request = channel.makeFakeRequest('/')
-
- d = request.notifyFinish()
- def check(_):
- dom = microdom.parseXMLString(request.written.getvalue())
- spanElems = domhelpers.findNodesNamed(dom, 'span')
- for spanElem in spanElems:
- self.failUnlessEqual('The Result', spanElem.childNodes[0].data)
-
- return d.addCallback(check)
-
-
-class MyMacroPage(page.Page):
- template = """\
-<html macro='foo'>
-<head fill-slot='head'>
-<script>
-<![CDATA[
- <>'"&
-]]>
-</script>
-</head>
-</html>
-"""
- def wvfactory_foo(self, request, node, model):
- return widgets.ExpandMacro(model, macroFile = 'cdataxtester.html',
- macroFileDirectory = '.',
- macroName = 'foo'
- )
-
-class ExpandMacroTestCase(WovenTC):
- resourceFactory = MyMacroPage
- def setUp(self, *args, **kwargs):
- thepage = """\
-<html>
-<head slot='head' />
-</html>
-"""
- file('cdatatester.html', 'wb').write(thepage)
- WovenTC.setUp(self, *args, **kwargs)
- def testCDATANotQuoted(self):
- self.failUnless(self.output.find('<>\'"&')>=0)
-
-
-
« no previous file with comments | « third_party/twisted_8_1/twisted/web/test/test_webclient.py ('k') | third_party/twisted_8_1/twisted/web/test/test_xml.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698