Files
pysim/tests/unittests/xo/test_configurable_parameters
T
Neels Hofmeyr 3974e96933 add test_configurable_parameters.py
Add ConfigurableParameterTest, which applies each parameter to a real
UPP DER template and reads it back, comparing results against a stored
expected-output snapshot (xo/test_configurable_parameters).

Add TestValidateVal covering validate_val() for Iccid, Imsi, Pin1, Puk1
and K, testing both valid inputs and invalid ones expected to raise
ValueError.

Add TestEnumParam covering the EnumParam methods (validate_val,
map_name_to_val, map_val_to_name, name_normalize, clean_name_str) using
AlgorithmID as the concrete subclass, including fuzzy name matching.

Also add get_value_from_pes() to ConfigurableParameter as a convenience
wrapper around get_values_from_pes() that asserts all returned values
are identical and returns the single result.

Change-Id: Ia55f0d11f8197ca15a948a83a34b3488acf1a0b4
Co-authored-by: Vadim Yanitskiy <vyanitskiy@sysmocom.de>
Jenkins: skip-card-test
2026-06-21 03:30:02 +07:00

337 lines
14 KiB
Plaintext

ok: TS48v5_SAIP2.1A_NoBERTLV.der Imsi(val= '123456':str)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Imsi(val= 123456:int)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Imsi(val= '123456789012345':str)
clean_val= '123456789012345':str
read_back_val= {'IMSI': '123456789012345', 'IMSI-ACC': '0020'}:{str, hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Imsi(val= 123456789012345:int)
clean_val= '123456789012345':str
read_back_val= {'IMSI': '123456789012345', 'IMSI-ACC': '0020'}:{str, hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Puk1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Puk2(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK2': '12345678'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Pin1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'PIN1': '1234'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Pin1(val= '123456':str)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'PIN1': '123456'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Pin1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Adm1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'ADM1': '1234'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Adm1(val= '123456':str)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'ADM1': '123456'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Adm1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'ADM1': '12345678'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der AlgorithmID(val= 'Milenage':str)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der AlgorithmID(val= 'TUAK':str)
clean_val= 2:int
read_back_val= {'Algorithm': 'TUAK'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der AlgorithmID(val= 'usim-test':str)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim_test'}:{str}
ok: TS48v5_SAIP2.1A_NoBERTLV.der K(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytearray)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Opc(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1A_NoBERTLV.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytearray)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Imsi(val= '123456':str)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Imsi(val= 123456:int)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Imsi(val= '123456789012345':str)
clean_val= '123456789012345':str
read_back_val= {'IMSI': '123456789012345', 'IMSI-ACC': '0020'}:{str, hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Imsi(val= 123456789012345:int)
clean_val= '123456789012345':str
read_back_val= {'IMSI': '123456789012345', 'IMSI-ACC': '0020'}:{str, hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Puk1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Puk2(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK2': '12345678'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Pin1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'PIN1': '1234'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Pin1(val= '123456':str)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'PIN1': '123456'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Pin1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Adm1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'ADM1': '1234'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Adm1(val= '123456':str)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'ADM1': '123456'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Adm1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'ADM1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der AlgorithmID(val= 'Milenage':str)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der AlgorithmID(val= 'TUAK':str)
clean_val= 2:int
read_back_val= {'Algorithm': 'TUAK'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der AlgorithmID(val= 'usim-test':str)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim_test'}:{str}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der K(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytearray)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Opc(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_BERTLV_SUCI.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytearray)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Imsi(val= '123456':str)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Imsi(val= 123456:int)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Imsi(val= '123456789012345':str)
clean_val= '123456789012345':str
read_back_val= {'IMSI': '123456789012345', 'IMSI-ACC': '0020'}:{str, hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Imsi(val= 123456789012345:int)
clean_val= '123456789012345':str
read_back_val= {'IMSI': '123456789012345', 'IMSI-ACC': '0020'}:{str, hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Puk1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Puk2(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK2': '12345678'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Pin1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'PIN1': '1234'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Pin1(val= '123456':str)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'PIN1': '123456'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Pin1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Adm1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'ADM1': '1234'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Adm1(val= '123456':str)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'ADM1': '123456'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Adm1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'ADM1': '12345678'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der AlgorithmID(val= 'Milenage':str)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der AlgorithmID(val= 'TUAK':str)
clean_val= 2:int
read_back_val= {'Algorithm': 'TUAK'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der AlgorithmID(val= 'usim-test':str)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim_test'}:{str}
ok: TS48v5_SAIP2.1B_NoBERTLV.der K(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytearray)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Opc(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.1B_NoBERTLV.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytearray)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der Imsi(val= '123456':str)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der Imsi(val= 123456:int)
clean_val= '123456':str
read_back_val= {'IMSI': '123456', 'IMSI-ACC': '0040'}:{str, hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der Imsi(val= '123456789012345':str)
clean_val= '123456789012345':str
read_back_val= {'IMSI': '123456789012345', 'IMSI-ACC': '0020'}:{str, hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der Imsi(val= 123456789012345:int)
clean_val= '123456789012345':str
read_back_val= {'IMSI': '123456789012345', 'IMSI-ACC': '0020'}:{str, hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der Puk1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Puk2(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PUK2': '12345678'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Pin1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'PIN1': '1234'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Pin1(val= '123456':str)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'PIN1': '123456'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Pin1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'PIN1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Adm1(val= '1234':str)
clean_val= b'1234\xff\xff\xff\xff':bytearray
read_back_val= {'ADM1': '1234'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Adm1(val= '123456':str)
clean_val= b'123456\xff\xff':bytearray
read_back_val= {'ADM1': '123456'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der Adm1(val= '12345678':str)
clean_val= b'12345678':bytearray
read_back_val= {'ADM1': '12345678'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der AlgorithmID(val= 'Milenage':str)
clean_val= 1:int
read_back_val= {'Algorithm': 'Milenage'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der AlgorithmID(val= 'TUAK':str)
clean_val= 2:int
read_back_val= {'Algorithm': 'TUAK'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der AlgorithmID(val= 'usim-test':str)
clean_val= 3:int
read_back_val= {'Algorithm': 'usim_test'}:{str}
ok: TS48v5_SAIP2.3_NoBERTLV.der K(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der K(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytearray)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'K': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der Opc(val= '01020304050607080910111213141516':str)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}
ok: TS48v5_SAIP2.3_NoBERTLV.der Opc(val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytearray)
clean_val= b'\x01\x02\x03\x04\x05\x06\x07\x08\t\x10\x11\x12\x13\x14\x15\x16':bytes
read_back_val= {'OPc': '01020304050607080910111213141516'}:{hexstr}