openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
1.9 KiB

import pytest
import time
from openpilot.system.hardware import TICI
from openpilot.system.hardware.tici.esim import LPA2, LPAProfileNotFoundError
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()
def ensure_profile_deleted(self):
lpa = LPA2()
try:
lpa.delete_profile(self.TEST_ICCID)
except LPAProfileNotFoundError:
pass
assert not self._profile_exists(self.TEST_ICCID, self.TEST_NICKNAME)
def setup_method(self):
self.ensure_profile_deleted()
# clear out any pending notifications
lpa = LPA2()
lpa.process_notifications()
assert len(lpa.list_notifications()) == 0
def teardown_method(self):
self.ensure_profile_deleted()
def test_list_profiles(self):
lpa = LPA2()
profiles = lpa.list_profiles()
assert profiles is not None
def test_download_profile(self):
lpa = LPA2()
try:
lpa.delete_profile(self.TEST_ICCID)
except Exception as e:
print(e)
lpa.download_profile(self.TEST_ACTIVATION_CODE, self.TEST_NICKNAME)
assert self._profile_exists(self.TEST_ICCID, self.TEST_NICKNAME)
self.enable_profile(lpa)
self.disable_profile(lpa)
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):
lpa.disable_profile(self.TEST_ICCID)
current = lpa.get_active_profile()
assert current is None
def _profile_exists(self, iccid: str, nickname: str) -> bool:
lpa = LPA2()
profiles = lpa.list_profiles()
return any(p['iccid'] == iccid and p['nickname'] == nickname for p in profiles)