def test_fetch_enterprise(self): """Test whether issues are properly fetched from GitLab Enterprise server""" setup_http_server(GITLAB_ENTERPRISE_URL_PROJECT, GITLAB_ENTERPRISE_ISSUES_URL) gitlab = GitLab('am', 'test', base_url=GITLAB_ENTERPRISE_URL) issues = [issues for issues in gitlab.fetch()] self.assertEqual(len(issues), 4) self.assertEqual(issues[0]['origin'], GITLAB_ENTERPRISE_URL + "/am/test") self.assertEqual(issues[0]['category'], 'issue') self.assertEqual(issues[0]['tag'], GITLAB_ENTERPRISE_URL + "/am/test") self.assertEqual(issues[0]['data']['author']['id'], 1) self.assertEqual(issues[0]['data']['author']['username'], 'redfish64')
def test_fetch_enterprise(self): """Test whether issues are properly fetched from GitLab Enterprise server""" setup_http_server(GITLAB_ENTERPRISE_URL_PROJECT, GITLAB_ENTERPRISE_ISSUES_URL) self.backend = GitLab('am', 'test', base_url=GITLAB_ENTERPRISE_URL, archive=self.archive) self._test_fetch_from_archive()
def test_fetch_empty(self): """Test when return empty""" page_1 = '' httpretty.register_uri(httpretty.GET, GITLAB_URL_PROJECT, body='', status=200) httpretty.register_uri(httpretty.GET, GITLAB_ISSUES_URL, body=page_1, status=200) gitlab = GitLab("fdroid", "fdroiddata", api_token="your-token") issues = [issues for issues in gitlab.fetch()] self.assertEqual(len(issues), 0)
def test_fetch_from_date(self): """Test whether issues from a given date are properly fetched from GitLab""" setup_http_server(GITLAB_URL_PROJECT, GITLAB_ISSUES_URL) gitlab = GitLab("fdroid", "fdroiddata", "your-token") from_date = datetime.datetime(2017, 3, 18) issues = [issues for issues in gitlab.fetch(from_date=from_date)] self.assertEqual(len(issues), 3) self.assertEqual(issues[0]['origin'], GITLAB_URL + '/fdroid/fdroiddata') self.assertEqual(issues[0]['category'], 'issue') self.assertEqual(issues[0]['tag'], GITLAB_URL + '/fdroid/fdroiddata') self.assertEqual(issues[0]['data']['author']['id'], 1) self.assertEqual(issues[0]['data']['author']['username'], 'redfish64') from_date = datetime.datetime(3019, 3, 18) issues = [issues for issues in gitlab.fetch(from_date=from_date)] self.assertEqual(len(issues), 0)
def test_initialization_entreprise(self): """Test whether attributes are initialized for the entreprise version""" setup_http_server(GITLAB_ENTERPRISE_URL_PROJECT, GITLAB_ENTERPRISE_ISSUES_URL) gitlab = GitLab('am', 'test', base_url=GITLAB_ENTERPRISE_URL, tag='') self.assertEqual(gitlab.owner, 'am') self.assertEqual(gitlab.repository, 'test') self.assertEqual(gitlab.origin, GITLAB_ENTERPRISE_URL + "/am/test") self.assertEqual(gitlab.tag, GITLAB_ENTERPRISE_URL + "/am/test") self.assertIsNone(gitlab.client)
def test_initialization(self): """Test whether attributes are initializated""" setup_http_server(GITLAB_URL_PROJECT, GITLAB_ISSUES_URL, rate_limit_headers={'RateLimit-Remaining': '20'}) gitlab = GitLab('fdroid', 'fdroiddata', api_token='aaa', tag='test') self.assertEqual(gitlab.owner, 'fdroid') self.assertEqual(gitlab.repository, 'fdroiddata') self.assertEqual(gitlab.origin, GITLAB_URL + '/fdroid/fdroiddata') self.assertEqual(gitlab.tag, 'test') self.assertIsNone(gitlab.client) # When tag is empty or None it will be set to # the value in origin gitlab = GitLab('fdroid', 'fdroiddata', api_token='aaa') self.assertEqual(gitlab.owner, 'fdroid') self.assertEqual(gitlab.repository, 'fdroiddata') self.assertEqual(gitlab.origin, GITLAB_URL + '/fdroid/fdroiddata') self.assertEqual(gitlab.tag, GITLAB_URL + '/fdroid/fdroiddata') self.assertIsNone(gitlab.client)
def setUp(self): super().setUp() self.backend = GitLab("fdroid", "fdroiddata", api_token="your-token", archive=self.archive)
def test_has_resuming(self): """Test if it returns False when has_resuming is called""" self.assertEqual(GitLab.has_resuming(), False)
def test_has_archiving(self): """Test if it returns False when has_archiving is called""" self.assertEqual(GitLab.has_archiving(), True)
def __get_gitlab_data(self): gitlabObj = GitLab(owner=self.owner, repository=self.repo, api_token=self.token) return gitlabObj
# Parse command line arguments parser = argparse.ArgumentParser(description = "Count GitLab issues/merge requests in a given period") parser.add_argument("-f", "--date-from", help = "Date from YYYY-MM-DD HH:MM:SS", required=True, type=valid_datetime) parser.add_argument("-t", "--date-to", help = "Date to YYYY-MM-DD HH:MM:SS", required=True, type=valid_datetime) parser.add_argument("-u", "--url", help = "GitLab base URL", type=str) parser.add_argument("-o", "--owner", help = "GitLab owner/org", required=True, type=str) parser.add_argument("-r", "--repo", help = "GitLab repo", required=True, type=str) parser.add_argument("-s", "--sleep", help = "Sleep for rate", type=bool, default=False) parser.add_argument("-T", "--token", help = "GitLab token", type=str) parser.add_argument("-c", "--category", help = "Gitlab category (issue or merge_request)", type=str, default="issue") parser.add_argument("-C", "--use-created-date", help = "Use created date instead of update date", type=lambda s: s.lower() in ['true', 't', 'yes', 'y', '1']) parser.add_argument("-D", "--updated-diff", help = "If >=0 skip objects where created + diff > updated", type=int, default=-1) args = parser.parse_args() # print(args) gitlab = GitLab(owner=args.owner, repository=args.repo, api_token=args.token, base_url=args.url, tag=None, archive=None, sleep_for_rate=args.sleep, min_rate_to_sleep=10, max_retries=5, sleep_time=1) # print(gitlab) # print ((args.date_from, args.date_to)) oids = set() for obj in gitlab.fetch(category=args.category, from_date=args.date_from): # print(obj.keys()) # print(obj['data'].keys()) # dtu = dateutil.parser.parse(obj['data']['updated_at']) dtu = utc.localize(datetime.datetime.fromtimestamp(gitlab.metadata_updated_on(obj['data']))) # print(dtu) if args.use_created_date: dtc = dateutil.parser.parse(obj['data']['created_at']) diff = (dtu - dtc) / datetime.timedelta(seconds=1) # print((dtc, dtu)) if (args.updated_diff >= 0 and diff > args.updated_diff) or dtc < args.date_from or dtc > args.date_to: