def testResource(self): self.assertEqual( zapi.queryMultiAdapter((ob, request), name='zmi_icon'), None) import zope.app.publisher.browser.tests as p path = os.path.dirname(p.__file__) path = os.path.join(path, 'testfiles', 'test.gif') xmlconfig(StringIO(template % ( ''' <browser:resource name="zmi_icon_res" image="%s" /> <browser:icon name="zmi_icon" for="zope.app.component.tests.views.IC" resource="zmi_icon_res" /> ''' % path ))) view = zapi.getMultiAdapter((ob, request), name='zmi_icon') rname = "zmi_icon_res" self.assertEqual( view(), '<img src="http://127.0.0.1/@@/%s" alt="IC" width="16" ' 'height="16" border="0" />' % rname) resource = ProxyFactory(zapi.getAdapter(request, name=rname)) self.assertRaises(Forbidden, getattr, resource, '_testData') resource = removeSecurityProxy(resource) self.assertEqual(resource._testData(), open(path, 'rb').read())
def testFile(self): path = os.path.join(tests_path, 'testfiles', 'test.pt') self.assertEqual(zapi.queryAdapter(request, name='test'), None) xmlconfig(StringIO(template % ''' <browser:resource name="index.html" file="%s" /> ''' % path )) r = zapi.getAdapter(request, name='index.html') self.assertEquals(r.__class__, FileResource) r = ProxyFactory(r) self.assertEqual(r.__name__, "index.html") # Make sure we can access available attrs and not others for n in ('GET', 'HEAD', 'publishTraverse', 'request', '__call__'): getattr(r, n) self.assertEqual(r.__name__, "index.html") self.assertRaises(Exception, getattr, r, '_testData') r = removeSecurityProxy(r) self.assert_(r.__class__ is FileResource) self.assertEqual(r._testData(), open(path, 'rb').read())
def testFactory(self): self.assertEqual(zapi.queryAdapter(request, name='index.html'), None) xmlconfig(StringIO(template % ''' <browser:resource name="index.html" factory=" zope.app.publisher.browser.tests.test_directives.MyResource" /> ''' )) r = zapi.getAdapter(request, name='index.html') self.assertEquals(r.__class__, MyResource) r = ProxyFactory(r) self.assertEqual(r.__name__, "index.html")
def testNamedAdapter(self): self.testAdapter() self.assertEqual(IApp(Content()).__class__, Comp) self.assertEqual(zapi.queryAdapter(Content(), IV, 'test'), None) xmlconfig(StringIO(template % ( ''' <adapter factory="zope.app.component.tests.components.Comp" provides="zope.app.component.tests.components.IApp" for="zope.app.component.tests.components.IContent" name="test" /> ''' ))) self.assertEqual( zapi.getAdapter(Content(), IApp, "test").__class__, Comp)
def testI18nResource(self): self.assertEqual(zapi.queryAdapter(request, name='test'), None) path1 = os.path.join(tests_path, 'testfiles', 'test.pt') path2 = os.path.join(tests_path, 'testfiles', 'test2.pt') xmlconfig(StringIO(template % ( ''' <browser:i18n-resource name="test" defaultLanguage="fr"> <browser:translation language="en" file="%s" /> <browser:translation language="fr" file="%s" /> </browser:i18n-resource> ''' % (path1, path2) ))) v = zapi.getAdapter(request, name='test') self.assertEqual( zapi.queryAdapter(request, name='test').__class__, I18nFileResource) self.assertEqual(v._testData('en'), open(path1, 'rb').read()) self.assertEqual(v._testData('fr'), open(path2, 'rb').read()) # translation must be provided for the default language config = StringIO(template % ( ''' <browser:i18n-resource name="test" defaultLanguage="fr"> <browser:translation language="en" file="%s" /> <browser:translation language="lt" file="%s" /> </browser:i18n-resource> ''' % (path1, path2) )) self.assertRaises(ConfigurationError, xmlconfig, config) # files and images can't be mixed config = StringIO(template % ( ''' <browser:i18n-resource name="test" defaultLanguage="fr"> <browser:translation language="en" file="%s" /> <browser:translation language="fr" image="%s" /> </browser:i18n-resource> ''' % (path1, path2) )) self.assertRaises(ConfigurationError, xmlconfig, config)
def testSkinResource(self): self.assertEqual(zapi.queryAdapter(request, name='test'), None) path = os.path.join(tests_path, 'testfiles', 'test.pt') xmlconfig(StringIO(template % ( ''' <browser:layer name="zmi" /> <browser:skin name="zmi" layers="zmi" /> <browser:resource name="test" file="%s" layer="zmi" /> ''' % path ))) self.assertEqual(zapi.queryAdapter(request, name='test'), None) zmi = zapi.getUtility(ISkin, 'zmi') r = zapi.getAdapter(TestRequest(skin=zmi), name='test') r = removeSecurityProxy(r) self.assertEqual(r._testData(), open(path, 'rb').read())
def testAdapterHavingARequiredClass(self): xmlconfig(StringIO(template % ( ''' <adapter for="zope.app.component.tests.components.Content" provides="zope.app.component.tests.adapter.I1" factory="zope.app.component.tests.adapter.A1" /> ''' ))) content = Content() a1 = zapi.getAdapter(content, I1, '') self.assert_(isinstance(a1, A1)) class MyContent: implements(IContent) self.assertRaises(ComponentLookupError, zapi.getAdapter, MyContent(), I1, '')
def namespace(object): try: return zapi.getAdapter(object, IPathAdapter, name) except ComponentLookupError: raise KeyError(name)