|
|
|
@ -3,61 +3,59 @@ import pytest |
|
|
|
|
from openpilot.system.hardware import TICI |
|
|
|
|
from openpilot.system.hardware.tici.esim import LPA2, LPAProfileNotFoundError |
|
|
|
|
|
|
|
|
|
TEST_ACTIVATION_CODE = 'LPA:1$rsp.truphone.com$QRF-BETTERROAMING-PMRDGIR2EARDEIT5' |
|
|
|
|
TEST_ICCID = '8944476500001944011' |
|
|
|
|
TEST_NICKNAME = 'test_profile' |
|
|
|
|
|
|
|
|
|
def cleanup(): |
|
|
|
|
lpa = LPA2() |
|
|
|
|
try: |
|
|
|
|
lpa.delete_profile(TEST_ICCID) |
|
|
|
|
except LPAProfileNotFoundError: |
|
|
|
|
pass |
|
|
|
|
assert lpa.get_active_profile() is None |
|
|
|
|
lpa.process_notifications() |
|
|
|
|
assert len(lpa.list_notifications()) == 0 |
|
|
|
|
|
|
|
|
|
class TestEsim: |
|
|
|
|
""" |
|
|
|
|
https://euicc-manual.osmocom.org/docs/rsp/known-test-profile |
|
|
|
|
""" |
|
|
|
|
TEST_ACTIVATION_CODE = 'LPA:1$rsp.truphone.com$QRF-BETTERROAMING-PMRDGIR2EARDEIT5' |
|
|
|
|
TEST_ICCID = '8944476500001944011' |
|
|
|
|
TEST_NICKNAME = 'test_profile' |
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
|
def setup_class(cls): |
|
|
|
|
if not TICI: |
|
|
|
|
pytest.skip() |
|
|
|
|
return |
|
|
|
|
cleanup() |
|
|
|
|
|
|
|
|
|
def setup_method(self): |
|
|
|
|
self._cleanup() |
|
|
|
|
|
|
|
|
|
def teardown_method(self): |
|
|
|
|
self._cleanup() |
|
|
|
|
def teardown_class(self): |
|
|
|
|
cleanup() |
|
|
|
|
|
|
|
|
|
def test_list_profiles(self): |
|
|
|
|
lpa = LPA2() |
|
|
|
|
profiles = lpa.list_profiles() |
|
|
|
|
assert profiles is not None |
|
|
|
|
|
|
|
|
|
def test_download_profile(self): |
|
|
|
|
def test_download_enable_disable_profile(self): |
|
|
|
|
lpa = LPA2() |
|
|
|
|
lpa.download_profile(self.TEST_ACTIVATION_CODE, self.TEST_NICKNAME) |
|
|
|
|
assert self._profile_exists(self.TEST_ICCID, self.TEST_NICKNAME) |
|
|
|
|
assert self._profile_exists(lpa, self.TEST_ICCID, self.TEST_NICKNAME) |
|
|
|
|
|
|
|
|
|
self.enable_profile(lpa) |
|
|
|
|
self.disable_profile(lpa) |
|
|
|
|
self._enable_profile(lpa) |
|
|
|
|
self._disable_profile(lpa) |
|
|
|
|
|
|
|
|
|
def enable_profile(self, lpa: LPA2): |
|
|
|
|
def _enable_profile(self, lpa: LPA2): |
|
|
|
|
lpa.enable_profile(self.TEST_ICCID) |
|
|
|
|
current = lpa.get_active_profile() |
|
|
|
|
assert current is not None |
|
|
|
|
assert current['iccid'] == self.TEST_ICCID |
|
|
|
|
|
|
|
|
|
def disable_profile(self, lpa: LPA2): |
|
|
|
|
def _disable_profile(self, lpa: LPA2): |
|
|
|
|
lpa.disable_profile(self.TEST_ICCID) |
|
|
|
|
current = lpa.get_active_profile() |
|
|
|
|
assert current is None |
|
|
|
|
|
|
|
|
|
def _cleanup(self): |
|
|
|
|
lpa = LPA2() |
|
|
|
|
try: |
|
|
|
|
lpa.delete_profile(self.TEST_ICCID) |
|
|
|
|
except LPAProfileNotFoundError: |
|
|
|
|
pass |
|
|
|
|
assert not self._profile_exists(self.TEST_ICCID, self.TEST_NICKNAME) |
|
|
|
|
lpa.process_notifications() |
|
|
|
|
assert len(lpa.list_notifications()) == 0 |
|
|
|
|
|
|
|
|
|
def _profile_exists(self, iccid: str, nickname: str) -> bool: |
|
|
|
|
lpa = LPA2() |
|
|
|
|
def _profile_exists(self, lpa: LPA2, iccid: str, nickname: str) -> bool: |
|
|
|
|
profiles = lpa.list_profiles() |
|
|
|
|
return any(p['iccid'] == iccid and p['nickname'] == nickname for p in profiles) |
|
|
|
|