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
diff --git a/pgw/PGW_Tests.ttcn b/pgw/PGW_Tests.ttcn
index 997c42d..3c4bef2 100644
--- a/pgw/PGW_Tests.ttcn
+++ b/pgw/PGW_Tests.ttcn
@@ -1079,6 +1079,34 @@
 	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 @@
 	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() );
 }