jolly has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43276?usp=email )
Change subject: IPAd: A test to verify PSMO forwarding ......................................................................
IPAd: A test to verify PSMO forwarding
Related: SYS#8101 Change-Id: I38cccc34456eb7654b15582d952b6a1957305a74 --- M ipad/IPAd_Tests.ttcn M library/euicc/RSPDefinitions_Templates.ttcn M library/euicc/SGP32Definitions_Templates.ttcn M library/euicc/SGP32Definitions_Types.ttcn 4 files changed, 83 insertions(+), 16 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/76/43276/1
diff --git a/ipad/IPAd_Tests.ttcn b/ipad/IPAd_Tests.ttcn index dc299d0..3bbc95f 100644 --- a/ipad/IPAd_Tests.ttcn +++ b/ipad/IPAd_Tests.ttcn @@ -942,6 +942,53 @@ setverdict(pass); }
+/* A testcase to test the forwarding of a PSMO and the expected otherSignedNotification */ +private function f_TC_euiccPackageRequest_PSMO(charstring id) runs on IPAd_ConnHdlr { + template (value) EuiccPackage euiccPackage := ts_euiccPackage_setFallbackAttribute; + template (value) EuiccPackageSigned euiccPackageSigned := ts_euiccPackageSigned(euiccPackage); + template (value) EuiccPackageRequest euiccPackageRequest := ts_euiccPackageRequest(euiccPackageSigned); + template (value) OtherSignedNotification otherSignedNotification := ts_otherSignedNotification(euiccCertificate := ts_cert_eum_nist, + eumCertificate := ts_cert_eum_nist); + + f_exec_ipad(); + f_es10x_init(); + f_http_register(); + + /* IPAd requests a package, we tell it to execute an euiccPackageRequest */ + f_esipa_transceive(valueof(ts_getEimPackageResponse_euiccPkgReq(euiccPackageRequest)), tr_getEimPackageRequest); + + /* Send a PSMO, so that we will expect otherSignedNotification afterwards */ + f_vpcd_transceive(enc_EuiccPackageResult(valueof(ts_euiccPackageResult)), + enc_EuiccPackageRequest(valueof(euiccPackageRequest))); + + /* Expect otherSignedNotification */ + f_vpcd_transceive(enc_RetrieveNotificationsListResponse(valueof(ts_retrieveNotificationsListResponse_other(otherSignedNotification)))); + + /* IPAd will acknowledge */ + f_esipa_transceive(valueof(ts_provideEimPackageResultResponse_eimAck()), ?); + f_vpcd_transceive(enc_NotificationSentResponse(valueof(ts_notificationSentResponse))); + + /* IPAd will poll again. */ + f_terminate_poll_cycle(); + + /* Wait some time until the the last HTTP response is actually delivered */ + f_sleep(2.0); + + f_es10x_close(); + f_stop_ipad(); + + setverdict(pass); +} +testcase TC_euiccPackageRequest_PSMO() runs on MTC_CT { + var charstring id := testcasename(); + var IPAd_ConnHdlrPars pars := f_init_pars(); + var IPAd_ConnHdlr vc_conn; + f_init(id); + vc_conn := f_start_handler(refers(f_TC_euiccPackageRequest_PSMO), pars); + vc_conn.done; + setverdict(pass); +} + control { execute ( TC_proc_indirect_prfle_dwnld() ); execute ( TC_proc_euicc_pkg_dwnld_exec() ); @@ -955,6 +1002,7 @@ execute ( TC_func_get_conn_params() ); execute ( TC_func_get_conn_params_error() ); execute ( TC_set_device_capabilities() ); + execute ( TC_euiccPackageRequest_PSMO() ); }
} diff --git a/library/euicc/RSPDefinitions_Templates.ttcn b/library/euicc/RSPDefinitions_Templates.ttcn index b7ea50c..b940453 100644 --- a/library/euicc/RSPDefinitions_Templates.ttcn +++ b/library/euicc/RSPDefinitions_Templates.ttcn @@ -577,6 +577,14 @@ } } template (value) RetrieveNotificationsListResponse +ts_retrieveNotificationsListResponse_other(template (value) OtherSignedNotification otherSignedNotification) := { + notificationList := { + { + otherSignedNotification := otherSignedNotification + } + } +} +template (value) RetrieveNotificationsListResponse ts_retrieveNotificationsListResponse_empty := { notificationList := { } diff --git a/library/euicc/SGP32Definitions_Templates.ttcn b/library/euicc/SGP32Definitions_Templates.ttcn index e431313..839df9c 100644 --- a/library/euicc/SGP32Definitions_Templates.ttcn +++ b/library/euicc/SGP32Definitions_Templates.ttcn @@ -661,26 +661,32 @@ }
/* GSMA SGP.32, section 6.3.2.6 */ +template (present) EuiccPackageSigned +tr_euiccPackageSigned(template (present) EuiccPackage euiccPackage := tr_euiccPackage_enablePsmo) := { + eimId := ?, + eidValue := ?, + counterValue := ?, + eimTransactionId := *, + euiccPackage := euiccPackage +} + +template (value) EuiccPackageSigned +ts_euiccPackageSigned(template (value) EuiccPackage euiccPackage := ts_euiccPackage_enablePsmo) := { + eimId := "myEim", + eidValue := '00112233445566778899AABBCCDDEEFF'O, + counterValue := 123, + eimTransactionId := omit, + euiccPackage := euiccPackage +} + template (present) EuiccPackageRequest -tr_euiccPackageRequest(template (present) EuiccPackage euiccPackage := tr_euiccPackage_enablePsmo) := { - euiccPackageSigned := { - eimId := ?, - eidValue := ?, - counterValue := ?, - eimTransactionId := *, - euiccPackage := euiccPackage - }, +tr_euiccPackageRequest(template (present) EuiccPackageSigned euiccPackageSigned := tr_euiccPackageSigned) := { + euiccPackageSigned := euiccPackageSigned, eimSignature := ? } template (value) EuiccPackageRequest -ts_euiccPackageRequest(template (value) EuiccPackage euiccPackage := ts_euiccPackage_enablePsmo) := { - euiccPackageSigned := { - eimId := "myEim", - eidValue := '00112233445566778899AABBCCDDEEFF'O, - counterValue := 123, - eimTransactionId := omit, - euiccPackage := euiccPackage - }, +ts_euiccPackageRequest(template (value) EuiccPackageSigned euiccPackageSigned := ts_euiccPackageSigned) := { + euiccPackageSigned := euiccPackageSigned, eimSignature := '5252525252525252525252525252525252525252525252525252525252525252 5353535353535353535353535353535353535353535353535353535353535353'O } diff --git a/library/euicc/SGP32Definitions_Types.ttcn b/library/euicc/SGP32Definitions_Types.ttcn index 82f908f..17f1c72 100644 --- a/library/euicc/SGP32Definitions_Types.ttcn +++ b/library/euicc/SGP32Definitions_Types.ttcn @@ -98,4 +98,9 @@ external function enc_GetConnectivityParametersResponse(in GetConnectivityParametersResponse msg) return octetstring with { extension "prototype(convert) encode(BER:BER_ENCODE_DER)" };
+external function dec_EuiccPackageRequest(in octetstring stream) return EuiccPackageRequest +with { extension "prototype(convert) decode(BER:BER_ACCEPT_ALL)" }; +external function enc_EuiccPackageRequest(in EuiccPackageRequest msg) return octetstring +with { extension "prototype(convert) encode(BER:BER_ENCODE_DER)" }; + }