#!/usr/bin/env python3

import tempfile
import unittest
from pathlib import Path

from cfg_resolve import find_p8, parse_p8_filename


class CredentialFilenameTest(unittest.TestCase):
    def test_parses_canonical_name(self):
        parsed = parse_p8_filename(
            "AuthKey_SG24AB2JHM_Issuer_f24f1629-3461-4a57-8807-8f7c9964d652.p8"
        )
        self.assertEqual(
            parsed,
            ("SG24AB2JHM", "f24f1629-3461-4a57-8807-8f7c9964d652"),
        )

    def test_parses_metadata_rich_existing_name(self):
        parsed = parse_p8_filename(
            "AE2(key_id_SG24AB2JHM_issuer_"
            "f24f1629-3461-4a57-8807-8f7c9964d652_vendor_id_92561414).p8"
        )
        self.assertEqual(
            parsed,
            ("SG24AB2JHM", "f24f1629-3461-4a57-8807-8f7c9964d652"),
        )

    def test_find_p8_accepts_metadata_rich_name(self):
        with tempfile.TemporaryDirectory() as directory:
            workspace = Path(directory)
            creds = workspace / "creds"
            creds.mkdir()
            key = creds / (
                "AE2(key_id_SG24AB2JHM_issuer_"
                "f24f1629-3461-4a57-8807-8f7c9964d652_vendor_id_92561414).p8"
            )
            key.write_text("private-key-placeholder")

            self.assertEqual(
                find_p8(workspace),
                (key, "SG24AB2JHM", "f24f1629-3461-4a57-8807-8f7c9964d652"),
            )


if __name__ == "__main__":
    unittest.main()
