Changeset View
Changeset View
Standalone View
Standalone View
swh/lister/bitbucket/tests/test_bb_lister.py
# Copyright (C) 2017-2019 the Software Heritage developers | # Copyright (C) 2017-2019 the Software Heritage developers | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import re | import re | ||||
import unittest | import unittest | ||||
from datetime import timedelta | from datetime import timedelta | ||||
from urllib.parse import unquote | from urllib.parse import unquote | ||||
import iso8601 | import iso8601 | ||||
import requests_mock | import requests_mock | ||||
from swh.lister.bitbucket.lister import BitBucketLister | from swh.lister.bitbucket.lister import BitBucketLister | ||||
from swh.lister.core.tests.test_lister import HttpListerTester | from swh.lister.core.tests.test_lister import HttpListerTester | ||||
def convert_type(req_index): | def _convert_type(req_index): | ||||
"""Convert the req_index to its right type according to the model's | """Convert the req_index to its right type according to the model's | ||||
"indexable" column. | "indexable" column. | ||||
""" | """ | ||||
return iso8601.parse_date(unquote(req_index)) | return iso8601.parse_date(unquote(req_index)) | ||||
class BitBucketListerTester(HttpListerTester, unittest.TestCase): | class BitBucketListerTester(HttpListerTester, unittest.TestCase): | ||||
Lister = BitBucketLister | Lister = BitBucketLister | ||||
test_re = re.compile(r'/repositories\?after=([^?&]+)') | test_re = re.compile(r'/repositories\?after=([^?&]+)') | ||||
lister_subdir = 'bitbucket' | lister_subdir = 'bitbucket' | ||||
good_api_response_file = 'api_response.json' | good_api_response_file = 'api_response.json' | ||||
bad_api_response_file = 'api_empty_response.json' | bad_api_response_file = 'api_empty_response.json' | ||||
first_index = convert_type('2008-07-12T07:44:01.476818+00:00') | first_index = _convert_type('2008-07-12T07:44:01.476818+00:00') | ||||
last_index = convert_type('2008-07-19T06:16:43.044743+00:00') | last_index = _convert_type('2008-07-19T06:16:43.044743+00:00') | ||||
entries_per_page = 10 | entries_per_page = 10 | ||||
convert_type = staticmethod(convert_type) | convert_type = _convert_type | ||||
def request_index(self, request): | def request_index(self, request): | ||||
"""(Override) This is needed to emulate the listing bootstrap | """(Override) This is needed to emulate the listing bootstrap | ||||
when no min_bound is provided to run | when no min_bound is provided to run | ||||
""" | """ | ||||
m = self.test_re.search(request.path_url) | m = self.test_re.search(request.path_url) | ||||
idx = convert_type(m.group(1)) | idx = _convert_type(m.group(1)) | ||||
if idx == self.Lister.default_min_bound: | if idx == self.Lister.default_min_bound: | ||||
idx = self.first_index | idx = self.first_index | ||||
return idx | return idx | ||||
@requests_mock.Mocker() | @requests_mock.Mocker() | ||||
def test_fetch_none_nodb(self, http_mocker): | def test_fetch_none_nodb(self, http_mocker): | ||||
"""Overridden because index is not an integer nor a string | """Overridden because index is not an integer nor a string | ||||
Show All 22 Lines |