From 9f6e573f3f42ee4b83b1723459f986388e75c822 Mon Sep 17 00:00:00 2001
From: Miguel Angel Reina Ortega <miguelangel.reinaortega@etsi.org>
Date: Fri, 18 Nov 2016 10:38:29 +0100
Subject: [PATCH] New ACP Testcases added according to
 TST-2016-0211-TS-0018_ACP_Test_purposes_contribution

Signed-off-by: Miguel Angel Reina Ortega <miguelangel.reinaortega@etsi.org>
---
 LibOneM2M/OneM2M_Functions.ttcn |   8 +-
 LibOneM2M/OneM2M_Templates.ttcn |  51 +-
 OneM2M_Testcases.ttcn           | 900 +++++++++++++++++++++++++++++++-
 3 files changed, 916 insertions(+), 43 deletions(-)

diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 43b9f9f..b273af7 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     ETSI
  *  @version    $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Functions.ttcn $
- *              $Id: OneM2M_Functions.ttcn 163 2016-11-10 08:50:50Z carres $
+ *              $Id: OneM2M_Functions.ttcn 164 2016-11-17 13:54:53Z carres $
  *  @desc       Module containing functions for oneM2M
  *
  */
@@ -919,18 +919,18 @@ module OneM2M_Functions {
 			alt {
 				[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
 					tc_ac.stop;
-					setverdict(pass, testcasename() & ": Attribute of resource type int2 (Ae) updated successfuly");
+					setverdict(pass, testcasename() & ": Attribute of resource updated successfuly");
 				}
 				[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
 					tc_ac.stop;
-					setverdict(fail, testcasename() & ": Error while updating resource type int2 (Ae)");
+					setverdict(fail, testcasename() & ": Error while updating resource");
 				}
 				[] mcaPort.receive{
 					tc_ac.stop;
 					setverdict(fail, testcasename() & ": Error, unexpected message received");
 				}
 				[] tc_ac.timeout {
-					setverdict(inconc, testcasename() & ": No answer while updating resource type int2 (Ae) or None notification received");
+					setverdict(inconc, testcasename() & ": No answer while updating resource");
 				}
 			}	
 		}// end f_update_attribute_request
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 8752233..a7e4635 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     ETSI
  *  @version    $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Templates.ttcn $
- *              $Id: OneM2M_Templates.ttcn 162 2016-11-09 09:09:44Z carres $
+ *              $Id: OneM2M_Templates.ttcn 164 2016-11-17 13:54:53Z carres $
  *  @desc       Module containing templates for oneM2M
  *
  */
@@ -269,6 +269,14 @@ module OneM2M_Templates {
 				}
 			};
 			
+			template (value) RequestPrimitive m_updateAcpPrivileges(in template(omit) SetOfAcrs p_privileges := omit, in template(omit) SetOfAcrs p_selfPrivileges := omit) modifies m_update := {
+				from_ := PX_AE_ID_STEM,
+				requestIdentifier := "m_updateAcp" & f_rnd(1, 1000000),
+				primitiveContent:= {
+							any_1 := {{AccessControlPolicy_optional := m_contentUpdateAcpPrivileges(p_privileges, p_selfPrivileges)}}
+				}
+			};
+			
 			/**
 			 * @desc Base UPDATE request primitive for Group resource
 			 */
@@ -825,27 +833,20 @@ module OneM2M_Templates {
 			announceTo := omit,//O
 			announcedAttribute := omit,//O
 			privileges := {
-				accessControlRule_list := {
-					{
-						accessControlOriginators := p_acor,//{"*"},//{PX_AE_ID_STEM}, //{"admin:admin"},
-						accessControlOperations := p_allowedOperations,
-						accessControlContexts_list := omit,
-						accessControlAuthenticationFlag := omit
-					}
-				}
+				accessControlRule_list := {valueof(m_createAcr(p_acor, p_allowedOperations))}
 			},//M
 			selfPrivileges := {
-				accessControlRule_list := {
-					{
-						accessControlOriginators := p_acor, //{"*"},//{PX_AE_ID_STEM}, //{"admin:admin"},
-						accessControlOperations := int63,
-						accessControlContexts_list := omit,
-						accessControlAuthenticationFlag := omit
-					}
-				}
+				accessControlRule_list := {valueof(m_createAcr(p_acor, int63))}
 			},//M
 			choice := omit //NP
 		};
