diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2024-03-18 20:53:47 +0100 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2024-03-19 15:56:02 +0100 |
commit | 0a228eae766da47a006c65811623c7dfd52e7931 (patch) | |
tree | 9a8e1f8e67f34db3f58cb7b504c1c1579cd8a5bd | |
parent | 06fba9c8a78a8e55feb313b34deb8b8b4c86fe7b (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.ttcn | 29 | ||||
-rw-r--r-- | pgw/expected-results.xml | 1 |
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> |