From 8b044b4d018260bff883f766e26c60f5fabb8206 Mon Sep 17 00:00:00 2001
From: reinaortega <miguelangel.reinaortega@etsi.org>
Date: Mon, 6 Apr 2020 09:53:18 +0200
Subject: [PATCH] Implemented new test cases TC_CSE_SEC_ACP_CRE_005 and
 TC_CSE_SEC_ACP_015

Signed-off-by: reinaortega <miguelangel.reinaortega@etsi.org>
---
 LibOneM2M/OneM2M_Functions.ttcn     |   4 +-
 OneM2M_PermutationFunctions.ttcn    |  64 ++++++++++++++
 OneM2M_Testcases_CSE_Release_3.ttcn | 124 ++++++++++++++++++++++++++++
 3 files changed, 190 insertions(+), 2 deletions(-)

diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index ccfc8c2..f1bde36 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -947,7 +947,7 @@ module OneM2M_Functions {
 			 * @desc Getting the address of the last resource saved in the vc_resourcesList
 			 * @param p_tester Given component
 			 */
-			function f_getLatestResourceAddress(in CseSimu p_component, AddressingMethod p_addressingMethod := PX_ADDRESSING_METHOD, PrimitiveScope p_primitiveScope := PX_PRIMITIVE_SCOPE) runs on Tester return XSD.ID {
+			function f_getLatestResourceAddress(in Tester p_component, AddressingMethod p_addressingMethod := PX_ADDRESSING_METHOD, PrimitiveScope p_primitiveScope := PX_PRIMITIVE_SCOPE) runs on Tester return XSD.ID {
 				var XSD.ID v_resourceAddress;
 
 				f_connectInfoPort(p_component);
@@ -1131,7 +1131,7 @@ module OneM2M_Functions {
 			/**
 			 * @desc Sending the address of the last resource saved in the vc_resourcesList
 			 */	
-			function f_sendLatestResourceAddress(AddressingMethod p_addressingMethod := PX_ADDRESSING_METHOD, PrimitiveScope p_primitiveScope := PX_PRIMITIVE_SCOPE) runs on CseSimu {
+			function f_sendLatestResourceAddress(AddressingMethod p_addressingMethod := PX_ADDRESSING_METHOD, PrimitiveScope p_primitiveScope := PX_PRIMITIVE_SCOPE) runs on Tester {
 			
 				infoPort.send(f_getResourceAddress(lengthof(vc_resourcesList)-1, p_addressingMethod, p_primitiveScope));
 		
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index 72e9400..691c639 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -8870,6 +8870,70 @@ module OneM2M_PermutationFunctions {
 	
 						} //end f_CSE_SEC_ACP_012
 	
+						function f_CSE_SEC_ACP_015(template RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode) runs on AeSimu system CseSystem {
+							// Local variables
+							var integer v_aeIndex := -1;
+							var integer v_acpIndex := -1;
+							var integer v_groupIndex := -1;
+							var XSD.AnyURI v_ae2ResourceAddress;
+							var template RequestPrimitive v_groupRequest := m_createGroup(1, -, omit, int2, -, -, -);
+							var template RequestPrimitive v_createRequest := valueof(m_createAcpBase);
+							
+							// Test control
+	
+							// Test component configuration
+							f_cf01Up(true);
+	
+							// Test adapter configuration
+	
+							// Preamble
+							v_aeIndex := f_cse_preamble_registerAe(-, -);
+	
+							v_groupRequest.primitiveContent.group_.memberIDs := {f_getResourceId(vc_resourcesList[v_aeIndex].resource)};
+							
+							v_groupIndex := f_cse_createResource(int9, v_groupRequest, -); 
+							
+							v_createRequest := m_createAcp(-, {f_getResourceId(vc_resourcesList[v_groupIndex].resource)} , -);
+							
+							v_acpIndex := f_cse_createResource(int1, v_createRequest, -); 
+							
+							vc_ae2.start(f_cse_createResource(int2, m_createAe(PX_TS_AE2.appId, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, PX_TS_AE2.aeIdStem, c_defaultAe2ResourceName, omit), -1)); // AE2 is registred
+							f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+							
+							v_ae2ResourceAddress := f_getLatestResourceAddress(vc_ae2);
+
+							// Test Body
+							p_request.to_ := v_ae2ResourceAddress;
+							p_request.from_ := f_getOriginator(v_aeIndex);
+							p_request.requestIdentifier := valueof(p_request.requestIdentifier) & f_rnd(1, 1000000);
+	
+							f_send(e_mcaPort, m_request(valueof(p_request)));
+							tc_ac.start;
+							alt {
+								[] mcaPort.receive(mw_response(mw_responsePrimitive(p_responseStatusCode))) -> value vc_response {
+									tc_ac.stop;
+									setverdict(pass, __SCOPE__ & ": Operation denied because of lack of right on Container");
+								}
+								[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response {
+									tc_ac.stop;
+									setverdict(fail, __SCOPE__ & ": Wrong response status code");
+								}
+								[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value vc_response {
+									tc_ac.stop;
+									setverdict(fail, __SCOPE__ & ": Error while operation on resource type int2 (Ae)");
+								}
+								[] tc_ac.timeout {
+									setverdict(fail, __SCOPE__ & ": No answer while executing operation on resource type int2 (Ae)");
+								}
+							}
+	
+							//Postamble
+							f_cse_postamble_deleteResources();
+	
+							//Tear down
+							f_cf01Down();
+	
+						} //end f_CSE_SEC_ACP_015
 				}// end of Basic_Operations
 				
 			}//end group AccessControlPolicy
diff --git a/OneM2M_Testcases_CSE_Release_3.ttcn b/OneM2M_Testcases_CSE_Release_3.ttcn
index 5b56a04..78866f5 100644
--- a/OneM2M_Testcases_CSE_Release_3.ttcn
+++ b/OneM2M_Testcases_CSE_Release_3.ttcn
@@ -9394,6 +9394,92 @@ module OneM2M_Testcases_CSE_Release_3 {
 				
 				group Create {
 	
+					/**
+					 * @desc	Check that the IUT responds successfully when an AE creates an accessControlPolicy resource having accessControlOriginators
+					 *   		element set to a group resource  identifier which contains AE resource as member
+					 * 
+					 */
+					testcase TC_CSE_SEC_ACP_CRE_005() runs on Tester system CseSystem {
+					
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+									
+						v_ae1.start(f_CSE_SEC_ACP_CRE_005());
+						  	  	
+						v_ae1.done;
+						  	  		
+					}
+								
+					function f_CSE_SEC_ACP_CRE_005() runs on AeSimu system CseSystem {
+						// Local variables
+						var integer v_aeIndex := -1;
+						var integer v_acpIndex := -1;
+						var integer v_groupIndex := -1;
+						var XSD.ID v_ae2ResourceId;
+						var template RequestPrimitive v_groupRequest := m_createGroup(1, -, omit, int2, -, -, -);
+						var template RequestPrimitive v_createRequest := valueof(m_createAcpBase);
+						
+						// Test control
+
+						// Test component configuration
+						f_cf01Up(true);
+
+						// Test adapter configuration
+
+						// Preamble
+						v_aeIndex := f_cse_preamble_registerAe(-, -);
+
+						vc_ae2.start(f_cse_createResource(int2, m_createAe(PX_TS_AE2.appId, -, PX_TS_AE2.aeIdStem, c_defaultAe2ResourceName, omit), -1)); // AE2 is registred
+						f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+						
+						v_ae2ResourceId := f_getLatestResourceAddress(vc_ae2, e_nonHierarchical, e_cseRelative);
+
+						v_groupRequest.primitiveContent.group_.memberIDs := {v_ae2ResourceId};
+						
+						v_groupIndex := f_cse_createResource(int9, v_groupRequest, v_aeIndex); 
+
+						v_createRequest := m_createAcp(-, {f_getResourceId(vc_resourcesList[v_groupIndex].resource)} , -);
+						
+						// Test Body
+						v_createRequest := f_getCreateRequestPrimitive(int1, v_createRequest, v_aeIndex);
+						
+						f_send(e_mcaPort, m_request(valueof(v_createRequest)));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value vc_response {
+								tc_ac.stop;
+								setverdict(pass, __SCOPE__ & ": Resource created successfully");
+								f_checkAttributesToBeSaved(int1, valueof(v_createRequest), vc_response.primitive.responsePrimitive);
+								v_acpIndex := f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, int1, v_aeIndex);
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Wrong response status code");
+							}							
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value vc_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Error while creating resource");
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, __SCOPE__ & ": No answer while creating resource");
+							}
+						}
+
+						f_checkAeSimuStatus();
+    						
+						//Check to see if the resource is present or not
+						if(f_cse_isResourcePresent(v_acpIndex)) {
+							setverdict(pass, __SCOPE__ & ":INFO: Resource created");
+						} else {
+							setverdict(fail, __SCOPE__ & ":ERROR: Resource not created");
+						}
+
+						//Postamble
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+
+					}//end TC_CSE_SEC_ACP_CRE_005
 				}// end of group Create
 			
 				group Update {
@@ -9402,6 +9488,44 @@ module OneM2M_Testcases_CSE_Release_3 {
 				
 				group Basic_Operations {
 				
+					group g_CSE_SEC_ACP_015{
+						
+						/**
+						 * @desc Check that the IUT responds successfully when an AE tries an OPERATION on the AE1 resource whose accessControlPolicyIDs contains a group resource identifier where AE is a member.
+						 * 
+						 */
+						testcase TC_CSE_SEC_ACP_015_CRE() runs on Tester system CseSystem { //Create
+							var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+
+							v_ae1.start(f_CSE_SEC_ACP_015(m_createContainerBase, int2001));	
+							v_ae1.done;
+						}//end TC_CSE_SEC_ACP_015_CRE
+	
+						testcase TC_CSE_SEC_ACP_015_UPD() runs on Tester system CseSystem { //Update
+							var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+							var template RequestPrimitive v_updateRequest := m_updateAeBase;
+							var Labels v_labels_1:= {"VALUE_1"};
+								v_updateRequest.primitiveContent.aE.labels := v_labels_1;
+
+							v_ae1.start(f_CSE_SEC_ACP_015(v_updateRequest, int2004));	
+							v_ae1.done;
+						}//end TC_CSE_SEC_ACP_015_UPD
+	
+						testcase TC_CSE_SEC_ACP_015_RET() runs on Tester system CseSystem { //Retrieve
+							var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+
+							v_ae1.start(f_CSE_SEC_ACP_015(m_retrieve("Temporary", "Temporary"), int2000));	
+							v_ae1.done;
+						}//end TC_CSE_SEC_ACP_015_RET
+	
+						testcase TC_CSE_SEC_ACP_015_DEL() runs on Tester system CseSystem { //Delete
+							var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+
+							v_ae1.start(f_CSE_SEC_ACP_015(m_delete("Temporary", "Temporary"), int2002));	
+							v_ae1.done;
+						}//end TC_CSE_SEC_ACP_015_DEL
+	
+					} //end g_CSE_SEC_ACP_015
 				}// end of Basic_Operations
 				
 			}//end group AccessControlPolicy
-- 
GitLab