[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/OFS/Content/ZPTPage/tests - testZPTPage.py:1.1.2.3
Jim Fulton
jim@zope.com
Thu, 23 May 2002 14:01:44 -0400
Update of /cvs-repository/Zope3/lib/python/Zope/App/OFS/Content/ZPTPage/tests
In directory cvs.zope.org:/tmp/cvs-serv26429/lib/python/Zope/App/OFS/Content/ZPTPage/tests
Modified Files:
Tag: Zope-3x-branch
testZPTPage.py
Log Message:
This all started with wanting to be able to use url;view in a ZPT path. :)
That lead me to:
- Massive traversal refactoring.
Namespace handling is now centralized in Zope.App.Traversing.
- ZPT refactoring, including some renaming that touches pretty much everything. :)
- The application specific ZPT support was moved into
Zope.App.PageTemplate.
- To get page template files (for use in views):
from Zope.App.PageTemplate import ViewPageTemplateFile
- Fixed up security so that ZPT expressions only have access to
safe builtins and so that modules namespace does imports safely.
- Got ZPTPage working!
- renaming url to absolute_url and got absolute_url to work in paths.
- Cleaned up the (as yet unused) RestrictedInterpreter module in
Zope.Security. In particular, changed to use a separate
RestrictedBuiltins module.
=== Zope3/lib/python/Zope/App/OFS/Content/ZPTPage/tests/testZPTPage.py 1.1.2.2 => 1.1.2.3 ===
from Zope.App.OFS.Content.ZPTPage.ZPTPage import ZPTPage
-from Zope.PageTemplate.tests.testBasicTemplate import BasicTemplateTests
+# Wow, this is a lot of work. :(
+from Zope.ComponentArchitecture.tests.PlacelessSetup import PlacelessSetup
+from Zope.App.Traversing.Traverser import Traverser
+from Zope.App.Traversing.ITraverser import ITraverser
+from Zope.App.Traversing.DefaultTraversable import DefaultTraversable
+from Zope.App.Traversing.ITraversable import ITraversable
+from Zope.ComponentArchitecture.GlobalAdapterService import provideAdapter
+from Zope.ContextWrapper import Wrapper
+from Zope.Security.Checker import NamesChecker, defineChecker
+
+class Data(object):
+ def __init__(self, **kw):
+ self.__dict__.update(kw)
+
+
+
+class ZPTPageTests(PlacelessSetup, unittest.TestCase):
-class ZPTPageTests(BasicTemplateTests):
def setUp(self):
- BasicTemplateTests.setUp(self)
- self.t = ZPTPage()
+ PlacelessSetup.setUp(self)
+ provideAdapter(None, ITraverser, Traverser)
+ provideAdapter(None, ITraversable, DefaultTraversable)
+ defineChecker(Data, NamesChecker(['URL', 'name']))
+
+ def test(self):
+ page = ZPTPage()
+ page.setSource(
+ '<html>'
+ '<head><title tal:content="options/title">blah</title></head>'
+ '<body>'
+ '<a href="foo" tal:attributes="href request/URL/1">'
+ '<span tal:replace="context/name">splat</span>'
+ '</a></body></html>'
+ )
+
+ page = Wrapper(page, Data(name='zope'))
+
+ out = page.render(Data(URL={'1': 'http://foo.com/'}),
+ title="Zope rules")
+ out = ' '.join(out.split())
+ self.assertEqual(
+ out,
+ '<html><head><title>Zope rules</title></head><body>'
+ '<a href="http://foo.com/">'
+ 'zope'
+ '</a></body></html>'
+ )
def test_suite():
- return unittest.makeSuite(ZPTPageTests, 'check')
+ return unittest.makeSuite(ZPTPageTests)
if __name__=='__main__':
unittest.TextTestRunner().run(test_suite())