def test_search(self): """ Test the search endpoint """ with MockSolrResponse(self.app.config['SOLR_SERVICE_SEARCH_HANDLER']): r = self.client.get(url_for('search')) self.assertIn('responseHeader', r.json)
def test_set_max_rows(self): """ solr should only return up to a default number of documents multiplied by the user's ratelimit-level, if applicable """ with MockSolrResponse(self.app.config.get('SOLR_SERVICE_SEARCH_HANDLER')): r = self.client.get( url_for('search'), query_string={'q': '*', 'rows': 10} ) self.assertEqual(len(r.json['response']['docs']), 7) self.app.config['SOLR_SERVICE_MAX_ROWS'] = 2 r = self.client.get( url_for('search'), query_string={'q': '*', 'rows': 10} ) self.assertEqual(len(r.json['response']['docs']), 2) r = self.client.get( url_for('search'), query_string={'q': '*', 'rows': 10}, headers={'X-Adsws-Ratelimit-Level': '10'} ) self.assertEqual(len(r.json['response']['docs']), 7)
def test_cleanup_params(self): """ Certain parameters have limits """ with MockSolrResponse(self.app.config.get('SOLR_SERVICE_SEARCH_HANDLER')): r = self.client.get( url_for('search'), query_string={'q': 'star', 'hl.snippets': 10}, ) self.assertEqual(r.json['responseHeader']['params']['hl.snippets'], ['4']) r = self.client.get( url_for('search'), query_string={'q': 'star', 'hl.snippets': 14, 'hl.full.snippets': 10}, ) self.assertEqual(r.json['responseHeader']['params']['hl.snippets'], ['4']) self.assertEqual(r.json['responseHeader']['params']['hl.full.snippets'], ['4']) r = self.client.get( url_for('search'), query_string={'q': 'star', 'hl.fragsize': '0'}, ) self.assertEqual(r.json['responseHeader']['params']['hl.fragsize'], ['1']) r = self.client.get( url_for('search'), query_string={'q': 'star', 'hl.fragsize': '50'}, ) self.assertEqual(r.json['responseHeader']['params']['hl.fragsize'], ['50'])
def test_bot_request(self): """ Test that bot requests are sent to the right endpoint """ with MockSolrResponse( self.app.config['BOT_SOLR_SERVICE_SEARCH_HANDLER']): r = self.client.get(url_for('search'), query_string={'q': 'star'}, headers={'Authorization': 'Bearer:GoogleBot'}) # At this point, an exception would have happened if the request was # sent to SOLR_SERVICE_SEARCH_HANDLER instead of BOT_SOLR_SERVICE_SEARCH_HANDLER with MockSolrResponse(self.app.config['SOLR_SERVICE_SEARCH_HANDLER']): r = self.client.get(url_for('search'), query_string={'q': 'star'}, headers={'Authorization': 'Bearer:NormalUser'})
def test_disallowed_fields(self): """ disallowed fields should be absent from the solr response """ with MockSolrResponse(self.app.config.get('SOLR_SERVICE_SEARCH_HANDLER')): fl = 'title,id,abstract,{}'.format( ','.join(self.app.config['SOLR_SERVICE_DISALLOWED_FIELDS']) ) r = self.client.get( url_for('search'), query_string={'q': 'star', 'fl': fl}, ) for doc in r.json['response']['docs']: self.assertIn('title', doc) self.assertIn('id', doc) self.assertIn('abstract', doc) for field in self.app.config['SOLR_SERVICE_DISALLOWED_FIELDS']: self.assertNotIn(field, doc)