aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2024-03-18 20:53:47 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2024-03-19 15:56:02 +0100
commit0a228eae766da47a006c65811623c7dfd52e7931 (patch)
tree9a8e1f8e67f34db3f58cb7b504c1c1579cd8a5bd
parent06fba9c8a78a8e55feb313b34deb8b8b4c86fe7b (diff)
pgw: Introduce test TC_gy_ccr_update_rejected
This test currently fails because open5gs-smfd is not triggering the tear down in smf_gy_handle_cca_update_request(). Related: SYS#6845 Change-Id: Ie58ae2a5e870b183fa1c56c90c94f5eee56386e0
-rw-r--r--pgw/PGW_Tests.ttcn29
-rw-r--r--pgw/expected-results.xml1
2 files changed, 30 insertions, 0 deletions
diff --git a/pgw/PGW_Tests.ttcn b/pgw/PGW_Tests.ttcn
index 997c42d6..3c4bef23 100644
--- a/pgw/PGW_Tests.ttcn
+++ b/pgw/PGW_Tests.ttcn
@@ -1079,6 +1079,34 @@ testcase TC_gy_charging_cc_time() runs on PGW_Test_CT {
vc_conn.done;
}
+/* Test Gy CCR rejected with CCA Result-Code DIAMETER_AUTHORIZATION_REJECTED (5003) */
+private function f_TC_gy_ccr_update_rejected() runs on PGW_Session_CT {
+ var default d;
+
+ f_s5s8_create_session();
+
+ /* We should receive an update even if no traffic is sent: */
+ as_DIA_Gy_CCR(UPDATE_REQUEST);
+
+ /* Answer next CCR[Update] with CCA Reject: */
+ g_pars.gy.cca_res_code := DIAMETER_AUTHORIZATION_REJECTED;
+ as_DIA_Gy_CCR(UPDATE_REQUEST);
+
+ /* Expect PGW to tear down the connection as a result: */
+ as_DIA_Gx_CCR(TERMINATION_REQUEST);
+ as_DIA_Gy_CCR(TERMINATION_REQUEST);
+
+ setverdict(pass);
+}
+testcase TC_gy_ccr_update_rejected() runs on PGW_Test_CT {
+ var PGW_Session_CT vc_conn;
+ var SessionPars pars := valueof(t_SessionPars('001010123456789'H, "tun23"));
+ pars.gy.validity_time := 3; /* Grant access for 3 seconds, needs to be re-validated afterwards */
+ f_init();
+ vc_conn := f_start_handler(refers(f_TC_gy_ccr_update_rejected), pars);
+ vc_conn.done;
+}
+
/* create a session, expect it to succeed */
private function f_TC_s2b_createSession_v4_noapco() runs on PGW_Session_CT {
var template (omit) APCO apco := omit;
@@ -1125,6 +1153,7 @@ control {
execute( TC_createSession_deleteSession() );
execute( TC_deleteSession_unknown() );
execute( TC_gy_charging_cc_time() );
+ execute( TC_gy_ccr_update_rejected() );
execute( TC_s2b_createSession_v4_noapco() );
execute( TC_s2b_createSession_v4_apco() );
}
diff --git a/pgw/expected-results.xml b/pgw/expected-results.xml
index 20c073bf..913f669f 100644
--- a/pgw/expected-results.xml
+++ b/pgw/expected-results.xml
@@ -7,6 +7,7 @@
<testcase classname='PGW_Tests' name='TC_createSession_deleteSession' time='MASKED'/>
<testcase classname='PGW_Tests' name='TC_deleteSession_unknown' time='MASKED'/>
<testcase classname='PGW_Tests' name='TC_gy_charging_cc_time' time='MASKED'/>
+ <testcase classname='PGW_Tests' name='TC_gy_ccr_update_rejected' time='MASKED'/>
<testcase classname='PGW_Tests' name='TC_s2b_createSession_v4_noapco' time='MASKED'/>
<testcase classname='PGW_Tests' name='TC_s2b_createSession_v4_apco' time='MASKED'/>
</testsuite>