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 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 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')
Beispiel #9
0
    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))