Пример #1
0
 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)
Пример #2
0
    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)
Пример #3
0
    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'])
Пример #4
0
    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'})
Пример #5
0
    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)