From 1889875f67cc47d5b1c1594c099f07de40eb65d0 Mon Sep 17 00:00:00 2001 From: "Antoine R. Dumont (@ardumont)" Date: Sat, 12 Oct 2019 03:10:08 +0200 Subject: [PATCH] gitlab.lister: Add integration test which checks scheduled tasks Related T2032 --- swh/lister/gitlab/lister.py | 3 +- swh/lister/gitlab/tests/conftest.py | 5 +++ .../gitlab.com}/api_empty_response.json | 0 .../tests/data/gitlab.com/api_response.json | 1 + ...s,page=0,order_by=id,sort=asc,per_page=20} | 0 .../{test_gitlab_lister.py => test_lister.py} | 36 +++++++++++++++++-- 6 files changed, 41 insertions(+), 4 deletions(-) rename swh/lister/gitlab/tests/{ => data/gitlab.com}/api_empty_response.json (100%) create mode 120000 swh/lister/gitlab/tests/data/gitlab.com/api_response.json rename swh/lister/gitlab/tests/{api_response.json => data/gitlab.com/api_v4__projects,page=0,order_by=id,sort=asc,per_page=20} (100%) rename swh/lister/gitlab/tests/{test_gitlab_lister.py => test_lister.py} (55%) diff --git a/swh/lister/gitlab/lister.py b/swh/lister/gitlab/lister.py index 60b5320..6e01005 100644 --- a/swh/lister/gitlab/lister.py +++ b/swh/lister/gitlab/lister.py @@ -1,4 +1,5 @@ -# Copyright (C) 2018-2019 the Software Heritage developers +# Copyright (C) 2018-2019 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information diff --git a/swh/lister/gitlab/tests/conftest.py b/swh/lister/gitlab/tests/conftest.py index 507fef9..2426987 100644 --- a/swh/lister/gitlab/tests/conftest.py +++ b/swh/lister/gitlab/tests/conftest.py @@ -1 +1,6 @@ +# Copyright (C) 2019 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + from swh.lister.core.tests.conftest import * # noqa diff --git a/swh/lister/gitlab/tests/api_empty_response.json b/swh/lister/gitlab/tests/data/gitlab.com/api_empty_response.json similarity index 100% rename from swh/lister/gitlab/tests/api_empty_response.json rename to swh/lister/gitlab/tests/data/gitlab.com/api_empty_response.json diff --git a/swh/lister/gitlab/tests/data/gitlab.com/api_response.json b/swh/lister/gitlab/tests/data/gitlab.com/api_response.json new file mode 120000 index 0000000..4a9356e --- /dev/null +++ b/swh/lister/gitlab/tests/data/gitlab.com/api_response.json @@ -0,0 +1 @@ +api_v4__projects,page=0,order_by=id,sort=asc,per_page=20 \ No newline at end of file diff --git a/swh/lister/gitlab/tests/api_response.json b/swh/lister/gitlab/tests/data/gitlab.com/api_v4__projects,page=0,order_by=id,sort=asc,per_page=20 similarity index 100% rename from swh/lister/gitlab/tests/api_response.json rename to swh/lister/gitlab/tests/data/gitlab.com/api_v4__projects,page=0,order_by=id,sort=asc,per_page=20 diff --git a/swh/lister/gitlab/tests/test_gitlab_lister.py b/swh/lister/gitlab/tests/test_lister.py similarity index 55% rename from swh/lister/gitlab/tests/test_gitlab_lister.py rename to swh/lister/gitlab/tests/test_lister.py index 9e43816..2201bea 100644 --- a/swh/lister/gitlab/tests/test_gitlab_lister.py +++ b/swh/lister/gitlab/tests/test_lister.py @@ -1,7 +1,9 @@ -# Copyright (C) 2017-2019 the Software Heritage developers +# Copyright (C) 2017-2019 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information +import logging import re import unittest from datetime import datetime, timedelta @@ -10,12 +12,15 @@ from swh.lister.core.tests.test_lister import HttpListerTesterBase from swh.lister.gitlab.lister import GitLabLister +logger = logging.getLogger(__name__) + + class GitLabListerTester(HttpListerTesterBase, unittest.TestCase): Lister = GitLabLister test_re = re.compile(r'^.*/projects.*page=(\d+).*') lister_subdir = 'gitlab' - good_api_response_file = 'api_response.json' - bad_api_response_file = 'api_empty_response.json' + good_api_response_file = 'data/gitlab.com/api_response.json' + bad_api_response_file = 'data/gitlab.com/api_empty_response.json' first_index = 1 entries_per_page = 10 convert_type = int @@ -36,3 +41,28 @@ class GitLabListerTester(HttpListerTesterBase, unittest.TestCase): one_second = int((datetime.now() + timedelta(seconds=1.5)).timestamp()) context.headers['RateLimit-Reset'] = str(one_second) return '{"error":"dummy"}' + + +def test_lister_gitlab(swh_listers, requests_mock_datadir): + lister = swh_listers['gitlab'] + + lister.run() + + r = lister.scheduler.search_tasks(task_type='load-git') + assert len(r) == 10 + + for row in r: + assert row['type'] == 'load-git' + # arguments check + args = row['arguments']['args'] + assert len(args) == 1 + + url = args[0] + assert url.startswith('https://gitlab.com') + + # kwargs + kwargs = row['arguments']['kwargs'] + assert kwargs == {} + + assert row['policy'] == 'recurring' + assert row['priority'] is None