diff --git a/swh/lister/launchpad/tests/conftest.py b/swh/lister/launchpad/tests/conftest.py index 84f2cb5..d1dd73e 100644 --- a/swh/lister/launchpad/tests/conftest.py +++ b/swh/lister/launchpad/tests/conftest.py @@ -1,46 +1,51 @@ +# Copyright (C) 2020 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 from datetime import datetime import json import os from unittest.mock import patch import pytest from swh.lister import get_lister from swh.lister.core.models import initialize from sqlalchemy.engine import create_engine @pytest.fixture def lister_launchpad(datadir, lister_db_url, swh_scheduler): class Collection: entries = [] def __init__(self, file): self.entries = [Repo(r) for r in file] def __getitem__(self, key): return self.entries[key] class Repo: def __init__(self, d: dict): for key in d.keys(): if key == "date_last_modified": setattr(self, key, datetime.fromisoformat(d[key])) else: setattr(self, key, d[key]) def mock_lp_response(page) -> Collection: response_filepath = os.path.join(datadir, f"response{page}.json") with open(response_filepath, "r", encoding="utf-8") as f: return Collection(json.load(f)) with patch("launchpadlib.launchpad.Launchpad.login_anonymously"): lister = get_lister("launchpad", db_url=lister_db_url) lister.scheduler = swh_scheduler # inject scheduler fixture lister.launchpad.git_repositories.getRepositories.side_effect = [ mock_lp_response(i) for i in range(3) ] initialize(create_engine(lister_db_url), drop_tables=True) return lister diff --git a/swh/lister/launchpad/tests/test_lister.py b/swh/lister/launchpad/tests/test_lister.py index dd22e3d..963a0dd 100644 --- a/swh/lister/launchpad/tests/test_lister.py +++ b/swh/lister/launchpad/tests/test_lister.py @@ -1,27 +1,33 @@ +# Copyright (C) 2020 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 + + def test_launchpad_lister(lister_launchpad, datadir): lister_launchpad.run() assert ( len(lister_launchpad.launchpad.git_repositories.getRepositories.mock_calls) == 3 ) r = lister_launchpad.scheduler.search_tasks(task_type="load-git") assert len(r) == 30 for row in r: assert row["type"] == "load-git" # arguments check args = row["arguments"]["args"] assert len(args) == 0 # kwargs kwargs = row["arguments"]["kwargs"] assert set(kwargs.keys()) == {"url"} url = kwargs["url"] assert url.startswith("https://git.launchpad.net") assert row["policy"] == "recurring" assert row["priority"] is None assert row["retries_left"] == 0