From b32b9318043ec149fc05831df5f6ab9611ca590e Mon Sep 17 00:00:00 2001
From: axr <axr@SQC-X1Xtrm-axr.fokus.fraunhofer.de>
Date: Tue, 8 Oct 2019 17:48:45 +0200
Subject: [PATCH] initial ISP test case derived from TC_CSE_GEN_CRE_001_CSR

---
 LibOneM2M/OneM2M_Templates.ttcn      | 11 +++-
 LibOneM2M/OneM2M_TypesAndValues.ttcn |  1 +
 OneM2M_Testcases_CSE_Release_3.ttcn  | 76 ++++++++++++++++++++++++++++
 3 files changed, 87 insertions(+), 1 deletion(-)

diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 5ded4dc..23db167 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -1362,7 +1362,16 @@ module OneM2M_Templates {
 				resourceType := int19,
 				primitiveContent := {serviceSubscribedAppRule := m_contentCreateServiceSubscribedAppRuleBase}
 			};
-       	
+        	
+			/**
+			 * @desc Base CREATE request primitive for ServiceSubscribedNode Resource
+			 */
+			template (value) RequestPrimitive m_createServiceSubscribedNode modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createServiceSubscribedNode",
+				resourceType := int20,
+				primitiveContent := {serviceSubscribedNode := m_contentServiceSubscribedNode}
+			};
+			       	
 			/**
 			 * @desc Base CREATE request primitive for Subscription resource
 			 */
diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn
index 9aaf488..ba3f641 100644
--- a/LibOneM2M/OneM2M_TypesAndValues.ttcn
+++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn
@@ -4020,6 +4020,7 @@ group OtherTypes {
 	StatsCollect_optional statsCollect,
 	M2mServiceSubscriptionProfile_optional m2mServiceSubscriptionProfile,
 	ServiceSubscribedAppRule_optional serviceSubscribedAppRule,
+	ServiceSubscribedNode_optional serviceSubscribedNode,
 	Subscription_optional subscription,
 	SemanticDescriptor_optional semanticDescriptor,
 	TimeSeries_optional timeSeries,
diff --git a/OneM2M_Testcases_CSE_Release_3.ttcn b/OneM2M_Testcases_CSE_Release_3.ttcn
index 5aba1ab..ff74f1f 100644
--- a/OneM2M_Testcases_CSE_Release_3.ttcn
+++ b/OneM2M_Testcases_CSE_Release_3.ttcn
@@ -12776,6 +12776,82 @@ module OneM2M_Testcases_CSE_Release_3 {
 	
 		group InitialServiceProvisioning{
 
+			/**
+			 * @desc Check that the IUT accepts the creation of a serviceSubscribedNode resource 
+			 * 
+			 */
+			testcase TC_CSE_ISP_001() runs on Tester system CseSystem {
+				// Local variables
+						                        
+				var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+                        
+				v_ae1.start(f_CSE_ISP_001(e_cseRelative));
+				v_ae1.done;
+			}
+
+//			function f_CSE_GEN_CRE_001(in PrimitiveScope p_primitiveScope) runs on AeSimu system CseSystem {
+			function f_CSE_ISP_001(in PrimitiveScope p_primitiveScope) runs on AeSimu system CseSystem {
+			
+				// Local variables
+				var RequestPrimitive v_request;
+				var integer v_aeIndex := -1;
+				var integer v_resourceIndex := -1;
+				var AddressingMethod v_addressingMethod;
+				var PrimitiveScope v_primitiveScope;
+									   
+				// Test control
+				if(not(PICS_UNSTRUCTURED_CSE_RELATIVE_RESOURCE_ID_FORMAT)) {
+					setverdict(inconc, __SCOPE__ & ": Unstructured-CSE-Relative-Resource-ID format support is required to run this test case");
+					stop;
+				}
+			
+				// Test component configuration
+				f_cf01Up();
+			
+				// Test adapter configuration
+			
+				// Preamble
+				v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+			
+//				v_resourceIndex := f_cse_createResource(int3, m_createContainerBase, v_aeIndex); 
+				v_resourceIndex := f_cse_createResource(int20, m_createServiceSubscribedNode, v_aeIndex); 
+			
+				// Test Body
+				//Force usage of Non-Hierarchical addressing method
+				v_addressingMethod := e_nonHierarchical;
+				v_primitiveScope := p_primitiveScope;
+//				v_request := f_getCreateRequestPrimitive(int3, m_createContainerBase, v_resourceIndex);
+				v_request := f_getCreateRequestPrimitive(int20, m_createServiceSubscribedNode, v_resourceIndex);
+				v_request.to_ := f_getResourceAddress(v_resourceIndex, v_addressingMethod, v_primitiveScope);
+				
+				f_send(e_mcaPort, m_request(v_request));
+				
+				tc_ac.start;
+				alt {
+					[] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) {
+						tc_ac.stop;
+						setverdict(pass, __SCOPE__ & ": ServiceSubscribedNode resource created using non-hierarchical addressing method");
+					}
+					[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
+						tc_ac.stop;
+						setverdict(fail, __SCOPE__ & ": Wrong response status code in the response");
+					}
+					[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
+						tc_ac.stop;
+						setverdict(fail, __SCOPE__ & ": Error while creating ServiceSubscribedNode resource using non-hierarchical addressing method");
+					}
+					[] tc_ac.timeout {
+						setverdict(fail, __SCOPE__ & ": No answer while creating resource");
+					}
+				}	
+							
+				// Postamble
+				f_cse_postamble_deleteResources();
+			
+				// Tear down
+				f_cf01Down();
+			
+			}//end f_CSE_ISP_001				
 
 
 		}// end group InitialServiceProvisioning
-- 
GitLab