hss: Test Operator-Determined-Barring feature

Related: SYS#6588
Change-Id: I8deea9e284447f8991bdeced982c14fae2f211c5
diff --git a/hss/HSS_Tests.ttcn b/hss/HSS_Tests.ttcn
index 88a82a4..bd493c4 100644
--- a/hss/HSS_Tests.ttcn
+++ b/hss/HSS_Tests.ttcn
@@ -22,7 +22,8 @@
 	charstring mp_diam_dest_host := "hss.localdomain";
 	SubscriberConfigs subscribers := {
 		/* Existing subscriber, ULA returns SERVICE_GRANTED */
-		'001010000000000'H
+		'001010000000000'H,
+		'001010000000001'H
 	};
 }
 
@@ -183,9 +184,8 @@
 }
 
 /* ULR + ULA against HSS */
-private function f_dia_ulr_ula() runs on Cli_Session_CT {
+private function f_dia_ulr_ula(template (present) AVP_list ula_sub_data) runs on Cli_Session_CT {
 	var octetstring sess_id := char2oct("foobar");
-	var template (present) AVP_list sub_data;
 	var PDU_DIAMETER rx_dia;
 	var UINT32 hbh_id := int2oct(g_pars.s6a_next_hbh_id, 4);
 	var UINT32 ete_id := int2oct(g_pars.s6a_next_ete_id, 4);
@@ -202,19 +202,8 @@
 	g_pars.s6a_next_hbh_id := g_pars.s6a_next_hbh_id + 1;
 	g_pars.s6a_next_ete_id := g_pars.s6a_next_ete_id + 1;
 
-	sub_data := superset(
-		tr_AVP_3GPP_SubscriberStatus(SERVICE_GRANTED),
-		tr_AVP_3GPP_SubscrRauTauTmr(?),
-		tr_AVP_3GPP_AMBR(?, ?),
-		tr_AVP_3GPP_ApnConfigProfile(superset(
-			tr_AVP_3GPP_ContextId(?),
-			tr_AVP_3GPP_AllApnConfigsIncl,
-			tr_AVP_3GPP_ApnConfig(?, ?, ?)
-			))
-		);
-
 	alt {
-	[] S6a.receive(tr_DIA_ULA(sub_data, sess_id, ?, ?, hbh_id, ete_id)) -> value rx_dia {
+	[] S6a.receive(tr_DIA_ULA(ula_sub_data, sess_id, ?, ?, hbh_id, ete_id)) -> value rx_dia {
 		setverdict(pass);
 		}
 	[] S6a.receive(PDU_DIAMETER:?) -> value rx_dia {
@@ -226,7 +215,18 @@
 
 /* create a session, expect it to succeed */
 private function f_TC_ulr_ula() runs on Cli_Session_CT {
-	f_dia_ulr_ula();
+	var template (present) AVP_list sub_data := superset(
+		tr_AVP_3GPP_SubscriberStatus(SERVICE_GRANTED),
+		tr_AVP_3GPP_SubscrRauTauTmr(?),
+		tr_AVP_3GPP_AMBR(?, ?),
+		tr_AVP_3GPP_ApnConfigProfile(superset(
+			tr_AVP_3GPP_ContextId(?),
+			tr_AVP_3GPP_AllApnConfigsIncl,
+			tr_AVP_3GPP_ApnConfig(?, ?, ?)
+		))
+	);
+
+	f_dia_ulr_ula(sub_data);
 	setverdict(pass);
 }
 testcase TC_ulr_ula() runs on MTC_CT {
@@ -237,9 +237,37 @@
 	vc_conn.done;
 }
 
+/* Same as TC_ulr_ula, but done on a subscriber configured with
+Subscriber-Status=1 (OPERATOR_DETERMINED_BARRING) and
+Operator-Determined-Barring=7. */
+private function f_TC_ulr_ula_subscr_op_det_barring_7() runs on Cli_Session_CT {
+	var template (present) AVP_list sub_data := superset(
+		tr_AVP_3GPP_SubscriberStatus(OPERATOR_DETERMINED_BARRING),
+		tr_AVP_3GPP_OperatorDeterminedBarring(7),
+		tr_AVP_3GPP_SubscrRauTauTmr(?),
+		tr_AVP_3GPP_AMBR(?, ?),
+		tr_AVP_3GPP_ApnConfigProfile(superset(
+			tr_AVP_3GPP_ContextId(?),
+			tr_AVP_3GPP_AllApnConfigsIncl,
+			tr_AVP_3GPP_ApnConfig(?, ?, ?)
+		))
+	);
+
+	f_dia_ulr_ula(sub_data);
+	setverdict(pass);
+}
+testcase TC_ulr_ula_subscr_op_det_barring_7() runs on MTC_CT {
+	var Cli_Session_CT vc_conn;
+	var SessionPars pars := valueof(t_SessionPars(subscribers[1]));
+	f_init();
+	vc_conn := f_start_handler(refers(f_TC_ulr_ula_subscr_op_det_barring_7), pars);
+	vc_conn.done;
+}
+
 
 control {
 	execute( TC_ulr_ula() );
+	execute( TC_ulr_ula_subscr_op_det_barring_7() );
 }