def testURL(self): request = TestRequest() request._vh_root = support.site path = os.path.join(test_directory, 'testfiles') files = DirectoryResourceFactory(path, checker, 'test_files')(request) files.__parent__ = support.site file = files['test.gif'] self.assertEqual(file(), 'http://127.0.0.1/@@/test_files/test.gif')
def testURL3Level(self): request = TestRequest() request._vh_root = support.site ob.__parent__ = support.site ob.__name__ = 'ob' path = os.path.join(test_directory, 'testfiles') files = DirectoryResourceFactory(path, checker, 'test_files')(request) files.__parent__ = ob file = files['test.gif'] self.assertEqual(file(), 'http://127.0.0.1/@@/test_files/test.gif') subdir = files['subdir'] self.assertTrue(proxy.isinstance(subdir, DirectoryResource)) file = subdir['test.gif'] self.assertEqual(file(), 'http://127.0.0.1/@@/test_files/subdir/test.gif')
def testGetitem(self): path = os.path.join(test_directory, 'testfiles') request = TestRequest() factory = DirectoryResourceFactory(path, checker, 'testfiles') resource = factory(request) self.assertRaises(KeyError, resource.__getitem__, 'doesnotexist') file = resource['test.txt']
def testProxy(self): path = os.path.join(test_directory, 'testfiles') request = TestRequest() factory = DirectoryResourceFactory(path, checker, 'testfiles') resource = factory(request) file = ProxyFactory(resource['test.txt']) self.assertTrue(isProxy(file))
def testBrowserDefault(self): path = os.path.join(test_directory, 'testfiles') request = TestRequest() factory = DirectoryResourceFactory(path, checker, 'testfiles') resource = factory(request) view, next = resource.browserDefault(request) self.assertEqual(view(), '') self.assertEqual(next, ())
def testNotFound(self): path = os.path.join(test_directory, 'testfiles') request = TestRequest() factory = DirectoryResourceFactory(path, checker, 'testfiles') resource = factory(request) self.assertRaises(NotFound, resource.publishTraverse, resource.request, 'doesnotexist') self.assertRaises(NotFound, resource.get, 'doesnotexist')
def testForbiddenNames(self): request = TestRequest() old_forbidden_names = DirectoryResource.forbidden_names path = tempfile.mkdtemp() try: os.mkdir(os.path.join(path, '.svn')) open(os.path.join(path, 'test.txt'), 'w').write('') factory = DirectoryResourceFactory(path, checker, 'testfiles') resource = factory(request) self.assertEquals(resource.get('.svn', None), None) self.assertNotEquals(resource.get('test.txt', None), None) DirectoryResource.forbidden_names = ('*.txt', ) self.assertEquals(resource.get('test.txt', None), None) self.assertNotEquals(resource.get('.svn', None), None) finally: shutil.rmtree(path) DirectoryResource.forbidden_names = old_forbidden_names
def resourceDirectory(_context, name, directory, layer=IDefaultBrowserLayer, permission='zope.Public'): if permission == 'zope.Public': permission = CheckerPublic checker = NamesChecker(allowed_names + ('__getitem__', 'get'), permission) if not os.path.isdir(directory): raise ConfigurationError("Directory %s does not exist" % directory) factory = DirectoryResourceFactory(directory, checker, name) _context.action( discriminator=('resource', name, IBrowserRequest, layer), callable=handler, args=('registerAdapter', factory, (layer, ), Interface, name, _context.info), )
def testPluggableFactories(self): path = os.path.join(test_directory, 'testfiles') request = TestRequest() resource = DirectoryResourceFactory(path, checker, 'files')(request) class ImageResource(object): def __init__(self, image, request): pass class ImageResourceFactory(object): def __init__(self, path, checker, name): pass def __call__(self, request): return ImageResource(None, request) from zope.browserresource.interfaces import IResourceFactoryFactory provideUtility(ImageResourceFactory, IResourceFactoryFactory, 'gif') image = resource['test.gif'] self.assertTrue(proxy.isinstance(image, ImageResource)) file = resource['test.txt'] self.assertTrue(proxy.isinstance(file, FileResource))