54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
import tempfile
|
|
import unittest
|
|
|
|
from scripts.validate_release_remote import remote_matches, repository_identity
|
|
|
|
|
|
class ReleaseRemoteTests(unittest.TestCase):
|
|
def test_https_and_ssh_forms_identify_the_same_repository(self) -> None:
|
|
expected = repository_identity(
|
|
"https://git.m4ko.net/m4ko/pristontale-eu-linux"
|
|
)
|
|
self.assertEqual(
|
|
repository_identity("git@git.m4ko.net:m4ko/pristontale-eu-linux.git"),
|
|
expected,
|
|
)
|
|
self.assertEqual(
|
|
repository_identity(
|
|
"ssh://git@git.m4ko.net/m4ko/pristontale-eu-linux.git"
|
|
),
|
|
expected,
|
|
)
|
|
|
|
def test_file_url_and_local_path_identify_the_same_repository(self) -> None:
|
|
with tempfile.TemporaryDirectory() as temporary:
|
|
path = Path(temporary) / "remote.git"
|
|
self.assertEqual(
|
|
repository_identity(path.as_uri()),
|
|
repository_identity(str(path)),
|
|
)
|
|
|
|
def test_remote_must_match_one_explicitly_allowed_identity(self) -> None:
|
|
self.assertTrue(
|
|
remote_matches(
|
|
"ssh://git@192.168.0.110:222/m4ko/pristontale-eu-linux.git",
|
|
[
|
|
"https://git.m4ko.net/m4ko/pristontale-eu-linux",
|
|
"ssh://git@192.168.0.110:222/m4ko/pristontale-eu-linux.git",
|
|
],
|
|
)
|
|
)
|
|
self.assertFalse(
|
|
remote_matches(
|
|
"ssh://git@untrusted.test/m4ko/pristontale-eu-linux.git",
|
|
["https://git.m4ko.net/m4ko/pristontale-eu-linux"],
|
|
)
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|