Coverage for tests/test_software_heritage.py: 100%
19 statements
« prev ^ index » next coverage.py v7.14.3, created at 2026-06-27 17:58 +0000
« prev ^ index » next coverage.py v7.14.3, created at 2026-06-27 17:58 +0000
1# SPDX-FileCopyrightText: 2026 Arcangelo Massari <github@a.arcangelomassari.com>
2#
3# SPDX-License-Identifier: ISC
5from __future__ import annotations
7import pytest
8import requests_mock
10from software_citation_sync.software_heritage import archive_origin
13def test_archive_origin_returns_swh_url(requests_mock: requests_mock.Mocker) -> None:
14 origin = "https://github.com/arcangelo7/ramose"
15 save_url = (
16 "https://archive.softwareheritage.org/api/1/origin/save/git/url/https%3A%2F%2Fgithub.com%2Farcangelo7%2Framose/"
17 )
18 request_url = "https://archive.softwareheritage.org/api/1/origin/save/2373061/"
19 requests_mock.post(
20 save_url,
21 json={
22 "request_url": request_url,
23 "save_task_status": "scheduled",
24 "snapshot_swhid": "",
25 },
26 )
27 requests_mock.get(
28 request_url,
29 json={
30 "request_url": request_url,
31 "save_task_status": "succeeded",
32 "snapshot_swhid": "swh:1:snp:fc0b501f594531b2b8f694469cc38aed15897bbe",
33 },
34 )
36 result = archive_origin(origin, timeout_seconds=30, poll_interval_seconds=0)
38 assert (
39 result == "https://archive.softwareheritage.org/swh:1:snp:fc0b501f594531b2b8f694469cc38aed15897bbe"
40 ";origin=https://github.com/arcangelo7/ramose"
41 )
44def test_archive_origin_requires_poll_url(requests_mock: requests_mock.Mocker) -> None:
45 origin = "https://github.com/arcangelo7/ramose"
46 save_url = (
47 "https://archive.softwareheritage.org/api/1/origin/save/git/url/https%3A%2F%2Fgithub.com%2Farcangelo7%2Framose/"
48 )
49 requests_mock.post(
50 save_url,
51 json={
52 "save_task_status": "scheduled",
53 "snapshot_swhid": "",
54 },
55 )
57 with pytest.raises(KeyError) as exc_info:
58 archive_origin(origin, timeout_seconds=30, poll_interval_seconds=0)
60 assert exc_info.value.args == ("request_url",)