MME_Tests: add new testcase TC_s1ap_tau_unknown_guti
A tracking area update that contains an OldGUTI (TMSI) that is unknown
to the MME should be rejected.
Related: OS#5760
Change-Id: I9306fea69ac930b9642528e2fd32a7091147081e
diff --git a/mme/MME_Tests.ttcn b/mme/MME_Tests.ttcn
index 2db5b01..104c3d2 100644
--- a/mme/MME_Tests.ttcn
+++ b/mme/MME_Tests.ttcn
@@ -964,11 +964,60 @@
}
}
+/* Tracking area update with a GUTI (TMSI) that is unknown to the MME. The MME is expected to reject this TAU
+ * request. */
+private function f_TC_tau_unknown_guti(ConnHdlrPars pars) runs on ConnHdlr {
+
+ f_init_handler(pars);
+ var template (value) EPS_MobileIdentityV mi := ts_NAS_MobileId_IMSI(pars.ue_pars.imsi);
+ var template (value) S1AP_PDU tx;
+ var template (value) PDU_NAS_EPS nas_tau;
+ timer T := 5.0;
+
+ var hexstring mcc_mnc := f_convert_plmn(g_pars.enb_pars[g_pars.mme_idx].global_enb_id.pLMNidentity);
+ var EPS_MobileIdentityLV old_guti := valueof(ts_EPS_MobileId_GUTI(mcc_mnc, '0001'O, '01'O, 'AABBCCDD'O));
+ nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti);
+
+ tx := ts_S1AP_InitialUE(p_eNB_value := 0, p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)),
+ p_tAI := ts_enb_S1AP_TAI(g_pars.enb_pars[g_pars.mme_idx]),
+ p_eUTRAN_CGI := ts_enb_S1AP_CGI(g_pars.enb_pars[g_pars.mme_idx]),
+ p_rrcCause := mo_Signalling);
+
+ S1AP.send(tx);
+
+ T.start;
+ alt {
+ [] S1AP.receive(tr_PDU_NAS_EPS_TrackingAreaUpdateReject) {
+ setverdict(pass);
+ }
+ [] S1AP.receive {
+ setverdict(fail, "unexpected S1AP message from MME");
+ }
+ [] T.timeout {
+ setverdict(fail, "no message from MME");
+ }
+ }
+
+}
+testcase TC_s1ap_tau_unknown_guti() runs on MTC_CT {
+ var charstring id := testcasename();
+
+ f_init_diameter(id);
+ f_init_s1ap(id, 4);
+ f_s1ap_setup(0);
+
+ var ConnHdlrPars pars := f_init_pars(ue_idx := 0);
+ var ConnHdlr vc_conn;
+ vc_conn := f_start_handler_with_pars(refers(f_TC_tau_unknown_guti), pars);
+ vc_conn.done;
+}
+
control {
execute( TC_s1ap_setup_wrong_plmn() );
execute( TC_s1ap_setup_wrong_tac() );
execute( TC_s1ap_setup() );
execute( TC_s1ap_attach() );
+ execute( TC_s1ap_tau_unknown_guti() );
execute( TC_gn_echo_request() );
execute( TC_RIM_RAN_INF() );
execute( TC_s1ap_reset() );