def test_virtual_site_top_level_is_not_unique(self): """Test cases where the Silva root is the highest URL you can get. """ # Sub case 1 request = TestRequest( application=self.root, url='https://complicated/admin/edit', headers=[('X-VHM-Url', 'https://complicated')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) site = IVirtualSite(request) self.assertTrue(verifyObject(IVirtualSite, site)) self.assertEqual(site.get_root_url(), 'https://complicated/admin') self.assertEqual(site.get_root_path(), '/admin') self.assertEqual(site.get_top_level_url(), 'https://complicated/admin') self.assertEqual(site.get_top_level_path(), '/admin') # Sub case 2 request = TestRequest( application=self.root, url='https://complicated/site/edit', headers=[('X-VHM-Url', 'https://complicated')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) site = IVirtualSite(request) self.assertTrue(verifyObject(IVirtualSite, site)) self.assertEqual(site.get_root_url(), 'https://complicated/site') self.assertEqual(site.get_root_path(), '/site') self.assertEqual(site.get_top_level_url(), 'https://complicated/site') self.assertEqual(site.get_top_level_path(), '/site')
def test_rewrite_url_change_path_multiple_to_one(self): """Test cases where rewritting a URL should change its URL path. """ request = TestRequest( application=self.root, url='http://localhost/man/edit', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual( plugin.rewrite_url( 'https://localhost', 'http://localhost/man/edit'), 'https://localhost/docs/dev/man/edit') self.assertEqual( plugin.rewrite_url( 'https://localhost', 'http://localhost/admin/edit'), 'https://localhost/docs/admin/edit') self.assertEqual( plugin.rewrite_url( 'https://localhost', 'http://localhost/site/docs/users/edit'), 'https://localhost/docs/users/edit')
def test_rewrite_url_no_change(self): """Test simple cases where rewritting a URL should not changes its URL path. """ request = TestRequest( application=self.root, url='http://localhost/man/edit', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertIsNot( plugin.host, None) self.assertEqual( plugin.rewrite_url(None, 'http://localhost/man/edit'), '/man/edit') self.assertEqual( plugin.rewrite_url( 'http://localhost', 'http://localhost/man/edit'), 'http://localhost/man/edit') self.assertEqual( plugin.rewrite_url( 'http://localhost', 'http://localhost/site/docs/users/edit'), 'http://localhost/site/docs/users/edit')
def test_root(self): """If the header is present, rewriting is applied. """ request = TestRequest( application=self.root, url='http://localhost/docs', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root) self.assertEqual(method, 'index_html') self.assertEqual(path, ['docs']) url = getMultiAdapter((self.root, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( str(url), 'http://localhost') self.assertEqual( url.url(), 'http://localhost') self.assertEqual( url.url(relative=True), '/') self.assertEqual( url.url(relative=True, preview=True), '/++preview++') self.assertEqual( url.url(preview=True), 'http://localhost/++preview++') self.assertEqual( url.preview(), 'http://localhost/++preview++')
def test_activated_default(self): request = TestRequest( application=self.root, url='http://localhost') plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, request.application) self.assertEqual(method, 'index_html') self.assertEqual(path, request.path) url = getMultiAdapter((self.root, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( str(url), 'http://localhost/root') self.assertEqual( url.url(), 'http://localhost/root') self.assertEqual( url.url(relative=True), '/root') self.assertEqual( url.url(relative=True, preview=True), '/root/++preview++') self.assertEqual( url.url(preview=True), 'http://localhost/root/++preview++') self.assertEqual( url.preview(), 'http://localhost/root/++preview++')
def test_activated_default(self): request = TestRequest( application=self.root, url='http://localhost') plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, request.application) self.assertEqual(method, 'index_html') self.assertEqual(path, []) url = getMultiAdapter((self.root, request), IContentURL) self.assertEqual( url.breadcrumbs(), ({'name': u'root', 'url': 'http://localhost/root'},)) url = getMultiAdapter((self.root.docs.dev, request), IContentURL) self.assertEqual( url.breadcrumbs(), ({'name': u'root', 'url': 'http://localhost/root', }, {'name': u'Documentation', 'url': 'http://localhost/root/docs'}, {'name': u'Developer', 'url': 'http://localhost/root/docs/dev'}))
def test_root_not_applied(self): """Rewriting is not applied if the header is not present. """ request = TestRequest( application=self.root, url='http://localhost/docs') plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, request.application) self.assertEqual(method, 'index_html') self.assertEqual(path, ['docs']) self.assertEqual('http://localhost/docs', request['ACTUAL_URL']) url = getMultiAdapter((self.root, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( str(url), 'http://localhost/root') self.assertEqual( url.url(), 'http://localhost/root') self.assertEqual( url.url(relative=True), '/root') self.assertEqual( url.url(relative=True, preview=True), '/root/++preview++') self.assertEqual( url.url(preview=True), 'http://localhost/root/++preview++') self.assertEqual( url.preview(), 'http://localhost/root/++preview++')
def test_skin_not_activated(self): request = TestRequest( application=self.root, url='http://localhost') plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, request.application) self.assertEqual(method, 'index_html') self.assertEqual(path, []) self.assertFalse(IMultiflexSkin.providedBy(request))
def test_backend_alias(self): request = TestRequest( application=self.root, url='http://admin.localhost/docs/admin', headers=[('X-VHM-Url', 'http://backend.localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root) self.assertEqual(method, 'index_html') self.assertEqual(path, ['admin', 'docs'])
def test_skin_folder_not_enforced(self): request = TestRequest( application=self.root, url='http://localhost/user/information', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root.docs.user) self.assertEqual(method, 'index_html') self.assertEqual(path, ['information']) self.assertTrue(IMultiflexSkin.providedBy(request)) self.assertFalse(IStandardIssueSkin.providedBy(request)) self.assertTrue(request.get(SET_SKIN_ALLOWED_FLAG, True))
def test_vhm(self): """Test IContentURL url computation while a VHM is used. Zope object doesn't support the preview mode. """ request = TestRequest( application=self.root, url='http://localhost/service_extension', headers=[('X-VHM-Url', 'http://infrae.com'), ('X-VHM-Path', '/root')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root) self.assertEqual(method, 'index_html') self.assertEqual(path, ['service_extension']) url = component.getMultiAdapter( (self.root.service_extensions, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertTrue(IContentURL.extends(IAbsoluteURL)) self.assertEqual( str(url), 'http://infrae.com/service_extensions') self.assertEqual( url(), 'http://infrae.com/service_extensions') self.assertEqual( url.url(relative=True), '/service_extensions') self.assertEqual( url.url(relative=True, preview=True), '/service_extensions') self.assertEqual( url.preview(), 'http://infrae.com/service_extensions') self.assertEqual( url.url(host='http://silvacms.org'), 'http://silvacms.org/service_extensions') self.assertEqual( url.url(host='http://silvacms.org', preview=True), 'http://silvacms.org/service_extensions') alsoProvides(request, IPreviewLayer) self.assertEqual( str(url), 'http://infrae.com/service_extensions') self.assertEqual( url(), 'http://infrae.com/service_extensions')
def test_rewritten_short_activated(self): request = TestRequest( application=self.root, url='http://localhost/admin/manual', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root.docs.admin) self.assertEqual(method, 'index_html') self.assertEqual(path, ['manual']) url = getMultiAdapter((self.root.docs.admin, request), IContentURL) self.assertEqual( url.breadcrumbs(), ({'name': u'Administrator', 'url': 'http://localhost/admin'},))
def test_virtual_site_simple(self): """Test simple cases nothing special is set or done. """ request = TestRequest( application=self.root, url='http://localhost/man/edit', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) site = IVirtualSite(request) self.assertTrue(verifyObject(IVirtualSite, site)) self.assertEqual(site.get_root_url(), 'http://localhost') self.assertEqual(site.get_root_path(), '/') self.assertEqual(site.get_top_level_url(), 'http://localhost') self.assertEqual(site.get_top_level_path(), '/')
def test_virtual_site_top_level_is_not_root_at_top_level(self): """Test cases where the Silva root is not the highest URL you can get. """ request = TestRequest( application=self.root, url='http://localhost/man/edit', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) site = IVirtualSite(request) self.assertTrue(verifyObject(IVirtualSite, site)) self.assertEqual(site.get_root_url(), 'http://localhost') self.assertEqual(site.get_root_path(), '/') self.assertEqual(site.get_top_level_url(), 'http://localhost') self.assertEqual(site.get_top_level_path(), '/')
def test_root_brain(self): """If the header is present, rewriting is applied. You can compute the URL of a brain inside the same virtual host. """ request = TestRequest( application=self.root, url='http://localhost/docs/user', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root) self.assertEqual(method, 'index_html') self.assertEqual(path, ['user', 'docs']) catalog = root.service_catalog brains = catalog(meta_type='Silva Root', path='/root') self.assertEqual(len(brains), 1) brain = brains[0] url = getMultiAdapter((brain, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( brain.getURL(), 'http://localhost') self.assertEqual( str(url), 'http://localhost') self.assertEqual( url.url(), 'http://localhost') self.assertEqual( url.url(relative=True), '/') self.assertEqual( url.url(relative=True, preview=True), '/') self.assertEqual( url.url(preview=True), 'http://localhost') self.assertEqual( url.preview(), 'http://localhost')
def test_rewritten_short_long(self): request = TestRequest( application=self.root, url='http://localhost/hidden/docs/resources/api', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root.docs.dev) self.assertEqual(method, 'index_html') self.assertEqual(path, ['api', 'resources']) url = getMultiAdapter( (self.root.docs.dev.resources, request), IContentURL) self.assertEqual( url.breadcrumbs(), ({'name': u'Developer', 'url': 'http://localhost/hidden/docs'}, {'name': u'Resources', 'url': 'http://localhost/hidden/docs/resources'},))
def test_root_different_host(self): """Rewriting is applied even if the URL have not the same domain, but the header is present. """ request = TestRequest( application=self.root, url='http://development.server.corp/docs', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root) self.assertEqual(method, 'index_html') self.assertEqual(path, ['docs']) self.assertEqual('http://localhost/docs', request['ACTUAL_URL']) url = getMultiAdapter((self.root, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( str(url), 'http://localhost') self.assertEqual( url.url(), 'http://localhost') self.assertEqual( url.url(relative=True), '/') self.assertEqual( url.url(relative=True, preview=True), '/++preview++') self.assertEqual( url.url(preview=True), 'http://localhost/++preview++') self.assertEqual( url.preview(), 'http://localhost/++preview++')
def test_frontend_alias(self): request = TestRequest( application=self.root, url='http://frontend.localhost/info', headers=[('X-VHM-Url', 'http://frontend.localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root) self.assertEqual(method, 'index_html') self.assertEqual(path, []) catalog = root.service_catalog brains = catalog(meta_type='Silva Folder', path='/root/docs/admin') self.assertEqual(len(brains), 1) brain = brains[0] url = getMultiAdapter((brain, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( brain.getURL(), 'http://frontend.localhost') self.assertEqual( str(url), 'http://frontend.localhost') self.assertEqual( url.url(), 'http://frontend.localhost') self.assertEqual( url.url(relative=True), '/') self.assertEqual( url.url(relative=True, preview=True), '/') self.assertEqual( url.url(preview=True), 'http://frontend.localhost') self.assertEqual( url.preview(), 'http://frontend.localhost') catalog = root.service_catalog brains = catalog(meta_type='Silva Root', path='/root') self.assertEqual(len(brains), 1) brain = brains[0] url = getMultiAdapter((brain, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( brain.getURL(), 'http://frontend.localhost/info') self.assertEqual( str(url), 'http://frontend.localhost/info') self.assertEqual( url.url(), 'http://frontend.localhost/info') self.assertEqual( url.url(relative=True), '/info') self.assertEqual( url.url(relative=True, preview=True), '/info') self.assertEqual( url.url(preview=True), 'http://frontend.localhost/info') self.assertEqual( url.preview(), 'http://frontend.localhost/info')
def test_frontend(self): request = TestRequest( application=self.root, url='http://localhost', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root.docs.admin) self.assertEqual(method, 'index_html') self.assertEqual(path, []) url = getMultiAdapter((self.root.docs.admin, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( str(url), 'http://localhost') self.assertEqual( url.url(), 'http://localhost') self.assertEqual( url.url(relative=True), '/') self.assertEqual( url.url(relative=True, preview=True), '/++preview++') self.assertEqual( url.url(preview=True), 'http://localhost/++preview++') self.assertEqual( url.preview(), 'http://localhost/++preview++') url = getMultiAdapter((self.root.docs, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( str(url), 'http://localhost/manual') self.assertEqual( url.url(), 'http://localhost/manual') self.assertEqual( url.url(relative=True), '/manual') self.assertEqual( url.url(relative=True, preview=True), '/manual/++preview++') self.assertEqual( url.url(preview=True), 'http://localhost/manual/++preview++') self.assertEqual( url.url(preview=True, host='http://frontend.localhost'), 'http://frontend.localhost/manual/++preview++') self.assertEqual( url.url(preview=True, host='http://admin.localhost'), 'http://admin.localhost/++preview++/docs') self.assertEqual( url.preview(), 'http://localhost/manual/++preview++') url = getMultiAdapter((self.root, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( str(url), 'http://localhost/info') self.assertEqual( url.url(), 'http://localhost/info') self.assertEqual( url.url(relative=True), '/info') self.assertEqual( url.url(relative=True, preview=True), '/info/++preview++') self.assertEqual( url.url(preview=True), 'http://localhost/info/++preview++') self.assertEqual( url.preview(), 'http://localhost/info/++preview++')
def test_folder_brain_rewritten_long(self): """If the header is present, rewriting is applied. """ request = TestRequest( application=self.root, url='http://localhost/hidden/docs/resources', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root.docs.dev) self.assertEqual(method, 'index_html') self.assertEqual(path, ['resources']) catalog = root.service_catalog brains = catalog(meta_type='Silva Folder', path='/root/docs/admin') self.assertEqual(len(brains), 1) brain = brains[0] url = getMultiAdapter((brain, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( brain.getURL(), 'http://localhost/admin') self.assertEqual( str(url), 'http://localhost/admin') self.assertEqual( url.url(), 'http://localhost/admin') self.assertEqual( url.url(relative=True), '/admin') self.assertEqual( url.url(relative=True, preview=True), '/admin') self.assertEqual( url.url(preview=True), 'http://localhost/admin') self.assertEqual( url.preview(), 'http://localhost/admin') # Get the URL of a different brain catalog = root.service_catalog brains = catalog( meta_type='Silva Folder', path='/root/docs/dev/resources') self.assertEqual(len(brains), 1) brain = brains[0] url = getMultiAdapter((brain, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( brain.getURL(), 'http://localhost/hidden/docs/resources') self.assertEqual( str(url), 'http://localhost/hidden/docs/resources') self.assertEqual( url.url(), 'http://localhost/hidden/docs/resources') self.assertEqual( url.url(relative=True), '/hidden/docs/resources') self.assertEqual( url.url(relative=True, preview=True), '/hidden/docs/resources') self.assertEqual( url.url(preview=True), 'http://localhost/hidden/docs/resources') self.assertEqual( url.preview(), 'http://localhost/hidden/docs/resources') # Get the URL of a different brain catalog = root.service_catalog brains = catalog( meta_type='Silva Publication', path='/root/docs') self.assertEqual(len(brains), 1) brain = brains[0] url = getMultiAdapter((brain, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( brain.getURL(), 'http://localhost/docs') self.assertEqual( str(url), 'http://localhost/docs') self.assertEqual( url.url(), 'http://localhost/docs') self.assertEqual( url.url(relative=True), '/docs') self.assertEqual( url.url(relative=True, preview=True), '/docs') self.assertEqual( url.url(preview=True), 'http://localhost/docs') self.assertEqual( url.preview(), 'http://localhost/docs')
def test_folder_rewritten_long(self): """If the header is present, rewriting is applied. """ request = TestRequest( application=self.root, url='http://localhost/hidden/docs/resources', headers=[('X-VHM-Url', 'http://localhost')]) plugin = request.query_plugin(request.application, IVirtualHosting) root, method, path = plugin(request.method, request.path) self.assertEqual(root, self.root.docs.dev) self.assertEqual(method, 'index_html') self.assertEqual(path, ['resources']) url = getMultiAdapter((self.root.docs.admin, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( str(url), 'http://localhost/admin') self.assertEqual( url.url(), 'http://localhost/admin') self.assertEqual( url.url(relative=True), '/admin') self.assertEqual( url.url(relative=True, preview=True), '/admin/++preview++') self.assertEqual( url.url(preview=True), 'http://localhost/admin/++preview++') self.assertEqual( url.preview(), 'http://localhost/admin/++preview++') # Get the URL of a different folder url = getMultiAdapter((root.resources, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( str(url), 'http://localhost/hidden/docs/resources') self.assertEqual( url.url(), 'http://localhost/hidden/docs/resources') self.assertEqual( url.url(relative=True), '/hidden/docs/resources') self.assertEqual( url.url(relative=True, preview=True), '/hidden/docs/++preview++/resources') self.assertEqual( url.url(preview=True), 'http://localhost/hidden/docs/++preview++/resources') self.assertEqual( url.preview(), 'http://localhost/hidden/docs/++preview++/resources') # Get the URL of a different publication url = getMultiAdapter((self.root.docs, request), IContentURL) self.assertTrue(verifyObject(IContentURL, url)) self.assertEqual( str(url), 'http://localhost/docs') self.assertEqual( url.url(), 'http://localhost/docs') self.assertEqual( url.url(relative=True), '/docs') self.assertEqual( url.url(relative=True, preview=True), '/++preview++/docs') self.assertEqual( url.url(preview=True), 'http://localhost/++preview++/docs') self.assertEqual( url.preview(), 'http://localhost/++preview++/docs')