+		
+		template (value) AccessControlRule m_createAcr (in template (value) ListOfURIs p_acor, in template (value) AccessControlOperations p_allowedOperations) := {
+			accessControlOriginators := p_acor,//{"*"},//{PX_AE_ID_STEM}, //{"admin:admin"},
+			accessControlOperations := p_allowedOperations,
+			accessControlContexts_list := omit,
+			accessControlAuthenticationFlag := omit
+		}
     	
 		//added by @Naum
 		template (value) CSEBase_optional m_contentCreateCSEBase (in ServiceSubscribedAppRule p_serviceSubscribedAppRule) := {
@@ -1192,6 +1193,22 @@ module OneM2M_Templates {
 			selfPrivileges := omit,//O
 			choice := omit //NP
 		};
+		
+		template (value) AccessControlPolicy_optional m_contentUpdateAcpPrivileges(in template(omit) SetOfAcrs p_privileges, in template(omit) SetOfAcrs p_selfPrivileges) := {
+			resourceName := omit,//NP
+			resourceType := omit,//NP
+			resourceID := omit,//NP
+			parentID := omit,//NP
+			creationTime := omit,//NP
+			lastModifiedTime := omit,//NP
+			labels := omit,//O
+			expirationTime := omit,//O
+			announceTo := omit,//O
+			announcedAttribute := omit,//O
+			privileges := p_privileges,//O
+			selfPrivileges := p_selfPrivileges,//O
+			choice := omit //NP
+		};
     	
 		/**
 		 * @desc Base primitiveContent for UPDATE operation for Group resource
diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn
index 3a0e6a7..604928c 100644
--- a/OneM2M_Testcases.ttcn
+++ b/OneM2M_Testcases.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     ETSI
  *  @version    $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_Testcases.ttcn $
- *              $Id: OneM2M_Testcases.ttcn 163 2016-11-10 08:50:50Z carres $
+ *              $Id: OneM2M_Testcases.ttcn 164 2016-11-17 13:54:53Z carres $
  *  @desc       Module containing test cases for oneM2M
  *
  */
@@ -2630,7 +2630,7 @@ module OneM2M_Testcases {
 							//Check attribute 1
 							if(ispresent(v_responsePrimitive.primitiveContent)) {
 								if(ischosen(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy)) {
-									if(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy.labels != v_labels_2){
+									if(v_responsePrimitive.primitiveContent.any_1[0].AccessControlPolicy_optional.labels != v_labels_2){
         								setverdict(fail, testcasename() & ": Error: Labels attribute not updated correctly")
         							}
 								}
@@ -4000,6 +4000,71 @@ module OneM2M_Testcases {
     				
 				} // end g_CSE_DMR_UPD_BO_008				
 
+				group g_CSE_DMR_UPD_BV_009{
+
+					testcase TC_CSE_DMR_UPD_BV_009() runs on CseTester system CseSystem {
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_containerIndex := -1;
+						var RequestPrimitive v_updateRequest := m_updateContainerBase;
+						var Labels v_labels_1:= {"VALUE_1"};
+						v_updateRequest.primitiveContent.any_1[0].Container_optional.labels := v_labels_1;
+				   
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+		
+						v_containerIndex := f_cse_createResource(int3, m_createContainerBase, v_aeIndex); 
+		
+						// Test Body
+						if(ispresent(vc_resourcesList[v_containerIndex].resource.any_1[0].Container_optional.stateTag)) { 
+		
+							v_updateRequest := f_getUpdateRequestPrimitive(int3, v_containerIndex, v_updateRequest);
+							f_update_attribute_request(v_updateRequest);
+
+							mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(v_containerIndex), f_getOriginator(v_containerIndex))));
+
+							tc_ac.start;
+							alt {
+								[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+									tc_ac.stop;
+									if(v_response.primitive.responsePrimitive.primitiveContent.any_1[0].Container_optional.stateTag == 1) { //(Create and Delete)
+										setverdict(pass, testcasename() & ": The stateTag attribute is incremented");	
+									}
+									else{
+										setverdict(fail, testcasename() & ": Error the stateTag attribute is not incremented");
+									}
+								}
+								[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
+									tc_ac.stop;
+									setverdict(fail, testcasename() & ": Error while retrieving resource attributes");
+								}
+								[] tc_ac.timeout {
+									setverdict(inconc, testcasename() & ": No answer while retrieving resource attributes");
+								}
+							}	
+				
+						}//end if
+						else{
+							setverdict(fail, testcasename() & ": Error the stateTag attribute is empty");
+						}
+		
+						// Postamble
+						f_cse_postamble_deleteResources();
+
+						// Tear down
+						f_cf01Down();
+			
+					}//end TC_CSE_DMR_UPD_BV_009
+					
+				} // end group g_CSE_DMR_UPD_BV_009
+
 			}//end group Update
 			
 			group Delete {
@@ -4143,25 +4208,15 @@ module OneM2M_Testcases {
                 		// Local variables
                 		var MsgIn v_response;
                 		var RequestPrimitive v_request;
-						var RequestPrimitive v_updateRequest := valueof(m_updateAcpBase);
+						var RequestPrimitive v_updateRequest;
 						var integer v_acpAuxIndex := -1;
 						var integer v_aeIndex := -1;
 						var integer v_resourceIndex := -1;
 						var CseTester v_notifyHandler;
 						var integer v_ae2Index := -1;
-						
-						var AccessControlRule v_accessControlRule_1 := {
-    							accessControlOriginators := {PX_SUPER_USER},
-    							accessControlOperations := int63,
-    							accessControlContexts_list := omit,
-    							accessControlAuthenticationFlag := omit
-    					};
-						var AccessControlRule v_accessControlRule_2 := {
-								accessControlOriginators := {"wait"},
-								accessControlOperations := int55,
-								accessControlContexts_list := omit,
-								accessControlAuthenticationFlag := omit
-						};
+						var AccessControlRule v_accessControlRule_1 := valueof(m_createAcr({PX_SUPER_USER}, int63));
+						var AccessControlRule v_accessControlRule_2;
+						var SetOfAcrs v_setOfArcs;
                 							   
                 		// Test control
 						if(not(PICS_ACP_SUPPORT)) {
@@ -4177,17 +4232,17 @@ module OneM2M_Testcases {
                 		// Preamble
 						v_acpAuxIndex := f_cse_preamble_createAcpAux(-,-);//c_CRDNDi);
                 		v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpAuxIndex].resource)}, -);//c_CRUNDi);
