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()