1010import os
1111from collections import namedtuple
1212
13- TEST_KEYGEN = [b"OK\r \n " , b"%KEYGEN: \" MIIBCzCBrwIBADAvMS0wKwYDVQQDDCQ1MDM2Mzk1My0zMjM0LTQ3MjMtODBiOS0xNTAzZDg4MjcxYmYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ37lDghqs2kF2iiH8lYRDDxNMiziQRPPdw9Meb1iHfTEZNdlB1xZzMV-oK6i52p1GHYQszjoDzUAZF2zU2MTGGoB4wHAYJKoZIhvcNAQkOMQ8wDTALBgNVHQ8EBAMCA-gwDAYIKoZIzj0EAwIFAANJADBGAiEAzaMPi5NcWFYZBJGBMk0tU-TBoNDVlQUzhHWJzXKRTWsCIQCWYpYqjccA281F5Geb8SwOP3tnjS_ZbAXUgVWhTVNuvg.0oRDoQEmoQRBIVhM2dn3hQlQUDY5UzI0RyOAuRUD2IJxv0IYNFggTaa7Z9K-8bQPz3YG5o_h32quNr0FHEtnX5VpEZ-8gflQY8D67v4xx32mF0L3-mbuuVhAfY3TgibaimIVPaN1C3Sz_oWj6JPf8sEOV2XNBDUNCV3sD3WdNOjgv32-rLXAx_vBIvpk1DTCb3Y97zqFhhdKlw\" \r \n " ]
13+ TEST_KEYGEN_UUID = [b"OK\r \n " , b"%KEYGEN: \" MIIBCzCBrwIBADAvMS0wKwYDVQQDDCQ1MDM2Mzk1My0zMjM0LTQ3MjMtODBiOS0xNTAzZDg4MjcxYmYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ37lDghqs2kF2iiH8lYRDDxNMiziQRPPdw9Meb1iHfTEZNdlB1xZzMV-oK6i52p1GHYQszjoDzUAZF2zU2MTGGoB4wHAYJKoZIhvcNAQkOMQ8wDTALBgNVHQ8EBAMCA-gwDAYIKoZIzj0EAwIFAANJADBGAiEAzaMPi5NcWFYZBJGBMk0tU-TBoNDVlQUzhHWJzXKRTWsCIQCWYpYqjccA281F5Geb8SwOP3tnjS_ZbAXUgVWhTVNuvg.0oRDoQEmoQRBIVhM2dn3hQlQUDY5UzI0RyOAuRUD2IJxv0IYNFggTaa7Z9K-8bQPz3YG5o_h32quNr0FHEtnX5VpEZ-8gflQY8D67v4xx32mF0L3-mbuuVhAfY3TgibaimIVPaN1C3Sz_oWj6JPf8sEOV2XNBDUNCV3sD3WdNOjgv32-rLXAx_vBIvpk1DTCb3Y97zqFhhdKlw\" \r \n " ]
14+ TEST_KEYGEN_IMEI = [b"OK\r \n " , b"%KEYGEN: \" MIH4MIGeAgEAMB4xHDAaBgNVBAMME25yZi0zNTUwMjU5MzAwMDAwMDAwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATYRrWI0v6LJWciuTlscw8E1TcOBJoygkALKecquhe-fr_QT_tcjC2DgmDyX1cjTubp7n_mUaf5ZJ1s-Ke-ABBuoB4wHAYJKoZIhvcNAQkOMQ8wDTALBgNVHQ8EBAMCA-gwDAYIKoZIzj0EAwIFAANHADBEAiBDTS-I_ye8nJpB7vtO6FQWvnUhJnG6QsjRPo56nBFh2gIgPB5NW16dANAMmn0VLMBXGeRPTtoxOs5Ld1Z7JW46_8s.0oRDoQEmoQRBIVhM2dn3hQlQUDQ5VjA3RziADR8p4KD3v0IYNFggl3ygk__l-pZ9jtlsf0AyuFJlRaaEouhzYgau2zOcHwBQp2eEbVMiHVcHrE9R2670dlhA1a7jaKq3ALRx2h-h2TIkxxh82oyr4c4LqzraUecL8SFek-IbvEBfv30695FKOt3FXEk7y5G_JW3yaRQGczL3TQ\" \r \n " ]
1415TEST_CA_FILE = "tests/fixtures/test_ca.pem"
1516TEST_CA_KEY_FILE = "tests/fixtures/test_ca_prv.pem"
1617TEST_CGSN = [b"OK\r \n " , b"355025930000000\r \n " ]
@@ -21,10 +22,12 @@ def __init__(self, *args, **kwargs):
2122 self .response = []
2223 def write (self , data ):
2324 data_str = data .decode ('utf-8' )
24- if data_str .strip ().startswith ('AT%KEYGEN=52,2,0' ):
25- self .response = TEST_KEYGEN
25+ if data_str .strip () == ('AT%KEYGEN=52,2,0' ):
26+ self .response = TEST_KEYGEN_UUID .copy ()
27+ elif data_str .strip () == ('AT%KEYGEN=52,2,0,"CN=nrf-355025930000000"' ):
28+ self .response = TEST_KEYGEN_IMEI .copy ()
2629 elif data_str .strip () == "AT+CGSN" :
27- self .response = TEST_CGSN
30+ self .response = TEST_CGSN . copy ()
2831 elif data_str .strip () == "AT+CFUN=4" :
2932 self .response = [b"OK\r \n " ]
3033 elif data_str .strip () == "AT+CGMR" :
@@ -51,7 +54,7 @@ class TestDeviceCredentialsInstaller:
5154 def test_minimal_case (self , ser , select_device ):
5255 with TemporaryDirectory () as tmp_dir :
5356 csv_file = os .path .join (tmp_dir , 'onboard.csv' )
54- args = f"--port /not/a/real/device --cmd-type at --ca { TEST_CA_FILE } --ca-key { TEST_CA_KEY_FILE } --csv { csv_file } --term CRLF --sectag 52" .split ()
57+ args = f"--port /not/a/real/device --log-level debug -- cmd-type at --ca { TEST_CA_FILE } --ca-key { TEST_CA_KEY_FILE } --csv { csv_file } --term CRLF --sectag 52" .split ()
5558 # call DUT
5659 device_credentials_installer .main (args )
5760 # check that the file was created
@@ -65,3 +68,23 @@ def test_minimal_case(self, ser, select_device):
6568 assert fw_types == "APP|MODEM"
6669 assert cert_pem .startswith ("-----BEGIN CERTIFICATE-----" )
6770 assert cert_pem .endswith ("-----END CERTIFICATE-----" )
71+
72+ @patch ("nrfcredstore.comms.select_device" , return_value = (FakeSerialPort ("/not/a/real/device" ), "TEST_DEVICE" ))
73+ @patch ("nrfcredstore.comms.serial.Serial" , return_value = FakeSerial ())
74+ def test_nrf_prefix (self , ser , select_device ):
75+ with TemporaryDirectory () as tmp_dir :
76+ csv_file = os .path .join (tmp_dir , 'onboard.csv' )
77+ args = f"--port /not/a/real/device --log-level debug --id-imei --id-str nrf- --cmd-type at --ca { TEST_CA_FILE } --ca-key { TEST_CA_KEY_FILE } --csv { csv_file } --term CRLF --sectag 52" .split ()
78+ # call DUT
79+ device_credentials_installer .main (args )
80+ # check that the file was created
81+ assert os .path .exists (csv_file )
82+ # check that the file has the expected contents
83+ with open (csv_file , "r" ) as f :
84+ content = f .read ().strip ()
85+ device_id , sub_type , tags , fw_types , cert_pem = content .split ("," )
86+ cert_pem = cert_pem .replace ("\" " , "" ).strip ()
87+ assert device_id == "nrf-355025930000000"
88+ assert fw_types == "APP|MODEM"
89+ assert cert_pem .startswith ("-----BEGIN CERTIFICATE-----" )
90+ assert cert_pem .endswith ("-----END CERTIFICATE-----" )
0 commit comments