+						v_accessControlRule_2 := valueof(m_createAcr({f_getOriginator(v_aeIndex)}, int55));
 						
 						f_cse_preamble_subscriptionVerification(v_notifyHandler, v_aeIndex, v_ae2Index, p_createRequestPrimitive, p_resourceType);
                 		
                 		if (p_resourceType == int1){
 							p_createRequestPrimitive.primitiveContent.any_1[0].AccessControlPolicy_optional.selfPrivileges.accessControlRule_list := {v_accessControlRule_1,v_accessControlRule_2};
-							p_createRequestPrimitive.primitiveContent.any_1[0].AccessControlPolicy_optional.selfPrivileges.accessControlRule_list[1].accessControlOriginators := {f_getResourceAddress(v_aeIndex)};
     					}
                 		else{
 							f_setAcpId(p_createRequestPrimitive, {f_getResourceId(vc_resourcesList[v_acpAuxIndex].resource)});
-                			v_updateRequest.primitiveContent.any_1[0].AccessControlPolicy_optional.privileges.accessControlRule_list := {v_accessControlRule_1,v_accessControlRule_2};// Super User can delete the resource but not the AE
-							v_updateRequest.primitiveContent.any_1[0].AccessControlPolicy_optional.privileges.accessControlRule_list[1].accessControlOriginators := {f_getOriginator(v_aeIndex)};
+							v_setOfArcs.accessControlRule_list := {v_accessControlRule_1, v_accessControlRule_2};
+							v_updateRequest := m_updateAcpPrivileges(v_setOfArcs, -);
 							v_updateRequest := f_getUpdateRequestPrimitive(int1, vc_acpAuxIndex, v_updateRequest);
 							
 							mcaPort.send(m_request(v_updateRequest));
@@ -4195,14 +4250,14 @@ module OneM2M_Testcases {
     						alt {
     							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
     								tc_ac.stop;
-    								setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfuly");
+    								setverdict(pass, testcasename() & ": Attribute of resource type int1 (Acp) updated successfuly");
     							}
     							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
     								tc_ac.stop;
-    								setverdict(fail, testcasename() & ": Error while updating resource type " & int2str(enum2int(p_resourceType)));
+    								setverdict(fail, testcasename() & ": Error while updating resource type int1 (Acp)");
     							}
     							[] tc_ac.timeout {
-    								setverdict(inconc, testcasename() & ": No answer while updating resource type " & int2str(enum2int(p_resourceType)));
+    								setverdict(inconc, testcasename() & ": No answer while updating resource type int1 (Acp)");
     							}
     						}
                 		}
@@ -8516,6 +8571,807 @@ module OneM2M_Testcases {
 	
 		}//end group Subscription_And_Notification
 		
