예제 #1
0
 def test_getRemoteBugBatch_caching(self):
     self._addIssuesResponse()
     tracker = GitLab("https://gitlab.com/user/repository/issues")
     tracker.initializeRemoteBugDB(
         [str(bug["iid"]) for bug in self.sample_bugs])
     responses.reset()
     self.assertEqual(
         {bug["iid"]: bug for bug in self.sample_bugs[:2]},
         tracker.getRemoteBugBatch(["1", "2"]))
     self.assertEqual(0, len(responses.calls))
예제 #2
0
 def test_getRemoteBugBatch(self):
     self._addIssuesResponse()
     tracker = GitLab("https://gitlab.com/user/repository/issues")
     self.assertEqual(
         {bug["iid"]: bug for bug in self.sample_bugs[:2]},
         tracker.getRemoteBugBatch(["1", "2"]))
     self.assertEqual(
         "https://gitlab.com/api/v4/projects/user%2Frepository/issues?"
         "iids[]=1&iids[]=2",
         responses.calls[-1].request.url)
예제 #3
0
 def test_getRemoteBugBatch_last_accessed(self):
     self._addIssuesResponse()
     tracker = GitLab("https://gitlab.com/user/repository/issues")
     since = datetime(2015, 1, 1, 12, 0, 0, tzinfo=pytz.UTC)
     self.assertEqual(
         {bug["iid"]: bug for bug in self.sample_bugs[:2]},
         tracker.getRemoteBugBatch(["1", "2"], last_accessed=since))
     self.assertEqual(
         "https://gitlab.com/api/v4/projects/user%2Frepository/issues?"
         "updated_after=2015-01-01T12%3A00%3A00Z&iids[]=1&iids[]=2",
         responses.calls[-1].request.url)
예제 #4
0
    def test_getRemoteBugBatch_pagination(self):
        def issues_callback(request):
            url = urlsplit(request.url)
            base_url = urlunsplit(list(url[:3]) + ["", ""])
            page = int(parse_qs(url.query).get("page", ["1"])[0])
            links = []
            if page != 3:
                links.append('<%s?page=%d>; rel="next"' % (base_url, page + 1))
                links.append('<%s?page=3>; rel="last"' % base_url)
            if page != 1:
                links.append('<%s?page=1>; rel="first"' % base_url)
                links.append('<%s?page=%d>; rel="prev"' % (base_url, page - 1))
            start = (page - 1) * 2
            end = page * 2
            return (
                200, {"Link": ", ".join(links)},
                json.dumps(self.sample_bugs[start:end]))

        responses.add_callback(
            "GET",
            "https://gitlab.com/api/v4/projects/user%2Frepository/issues",
            callback=issues_callback, content_type="application/json")
        tracker = GitLab("https://gitlab.com/user/repository/issues")
        self.assertEqual(
            {bug["iid"]: bug for bug in self.sample_bugs},
            tracker.getRemoteBugBatch(
                [str(bug["iid"]) for bug in self.sample_bugs]))
        expected_urls = [
            "https://gitlab.com/api/v4/projects/user%2Frepository/issues?" +
            "&".join("iids[]=%s" % bug["iid"] for bug in self.sample_bugs),
            "https://gitlab.com/api/v4/projects/user%2Frepository/issues?"
            "page=2",
            "https://gitlab.com/api/v4/projects/user%2Frepository/issues?"
            "page=3",
            ]
        self.assertEqual(
            expected_urls, [call.request.url for call in responses.calls])