def test_deserializing(self): catalog = getToolByName(self.folder, 'portal_catalog') brains = catalog(path='/'.join(self.folder.getPhysicalPath()), sort_on='path') self.assertEqual(2, len(brains)) serializer = BrainSerializer() data = json.dumps(serializer.serialize_brains(brains)) results = serializer.deserialize_brains( json.loads(data), total_length=13) self.assertEqual(BrainResultSet, type(results)) self.assertEqual(2, len(results)) self.assertEqual(13, results.get_total_length()) folder, page = results self.assertTrue(IBrainRepresentation.providedBy(folder)) self.assertTrue(IBrainRepresentation.providedBy(page)) self.assertEqual('Feed folder', folder.Title) self.assertEqual('The page with uml\xc3\xa4uts', page.Title) # The url would be replaced by the bridge proxy, but here we # deserialize it directly. self.assertEqual('***portal_url***feed-folder', folder.getURL()) self.assertEqual( '***portal_url***feed-folder/the-page-with-umlauts', page.getURL()) self.assertEqual('Folder', folder.portal_type) self.assertEqual('Document', page.portal_type)
def test_deserializing(self): catalog = getToolByName(self.folder, 'portal_catalog') brains = catalog(path='/'.join(self.folder.getPhysicalPath()), sort_on='path') self.assertEqual(len(brains), 2) serializer = BrainSerializer() data = json.dumps(serializer.serialize_brains(brains)) results = serializer.deserialize_brains(json.loads(data), total_length=13) self.assertEqual(type(results), BrainResultSet) self.assertEqual(len(results), 2) self.assertEqual(results.get_total_length(), 13) folder, page = results self.assertTrue(IBrainRepresentation.providedBy(folder)) self.assertTrue(IBrainRepresentation.providedBy(page)) self.assertEqual(folder.Title, 'Feed folder') self.assertEqual(page.Title, 'The page with uml\xc3\xa4uts') # The url would be replaced by the bridge proxy, but here we # deserialize it directly. self.assertEqual(folder.getURL(), '***portal_url***feed-folder') self.assertEqual(page.getURL(), '***portal_url***feed-folder/page') self.assertEqual(folder.portal_type, 'Folder') self.assertEqual(page.portal_type, 'Document')
def test_search_catalog(self): response_data = [ {'Title': 'Foo', '_url': 'https://target-client/foo', 'portal_type': 'Folder'}] query = {'portal_type': ['Folder']} response = self._create_response(raw=json.dumps(response_data)) response.headers = {'X-total_results_length': '1'} url = 'http://bridge/proxy/foo/@@bridge-search-catalog' self._expect_request( url=url, data={'query': json.dumps({'portal_type': ['Folder'], 'batching_start': 0}), 'limit': 50}).result(response) self.replay() utility = getUtility(IBridgeRequest) results = utility.search_catalog('foo', query) self.assertEqual(type(results), BrainResultSet) self.assertEqual(len(results), 1) brain = results[0] self.assertTrue(IBrainRepresentation.providedBy(brain)) self.assertEqual(brain.getURL(), 'https://target-client/foo') self.assertEqual(brain.portal_type, 'Folder') self.assertEqual(brain.Title, 'Foo')
def test_search_catalog(self): response_data = [{ 'Title': 'Foo', '_url': 'https://target-client/foo', 'portal_type': 'Folder' }] query = {'portal_type': ['Folder']} response = self._create_response(raw=json.dumps(response_data)) response.headers = {'X-total_results_length': '1'} url = 'http://bridge/proxy/foo/@@bridge-search-catalog' self._expect_request(url=url, data={ 'query': json.dumps({ 'portal_type': ['Folder'], 'batching_start': 0 }), 'limit': 50 }).result(response) self.replay() utility = getUtility(IBridgeRequest) results = utility.search_catalog('foo', query) self.assertEqual(type(results), BrainResultSet) self.assertEqual(len(results), 1) brain = results[0] self.assertTrue(IBrainRepresentation.providedBy(brain)) self.assertEqual(brain.getURL(), 'https://target-client/foo') self.assertEqual(brain.portal_type, 'Folder') self.assertEqual(brain.Title, 'Foo')
def test_full_stack_catalog_query_by_traversing(self): query = {"path": "/".join(self.folder.getPhysicalPath())} utility = getUtility(IBridgeRequest) results = utility.search_catalog("current-client", query) self.assertEqual(len(results), 2) folder, page = results self.assertTrue(IBrainRepresentation.providedBy(folder)) self.assertTrue(IBrainRepresentation.providedBy(page)) self.assertEqual(folder.Title, "Feed folder") self.assertEqual(page.Title, "The page with uml\xc3\xa4uts") self.assertEqual(folder.getURL(), "http://nohost/plone/feed-folder") self.assertEqual(page.getURL(), "http://nohost/plone/feed-folder/page") self.assertEqual(folder.portal_type, "Folder") self.assertEqual(page.portal_type, "Document")
def test_full_stack_catalog_query_by_traversing(self): query = { 'path': '/'.join(self.folder.getPhysicalPath())} utility = getUtility(IBridgeRequest) results = utility.search_catalog('current-client', query) self.assertEqual(len(results), 2) folder, page = results self.assertTrue(IBrainRepresentation.providedBy(folder)) self.assertTrue(IBrainRepresentation.providedBy(page)) self.assertEqual(folder.Title, 'Feed folder') self.assertEqual(page.Title, 'The page with uml\xc3\xa4uts') self.assertEqual(folder.getURL(), 'http://nohost/plone/feed-folder') self.assertEqual(page.getURL(), 'http://nohost/plone/feed-folder/page') self.assertEqual(folder.portal_type, 'Folder') self.assertEqual(page.portal_type, 'Document')
def test_batched_results_with_respons_headers(self): query = { 'path': '/'.join(self.folder.getPhysicalPath()), 'sort_on': 'sortable_title', 'sort_limit': 1} utility = getUtility(IBridgeRequest) results = utility.search_catalog('current-client', query) self.assertEqual(len(results), 1) folder = results[0] self.assertTrue(IBrainRepresentation.providedBy(folder)) self.assertEqual(folder.Title, 'Feed folder')
def test_batched_results_with_respons_headers(self): query = { 'path': '/'.join(self.folder.getPhysicalPath()), 'sort_on': 'sortable_title', 'sort_order': 'reverse', 'sort_limit': 1} utility = getUtility(IBridgeRequest) results = utility.search_catalog('current-client', query) self.assertEqual(len(results), 1) folder = results[0] self.assertTrue(IBrainRepresentation.providedBy(folder)) self.assertEqual(folder.Title, 'Feed folder')
def test_batched_results_with_respons_headers(self): query = { "path": "/".join(self.folder.getPhysicalPath()), "sort_on": "sortable_title", "sort_order": "reverse", "sort_limit": 1, } utility = getUtility(IBridgeRequest) results = utility.search_catalog("current-client", query) self.assertEqual(len(results), 1) folder = results[0] self.assertTrue(IBrainRepresentation.providedBy(folder)) self.assertEqual(folder.Title, "Feed folder")