+		group Security {
+	
+			group Access_Control_Policy {
+			
+				group g_CSE_SEC_ACP_BV_001 {
+	
+					testcase TC_CSE_SEC_ACP_BV_001() runs on CseTester system CseSystem {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_acpIndex := -1;
+						var template PrimitiveContent v_contentResponse;
+						var RequestPrimitive v_createRequest := valueof(m_createAcpBase);
+						var AccessControlRule v_accessControlRule_1 := valueof(m_createAcr({PX_SUPER_USER}, int63));
+						var AccessControlRule v_accessControlRule_2 := valueof(m_createAcr({"wait"}, int55));
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_aeIndex := f_cse_preamble_registerAe(-, -); // Only use for setting the ACR_2's accessControlOriginators attribute to AE_ID
+
+						v_createRequest.primitiveContent.any_1[0].AccessControlPolicy_optional.privileges.accessControlRule_list := {v_accessControlRule_1,v_accessControlRule_2};
+						v_createRequest.primitiveContent.any_1[0].AccessControlPolicy_optional.privileges.accessControlRule_list[1].accessControlOriginators := {f_getOriginator(v_aeIndex)};
+
+						v_contentResponse.any_1[0].AccessControlPolicy_optional := mw_contentAcp_rc1;
+						v_contentResponse.any_1[0].AccessControlPolicy_optional.privileges.accessControlRule_list := {v_accessControlRule_1,v_accessControlRule_2};
+						v_contentResponse.any_1[0].AccessControlPolicy_optional.privileges.accessControlRule_list[1].accessControlOriginators := {f_getOriginator(v_aeIndex)};
+
+						// Test Body
+						v_acpIndex := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex};
+
+						mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(v_acpIndex), f_getOriginator(v_acpIndex))));
+
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Response OK for retrieving");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error, resource elements provided not matching expected resource elements");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while retrieving resource");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, testcasename() & ": No answer while retrieving resource");
+							}
+						}
+
+						//Postamble
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+
+					}//end TC_CSE_SEC_ACP_BV_001
+						
+				}//end g_CSE_SEC_ACP_BV_001
+				
+				group g_CSE_SEC_ACP_BV_002 {
+	
+					testcase TC_CSE_SEC_ACP_BV_002() runs on CseTester system CseSystem {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_acpIndex := -1;
+						var template PrimitiveContent v_contentResponse;
+						var RequestPrimitive v_createRequest := valueof(m_createAcpBase);
+						var AccessControlRule v_accessControlRule_1 := valueof(m_createAcr({PX_SUPER_USER}, int63));
+						var AccessControlRule v_accessControlRule_2 := valueof(m_createAcr({"wait"}, int55));
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_aeIndex := f_cse_preamble_registerAe(-, -); // Only use for setting the ACR_2's accessControlOriginators attribute to AE_ID
+
+						v_createRequest.primitiveContent.any_1[0].AccessControlPolicy_optional.selfPrivileges.accessControlRule_list := {v_accessControlRule_1,v_accessControlRule_2};
+						v_createRequest.primitiveContent.any_1[0].AccessControlPolicy_optional.selfPrivileges.accessControlRule_list[1].accessControlOriginators := {f_getOriginator(v_aeIndex)};
+
+						v_contentResponse.any_1[0].AccessControlPolicy_optional := mw_contentAcp_rc1;
+						v_contentResponse.any_1[0].AccessControlPolicy_optional.selfPrivileges.accessControlRule_list := {v_accessControlRule_1,v_accessControlRule_2};
+						v_contentResponse.any_1[0].AccessControlPolicy_optional.selfPrivileges.accessControlRule_list[1].accessControlOriginators := {f_getOriginator(v_aeIndex)};
+
+						// Test Body
+						v_acpIndex := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex};
+
+						mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(v_acpIndex), f_getOriginator(v_acpIndex))));
+
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Response OK for retrieving");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error, resource elements provided not matching expected resource elements");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while retrieving resource");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, testcasename() & ": No answer while retrieving resource");
+							}
+						}
+
+						//Postamble
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+
+					}//end TC_CSE_SEC_ACP_BV_002
+		
+				}//end g_CSE_SEC_ACP_BV_002
+				
+				group g_CSE_SEC_ACP_BV_003 {
+					
+					testcase TC_CSE_SEC_ACP_BV_003_01() runs on CseTester system CseSystem { //Create
+						f_CSE_SEC_ACP_BV_003(m_createContainerBase);	
+					}//end TC_CSE_SEC_ACP_BV_003_01
+					
+					testcase TC_CSE_SEC_ACP_BV_003_02() runs on CseTester system CseSystem { //Update
+						var template RequestPrimitive v_updateRequest := m_updateAeBase;
+						var Labels v_labels_1:= {"VALUE_1"};
+						v_updateRequest.primitiveContent.any_1[0].AE_optional.labels := v_labels_1;
+						f_CSE_SEC_ACP_BV_003(v_updateRequest);	
+					}//end TC_CSE_SEC_ACP_BV_003_02
+					
+					testcase TC_CSE_SEC_ACP_BV_003_03() runs on CseTester system CseSystem { //Retrieve
+						f_CSE_SEC_ACP_BV_003(m_retrieveResource("Temporary", "Temporary"));	
+					}//end TC_CSE_SEC_ACP_BV_003_03
+					
+					testcase TC_CSE_SEC_ACP_BV_003_04() runs on CseTester system CseSystem { //Delete
+						f_CSE_SEC_ACP_BV_003(m_deleteRequest("Temporary"));	
+					}//end TC_CSE_SEC_ACP_BV_003_04
+	
+					function f_CSE_SEC_ACP_BV_003(template RequestPrimitive p_requestPrimitive) runs on CseTester{
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_acpIndex := -1;
+						var RequestPrimitive v_createRequest;
+						var AccessControlRule v_accessControlRule_1;
+						var RequestPrimitive v_updateRequest;
+						var SetOfAcrs v_setOfArcs;
+						
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_createRequest := m_createAcp(f_getResourceAddress(), c_defaultResourceName, {"testDomain"});
+						v_acpIndex := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex};
+						
+						v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, -);
+						
+						// Test Body
+						p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
+						p_requestPrimitive.from_ := "testDomain";
+						
+						mcaPort.send(m_request(valueof(p_requestPrimitive)));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Successful operation on resource type int2 (Ae)");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while operation on resource type int2 (Ae)");
+							}
+							[] mcaPort.receive{
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error, unexpected message received");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, testcasename() & ": No answer while executing operation on resource type int2 (Ae)");
+							}
+						}
+
+						//Postamble
+						v_accessControlRule_1 := valueof(m_createAcr({"*"}, int63));
+						v_setOfArcs.accessControlRule_list := {v_accessControlRule_1};
+						v_updateRequest := m_updateAcpPrivileges(v_setOfArcs, v_setOfArcs);
+						v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex, v_updateRequest);
+						v_updateRequest.from_ := "testDomain";
+						mcaPort.send(m_request(v_updateRequest));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								log(testcasename() & ": Attribute of resource type ACP updated successfuly");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								log(testcasename() & ": Error while updating resource type ACP");
+							}
+							[] tc_ac.timeout {
+								log(testcasename() & ": No answer while updating resource type ACP");
+							}
+						}
+						
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+
+					}//end f_CSE_SEC_ACP_BV_003
+		
+				}//end g_CSE_SEC_ACP_BV_003
+				
+				group g_CSE_SEC_ACP_BV_004 {
+					
+					testcase TC_CSE_SEC_ACP_BV_004_01() runs on CseTester system CseSystem { //Create
+						f_CSE_SEC_ACP_BV_004(m_createContainerBase);	
+					}//end TC_CSE_SEC_ACP_BV_004_01
+	
+					testcase TC_CSE_SEC_ACP_BV_004_02() runs on CseTester system CseSystem { //Update
+						var template RequestPrimitive v_updateRequest := m_updateAeBase;
+						var Labels v_labels_1:= {"VALUE_1"};
+						v_updateRequest.primitiveContent.any_1[0].AE_optional.labels := v_labels_1;
+						f_CSE_SEC_ACP_BV_004(v_updateRequest);	
+					}//end TC_CSE_SEC_ACP_BV_004_02
+	
+					testcase TC_CSE_SEC_ACP_BV_004_03() runs on CseTester system CseSystem { //Retrieve
+						f_CSE_SEC_ACP_BV_004(m_retrieveResource("Temporary", "Temporary"));	
+					}//end TC_CSE_SEC_ACP_BV_004_03
+	
+					testcase TC_CSE_SEC_ACP_BV_004_04() runs on CseTester system CseSystem { //Delete
+						f_CSE_SEC_ACP_BV_004(m_deleteRequest("Temporary"));	
+					}//end TC_CSE_SEC_ACP_BV_004_04
+
+					function f_CSE_SEC_ACP_BV_004(template RequestPrimitive p_requestPrimitive) runs on CseTester{
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_acpIndex := -1;
+						var RequestPrimitive v_createRequest;
+		
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_createRequest := f_getCreateRequestPrimitive(int1, m_createAcpBase, -1);
+						v_acpIndex := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex};
+		
+						v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, -);
+		
+						// Test Body
+						p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
+						p_requestPrimitive.from_ := "UnknowOriginator";
+		
+						mcaPort.send(m_request(valueof(p_requestPrimitive)));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Successful operation on resource type int2 (Ae)");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while operation on resource type int2 (Ae)");
+							}
+							[] mcaPort.receive{
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error, unexpected message received");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, testcasename() & ": No answer while executing operation on resource type int2 (Ae)");
+							}
+						}
+
+						//Postamble
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+
+					}//end f_CSE_SEC_ACP_BV_004
+
+				}//end g_CSE_SEC_ACP_BV_004
+				
+				group g_CSE_SEC_ACP_BV_011 {
+					
+					testcase TC_CSE_SEC_ACP_BV_011_01() runs on CseTester system CseSystem { //Create
+						f_CSE_SEC_ACP_BV_011(m_createContainerBase);	
+					}//end TC_CSE_SEC_ACP_BV_011_01
+
+					testcase TC_CSE_SEC_ACP_BV_011_02() runs on CseTester system CseSystem { //Update
+						var template RequestPrimitive v_updateRequest := m_updateContainerBase;
+						var Labels v_labels_1:= {"VALUE_1"};
+						v_updateRequest.primitiveContent.any_1[0].Container_optional.labels := v_labels_1;
+						f_CSE_SEC_ACP_BV_011(v_updateRequest);	
+					}//end TC_CSE_SEC_ACP_BV_011_02
+
+					testcase TC_CSE_SEC_ACP_BV_011_03() runs on CseTester system CseSystem { //Retrieve
+						f_CSE_SEC_ACP_BV_011(m_retrieveResource("Temporary", "Temporary"));	
+					}//end TC_CSE_SEC_ACP_BV_011_03
+
+					testcase TC_CSE_SEC_ACP_BV_011_04() runs on CseTester system CseSystem { //Delete
+						f_CSE_SEC_ACP_BV_011(m_deleteRequest("Temporary"));	
+					}//end TC_CSE_SEC_ACP_BV_011_04
+
+					function f_CSE_SEC_ACP_BV_011(template RequestPrimitive p_requestPrimitive) runs on CseTester {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_containerIndex := -1;
+
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_aeIndex := f_cse_preamble_registerAe(-, -);
+						v_containerIndex := f_cse_createResource(int3, m_createContainerBase, v_aeIndex);
+						
+						// Test Body
+						p_requestPrimitive.to_ := f_getResourceAddress(v_containerIndex);
+						p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
+
+						mcaPort.send(m_request(valueof(p_requestPrimitive)));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Successful operation on resource type int3 (Container)");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while operation on resource type int3 (Container)");
+							}
+							[] mcaPort.receive{
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error, unexpected message received");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, testcasename() & ": No answer while executing operation on resource type int3 (Container)");
+							}
+						}
+
+						//Postamble
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+
+					} //end f_CSE_SEC_ACP_BV_011
+
+				} //end g_CSE_SEC_ACP_BV_011
+				
+				group g_CSE_SEC_ACP_BO_012 {
+					
+					testcase TC_CSE_SEC_ACP_BO_012_01() runs on CseTester system CseSystem { //Create
+						f_CSE_SEC_ACP_BO_012(m_createContainerBase);	
+					}//end TC_CSE_SEC_ACP_BO_012_01
+
+					testcase TC_CSE_SEC_ACP_BO_012_02() runs on CseTester system CseSystem { //Update
+						var template RequestPrimitive v_updateRequest := m_updateContainerBase;
+						var Labels v_labels_1:= {"VALUE_1"};
+						v_updateRequest.primitiveContent.any_1[0].Container_optional.labels := v_labels_1;
+						f_CSE_SEC_ACP_BO_012(v_updateRequest);	
+					}//end TC_CSE_SEC_ACP_BO_012_02
+
+					testcase TC_CSE_SEC_ACP_BO_012_03() runs on CseTester system CseSystem { //Retrieve
+						f_CSE_SEC_ACP_BO_012(m_retrieveResource("Temporary", "Temporary"));	
+					}//end TC_CSE_SEC_ACP_BO_012_03
+
+					testcase TC_CSE_SEC_ACP_BO_012_04() runs on CseTester system CseSystem { //Delete
+						f_CSE_SEC_ACP_BO_012(m_deleteRequest("Temporary"));	
+					}//end TC_CSE_SEC_ACP_BO_012_04
+
+					function f_CSE_SEC_ACP_BO_012(template RequestPrimitive p_requestPrimitive) runs on CseTester {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_containerIndex := -1;
+						var integer v_acpIndex := -1;
+						var RequestPrimitive v_createRequest := valueof(m_createAcpBase);
+						var RequestPrimitive v_updateRequest;
+						var AccessControlRule v_accessControlRule_1;
+						var SetOfAcrs v_setOfArcs;
+
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_acpIndex := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex};
+						v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, -);
+						v_containerIndex := f_cse_createResource(int3, m_createContainerBase, v_aeIndex);
+						
+						v_accessControlRule_1 := valueof(m_createAcr({PX_SUPER_USER, f_getOriginator(v_aeIndex)}, int63));
+						v_setOfArcs.accessControlRule_list := {v_accessControlRule_1};
+						v_updateRequest := m_updateAcpPrivileges(v_setOfArcs, v_setOfArcs);
+						v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex, v_updateRequest);
+						f_update_attribute_request(v_updateRequest);
+						
+						// Test Body
+						p_requestPrimitive.to_ := f_getResourceAddress(v_containerIndex);
+						p_requestPrimitive.from_ := "UnknowOriginator";
+
+						mcaPort.send(m_request(valueof(p_requestPrimitive)));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int4103))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Operation denied because of lack of right on Container");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error operation have been accpeted without having privileges");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while operation on resource type int3 (Container)");
+							}
+							[] mcaPort.receive{
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error, unexpected message received");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, testcasename() & ": No answer while executing operation on resource type int3 (Container)");
+							}
+						}
+
+						//Postamble
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+
+					} //end f_CSE_SEC_ACP_BO_012
+
+				} //end g_CSE_SEC_ACP_BO_012
+				
+				group g_CSE_SEC_ACP_BO_013{
+					
+					testcase TC_CSE_SEC_ACP_BO_013_01() runs on CseTester system CseSystem { //Create
+						f_CSE_SEC_ACP_BO_013(m_createContainerBase);	
+					}//end TC_CSE_SEC_ACP_BO_013_01
+
+					testcase TC_CSE_SEC_ACP_BO_013_02() runs on CseTester system CseSystem { //Update
+						var template RequestPrimitive v_updateRequest := m_updateAeBase;
+						var Labels v_labels_1:= {"VALUE_1"};
+						v_updateRequest.primitiveContent.any_1[0].AE_optional.labels := v_labels_1;
+						f_CSE_SEC_ACP_BO_013(v_updateRequest);	
+					}//end TC_CSE_SEC_ACP_BO_013_02
+
+					testcase TC_CSE_SEC_ACP_BO_013_03() runs on CseTester system CseSystem { //Retrieve
+						f_CSE_SEC_ACP_BO_013(m_retrieveResource("Temporary", "Temporary"));	
+					}//end TC_CSE_SEC_ACP_BO_013_03
+
+					testcase TC_CSE_SEC_ACP_BO_013_04() runs on CseTester system CseSystem { //Delete
+						f_CSE_SEC_ACP_BO_013(m_deleteRequest("Temporary"));	
+					}//end TC_CSE_SEC_ACP_BO_013_04
+
+					function f_CSE_SEC_ACP_BO_013(template RequestPrimitive p_requestPrimitive) runs on CseTester {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_acpIndex := -1;
+						var RequestPrimitive v_createRequest := valueof(m_createAcpBase);
+						var RequestPrimitive v_updateRequest;
+						var AccessControlRule v_accessControlRule_1;
+						var SetOfAcrs v_setOfArcs;
+
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_acpIndex := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex};
+						v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpIndex].resource)}, -);
+		
+						v_accessControlRule_1 := valueof(m_createAcr({ f_getOriginator(v_aeIndex), PX_SUPER_USER}, int63));
+						v_setOfArcs.accessControlRule_list := {v_accessControlRule_1};
+						v_updateRequest := m_updateAcpPrivileges(v_setOfArcs, v_setOfArcs);
+						v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex, v_updateRequest);
+						f_update_attribute_request(v_updateRequest);
+		
+						// Test Body
+						p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
+						p_requestPrimitive.from_ := "UnknowOriginator";
+
+						mcaPort.send(m_request(valueof(p_requestPrimitive)));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int4103))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Operation denied because of lack of right on Container");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error operation have been accpeted without having privileges");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while operation on resource type int3 (Container)");
+							}
+							[] mcaPort.receive{
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error, unexpected message received");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, testcasename() & ": No answer while executing operation on resource type int3 (Container)");
+							}
+						}
+
+						//Postamble
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+
+					} //end f_CSE_SEC_ACP_BO_013
+
+				} //end g_CSE_SEC_ACP_BO_013
+				
+				group g_CSE_SEC_ACP_BV_014{
+					
+					testcase TC_CSE_SEC_ACP_BV_014_01() runs on CseTester system CseSystem { //Create
+						f_CSE_SEC_ACP_BV_014(m_createContainerBase);	
+					}//end TC_CSE_SEC_ACP_BV_014_01
+
+					testcase TC_CSE_SEC_ACP_BV_014_02() runs on CseTester system CseSystem { //Update
+						var template RequestPrimitive v_updateRequest := m_updateAeBase;
+						var Labels v_labels_1:= {"VALUE_1"};
+						v_updateRequest.primitiveContent.any_1[0].AE_optional.labels := v_labels_1;
+						f_CSE_SEC_ACP_BV_014(v_updateRequest);	
+					}//end TC_CSE_SEC_ACP_BV_014_02
+
+					testcase TC_CSE_SEC_ACP_BV_014_03() runs on CseTester system CseSystem { //Retrieve
+						f_CSE_SEC_ACP_BV_014(m_retrieveResource("Temporary", "Temporary"));	
+					}//end TC_CSE_SEC_ACP_BV_014_03
+
+					testcase TC_CSE_SEC_ACP_BV_014_04() runs on CseTester system CseSystem { //Delete
+						f_CSE_SEC_ACP_BV_014(m_deleteRequest("Temporary"));	
+					}//end TC_CSE_SEC_ACP_BV_014_04
+
+					function f_CSE_SEC_ACP_BV_014(template RequestPrimitive p_requestPrimitive) runs on CseTester {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_acpIndex1 := -1;
+						var integer v_acpIndex2 := -1;
+						var RequestPrimitive v_createRequest := valueof(m_createAcp(f_getResourceAddress(-1), omit));
+						var RequestPrimitive v_updateRequest;
+						var AccessControlRule v_accessControlRule_1;
+						var SetOfAcrs v_setOfArcs;
+
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_acpIndex1 := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex1};
+						v_acpIndex2 := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex2};
+					
+						v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpIndex1].resource), f_getResourceId(vc_resourcesList[v_acpIndex2].resource)}, -);
+		
+						v_accessControlRule_1 := valueof(m_createAcr({f_getOriginator(v_aeIndex)}, int3)); // c_CR 
+						v_setOfArcs.accessControlRule_list := {v_accessControlRule_1};
+						v_updateRequest := m_updateAcpPrivileges(v_setOfArcs, -);
+						v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex1, v_updateRequest);
+						f_update_attribute_request(v_updateRequest);
+						
+						v_accessControlRule_1 := valueof(m_createAcr({f_getOriginator(v_aeIndex)}, int60)); // c_UDNDi  
+						v_setOfArcs.accessControlRule_list := {v_accessControlRule_1};
+						v_updateRequest := m_updateAcpPrivileges(v_setOfArcs, -);
+						v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex2, v_updateRequest);
+						f_update_attribute_request(v_updateRequest);
+
+						// Test Body
+						p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
+						p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
+
+						mcaPort.send(m_request(valueof(p_requestPrimitive)));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Successful operation on resource type int2 (Ae)");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while operation on resource type int2 (Ae)");
+							}
+							[] mcaPort.receive{
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error, unexpected message received");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, testcasename() & ": No answer while executing operation on resource type int2 (Ae)");
+							}
+						}
+
+						//Postamble
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+
+					} //end f_CSE_SEC_ACP_BV_014
+					
+				} //end g_CSE_SEC_ACP_BV_014
+					
+				group g_CSE_SEC_ACP_BV_015{
+				
+					testcase TC_CSE_SEC_ACP_BV_015() runs on CseTester system CseSystem {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_acpIndex1 := -1;
+						var integer v_acpIndex2 := -1;
+						var RequestPrimitive v_createRequest := valueof(m_createAcp(f_getResourceAddress(-1), omit));
+						var RequestPrimitive v_updateRequest := m_updateAeBase;
+						var AccessControlRule v_accessControlRule_1;
+						var AccessControlRule v_accessControlRule_2;
+						var SetOfAcrs v_setOfArcs_1;
+						var SetOfAcrs v_setOfArcs_2;
+
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_acpIndex1 := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex1};
+
+						v_acpIndex2 := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex2};
+
+						v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpIndex1].resource)}, -);
+
+						v_accessControlRule_1 := valueof(m_createAcr({f_getOriginator(v_aeIndex)}, int59)); // c_CRUDNDi
+						v_accessControlRule_2 := valueof(m_createAcr({PX_SUPER_USER, f_getOriginator(v_aeIndex)}, int63)); // c_CRDNDi 
+						v_setOfArcs_1.accessControlRule_list := {v_accessControlRule_1};
+						v_setOfArcs_2.accessControlRule_list := {v_accessControlRule_2};
+						v_updateRequest := m_updateAcpPrivileges(v_setOfArcs_1, v_setOfArcs_2);
+						v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex1, v_updateRequest);
+						f_update_attribute_request(v_updateRequest);
+						
+						// Test Body
+						v_updateRequest.primitiveContent.any_1[0].AE_optional.accessControlPolicyIDs := {f_getResourceId(vc_resourcesList[v_acpIndex2].resource)};
+						v_updateRequest := f_getUpdateRequestPrimitive(int1, v_aeIndex, v_updateRequest);
+						
+						mcaPort.send(m_request(v_updateRequest));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Successful Update operation on resource type int2 (Ae)");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while Update operation on resource type int2 (Ae)");
+							}
+							[] mcaPort.receive{
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error, unexpected message received");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, testcasename() & ": No answer while executing update operation on resource type int2 (Ae)");
+							}
+						}
+
+						//Postamble
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+						
+					}//end TC_CSE_SEC_ACP_BV_015
+
+				} //end g_CSE_SEC_ACP_BV_015			
+				
+				group g_CSE_SEC_ACP_BV_016{
+
+					testcase TC_CSE_SEC_ACP_BV_016() runs on CseTester system CseSystem {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_acpIndex1 := -1;
+						var integer v_acpIndex2 := -1;
+						var RequestPrimitive v_createRequest := valueof(m_createAcp(f_getResourceAddress(-1), omit));
+						var RequestPrimitive v_updateRequest := m_updateAeBase;
+						var AccessControlRule v_accessControlRule_1;
+						var AccessControlRule v_accessControlRule_2;
+						var SetOfAcrs v_setOfArcs_1;
+						var SetOfAcrs v_setOfArcs_2;
+
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_acpIndex1 := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex1};
+
+						v_acpIndex2 := f_cse_createResource(int1, v_createRequest); // CSE child resource
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_acpIndex2};
+
+						v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpIndex1].resource)}, -);
+
+						v_accessControlRule_1 := valueof(m_createAcr({f_getOriginator(v_aeIndex)}, int63)); // c_CRDNDi
+						v_accessControlRule_2 := valueof(m_createAcr({PX_SUPER_USER, f_getOriginator(v_aeIndex)}, int59)); // c_CRUDNDi 
+						v_setOfArcs_1.accessControlRule_list := {v_accessControlRule_1};
+						v_setOfArcs_2.accessControlRule_list := {v_accessControlRule_2};
+						v_updateRequest := m_updateAcpPrivileges(v_setOfArcs_1, v_setOfArcs_2);
+						v_updateRequest := f_getUpdateRequestPrimitive(int1, v_acpIndex1, v_updateRequest);
+						f_update_attribute_request(v_updateRequest);
+						
+						// Test Body
+						v_updateRequest.primitiveContent.any_1[0].AE_optional.accessControlPolicyIDs := {f_getResourceId(vc_resourcesList[v_acpIndex2].resource)};
+						v_updateRequest := f_getUpdateRequestPrimitive(int1, v_aeIndex, v_updateRequest);
+
+						mcaPort.send(m_request(v_updateRequest));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int4103))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Operation denied because of lack of right on Container");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error operation have been accpeted without having privileges");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while operation on resource type int3 (Container)");
+							}
+							[] mcaPort.receive{
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error, unexpected message received");
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc, testcasename() & ": No answer while executing operation on resource type int3 (Container)");
+							}
+						}
+
+						//Postamble
+						f_cse_postamble_deleteResources();
+
+						//Tear down
+						f_cf01Down();
+						
+					}//end TC_CSE_SEC_ACP_BV_016
+					
+				} //end g_CSE_SEC_ACP_BV_016					
+
+			}//end group AccessControlPolicy
+			
+		}//end group Security
+	
 	}//end group CSE
 
 	
-- 
GitLab