diff --git a/OneM2M_Testcases_CSE_Release_4.ttcn b/OneM2M_Testcases_CSE_Release_4.ttcn index 6d2f1e6de87aedbf863c73cfe86ce4dfdd2e4652..23f56df30eab27a1971febe1950ebaea5dcfbadb 100644 --- a/OneM2M_Testcases_CSE_Release_4.ttcn +++ b/OneM2M_Testcases_CSE_Release_4.ttcn @@ -5950,6 +5950,304 @@ module OneM2M_Testcases_CSE_Release_4 { } // f_CSE_PP_004_UPD } //end group TC_CSE_PP_004 + group TC_CSE_PP_005 { + /** + * @desc Check that the IUT rejects the request when the originator does not have retrieve privileges for <primitiveProfile> resource referenced by the PrimitiveProfileIdentifier parameter + * + */ + testcase TC_CSE_PP_005_CRE() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_PP_005_CRE()); + v_ae1.done; + } + + function f_CSE_PP_005_CRE() runs on AeSimu system CseSystem { + // Local variables + var template RequestPrimitive v_createPrimitveProfile; + var RequestPrimitive v_requestContainerCreate; + var ResponsePrimitive v_responsePrimitive; + var integer v_aeIndex := -1; + var integer v_primitiveProfileIndex := -1; + var MsgIn v_response; + + // Preamble + f_cse_createAccessControlPolicyAux(-, -, int61);//c_CUDNDi) //No resource retrieval privilege + v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -); + + // Primitive Profile with add atribute "maxByte" = "100" for content resource. + v_createPrimitveProfile := m_createPrimitveProfileAddContainerMaxByte100({f_getOriginator(v_aeIndex)}); + v_primitiveProfileIndex := f_cse_createResource(int62, v_createPrimitveProfile, v_aeIndex); + + + + //Create container resource without "maxByte" primitive + v_requestContainerCreate := f_getCreateRequestPrimitive(int3, m_createContainerBase, v_aeIndex); + // Link Primitve Prifle, which was created, to this Request + v_requestContainerCreate.primitiveProfileIdentifier := f_getResourceId(vc_resourcesList[v_primitiveProfileIndex].resource); + + f_send(e_mcaPort, m_request(v_requestContainerCreate)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4136))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": IUT does not apply the primitive profile PRIMITIVE_PROFILE_NOT_ACCESSIBLE"); + + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Mismatch in status response code from IUT!"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": IUT accepted the create request with non existing primtive profile!"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer from IUT for the last Request!"); + } + } + + //Postamble + f_cse_postamble_deleteResources(); + + //Tear down + f_cf01Down(); + } // f_CSE_PP_005_CRE + + /** + * @desc Check that the IUT rejects the request when the originator does not have retrieve privileges for <primitiveProfile> resource referenced by the PrimitiveProfileIdentifier parameter + * + */ + testcase TC_CSE_PP_005_RET() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_PP_005_RET()); + v_ae1.done; + } + + function f_CSE_PP_005_RET() runs on AeSimu system CseSystem { + // Local variables + var template RequestPrimitive v_createPrimitveProfile; + var RequestPrimitive v_requestContainerCreate; + var integer v_aeIndex := -1; + var integer v_primitiveProfileIndex := -1; + var integer v_containerParentIndex := -1; + var MsgIn v_response; + var RequestPrimitive v_retrieveRequest; + var template PrimitiveContent v_retriveContentResponse; + + // Preamble + f_cse_createAccessControlPolicyAux(-, -, int61);//c_CUDNDi) //No resource retrieval privilege + v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -); + + // Primitive Profile with Add atribute resultContent for container resource. + v_createPrimitveProfile := m_createPrimitveProfileAddResultContentTo4({f_getOriginator(v_aeIndex)}); + v_primitiveProfileIndex := f_cse_createResource(int62, v_createPrimitveProfile, v_aeIndex); + + //Create Container resource + v_containerParentIndex := f_cse_createResource(int3, m_createContainerBase, v_aeIndex); + + //Create child Container resource + f_cse_createResource(int3, m_createContainerBase, v_aeIndex); + + //Retrieve container with link to Primitve Profile + v_retrieveRequest := valueof(m_retrieve(f_getResourceAddress(v_containerParentIndex), f_getOriginator(v_containerParentIndex))); + v_requestContainerCreate.primitiveProfileIdentifier := f_getResourceId(vc_resourcesList[v_primitiveProfileIndex].resource); + v_requestContainerCreate.resultContent := int1; // only attriubutes + + // Set expected container of retrieve request as per Result Content=1, as the Primtive Prfile is not accessible + //v_retriveContentResponse.container := mw_contentContainer_rc1; + + f_send(e_mcaPort, m_request(v_retrieveRequest)); + tc_ac.start; + alt { + + // Commenting out until TP is frozen + // Expect response as per resultContent=4, specified in Primitive Profile + /* + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2000, v_retriveContentResponse))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": ResultContent from Primtive Profile added to Retrieve Request"); + } */ + + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4136))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": IUT does not apply the primitive profile PRIMITIVE_PROFILE_NOT_ACCESSIBLE"); + + } + + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Mismatch in status response code from IUT!"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": IUT accepted the create request with non existing primtive profile!"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer from IUT for the last Request!"); + } + } + + //Postamble + f_cse_postamble_deleteResources(); + + //Tear down + f_cf01Down(); + } // f_CSE_PP_005_RET + + /** + * @desc Check that the IUT rejects the request when the originator does not have retrieve privileges for <primitiveProfile> resource referenced by the PrimitiveProfileIdentifier parameter + * + */ + testcase TC_CSE_PP_005_DEL() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_PP_005_DEL()); + v_ae1.done; + } + + function f_CSE_PP_005_DEL() runs on AeSimu system CseSystem { + // Local variables + var template RequestPrimitive v_createPrimitveProfile; + var integer v_aeIndex := -1; + var integer v_primitiveProfileIndex := -1; + var integer v_containerIndex := -1; + var MsgIn v_response; + var RequestPrimitive v_deleteRequest; + + // Preamble + f_cse_createAccessControlPolicyAux(-, -, int61);//c_CUDNDi) //No resource retrieval privilege + v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -); + + // Primitive Profile with Add atribute resultContent=1 for container resource. + v_createPrimitveProfile := m_createPrimitveProfileAddResultContentTo1({f_getOriginator(v_aeIndex)}); + v_primitiveProfileIndex := f_cse_createResource(int62, v_createPrimitveProfile, v_aeIndex); + + //Create Container resource + v_containerIndex := f_cse_createResource(int3, m_createContainerBase, v_aeIndex); + + //Delete container resource with default resultContent (0-nothing) + v_deleteRequest := valueof(m_delete(f_getResourceAddress(v_containerIndex), f_getOriginator(v_containerIndex))); + v_deleteRequest.primitiveProfileIdentifier := f_getResourceId(vc_resourcesList[v_primitiveProfileIndex].resource); + + f_send(e_mcaPort, m_request(v_deleteRequest)); + tc_ac.start; + + alt { + /* + // If primitive profile awas ignored, value of resultContent(0=nothing) will be applied + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2002, omit))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Primitive Profile ignored as it is not accessible/does not exist"); + }*/ + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4136))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": IUT does not apply the primitive profile PRIMITIVE_PROFILE_NOT_ACCESSIBLE"); + + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Mismatch in status response code from IUT!"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": IUT accepted the create request with non existing primtive profile!"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer from IUT for the last Request!"); + } + } + + //Postamble + f_cse_postamble_deleteResources(); + + //Tear down + f_cf01Down(); + } // f_CSE_PP_005_DEL + + + /** + * @desc Check that the IUT rejects the request when the originator does not have retrieve privileges for <primitiveProfile> resource referenced by the PrimitiveProfileIdentifier parameter + * + */ + testcase TC_CSE_PP_005_UPD() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_PP_005_UPD()); + v_ae1.done; + } + + function f_CSE_PP_005_UPD() runs on AeSimu system CseSystem { + // Local variables + var template RequestPrimitive v_createPrimitveProfile; + var RequestPrimitive v_updateContainer; + var ResponsePrimitive v_responsePrimitive; + var integer v_aeIndex := -1; + var integer v_primitiveProfileIndex := -1; + var integer v_createdContainerResource := -1; + var MsgIn v_response; + + // Preamble + f_cse_createAccessControlPolicyAux(-, -, int61);//c_CUDNDi) //No resource retrieval privilege + v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -); + + // Primitive Profile with add atribute "maxByte" = "100" for content resource. + v_createPrimitveProfile := m_createPrimitveProfileAddContainerMaxByte100({f_getOriginator(v_aeIndex)}); + v_primitiveProfileIndex := f_cse_createResource(int62, v_createPrimitveProfile, v_aeIndex); + + + //Create container resource without Primtive Profile ID and no maxByte attribte + v_createdContainerResource := f_cse_createResource(int3, m_createContainerBase, v_aeIndex); + + //Update container request with Primitive Profile ID, and not including update for maxByte + v_updateContainer:= f_getUpdateRequestPrimitive(int3, v_aeIndex, m_updateContainerBase); + + // Link Primitve Prifle created to this Request + v_updateContainer.primitiveProfileIdentifier := f_getResourceId(vc_resourcesList[v_primitiveProfileIndex].resource); + + f_send(e_mcaPort, m_request(v_updateContainer)); + tc_ac.start; + alt { + + /* commented out until TP is frozen-reject/accept + [] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) -> value v_response { + tc_ac.stop; + // Check that IUT applied the Primitve Profile + if(v_response.primitive.responsePrimitive.primitiveContent.container.maxByteSize == 100){ + setverdict(fail, __SCOPE__ & ": maxByteSize primitive value in invalid PrimitveProfile applied to Update Container Request!"); + } else { + setverdict(pass, __SCOPE__ & ": maxByteSize primitive value in invalid PrimitveProfile not applied to Update Container Request!"); + } + } */ + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4136))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": IUT does not apply the primitive profile PRIMITIVE_PROFILE_NOT_ACCESSIBLE"); + + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Mismatch in status response code from IUT!"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": IUT accepted the create request with non existing primtive profile!"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer from IUT for the last Request!"); + } + } + + //Postamble + f_cse_postamble_deleteResources(); + + //Tear down + f_cf01Down(); + } // f_CSE_PP_005_UPD + } //end group TC_CSE_PP_005 + + + group TC_CSE_PP_006 { /** @@ -6200,6 +6498,120 @@ module OneM2M_Testcases_CSE_Release_4 { } // f_CSE_PP_006_UPD }//end group TC_CSE_PP_006 + /** + * @desc Check that the IUT rejects the creation of <primitiveProfile> resource request when the request parameters or resource attributes defined in the additions and deletions attributes of the referenced <primitiveProfile> resource are not valid + * + */ + testcase TC_CSE_PP_007() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_PP_007()); + v_ae1.done; + } + + function f_CSE_PP_007() runs on AeSimu system CseSystem { + // Local variables + var RequestPrimitive v_createPrimitveProfile; + var RequestPrimitive v_updateContainer; + var ResponsePrimitive v_responsePrimitive; + var integer v_aeIndex := -1; + var integer v_primitiveProfileIndex := -1; + var integer v_acpResourceIndex := -1; + var MsgIn v_response; + var RequestPrimitive v_updateAcpRequest; + + // Preamble + f_cse_createAccessControlPolicyAux(-, -, int63); + v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -); + + // Primitive Profile With Invalid Additions Or Deletions attribute + v_createPrimitveProfile := valueof(m_createPrimitveProfileWithInvalidAdditionsOrDeletions({f_getOriginator(v_aeIndex)})); + + f_send(e_mcaPort, m_request(v_createPrimitveProfile)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4137))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": IUT rejected Primitve Profile with PRIMITIVE_PROFILE_BAD REQUEST"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Mismatch in status response code from IUT!"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": IUT accepted Primitve Profile with invalid parametres/attributes in additions/deletions!"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer from IUT for the last Request!"); + } + } + + //Postamble + f_cse_postamble_deleteResources(); + + //Tear down + f_cf01Down(); + } // f_CSE_PP_007 + + + /** + * @desc Check that the IUT rejects the update request of <primitiveProfile> resource when the request parameters or resource attributes defined in the additions and deletions attributes of the referenced <primitiveProfile> resource are not valid + * + */ + testcase TC_CSE_PP_008() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + + v_ae1.start(f_CSE_PP_008()); + v_ae1.done; + } + + function f_CSE_PP_008() runs on AeSimu system CseSystem { + // Local variables + var template RequestPrimitive v_createPrimitveProfile; + var integer v_aeIndex := -1; + var integer v_primitiveProfileIndex := -1; + var MsgIn v_response; + var RequestPrimitive v_updatePrimitiveProfileRequest; + + // Preamble + f_cse_createAccessControlPolicyAux(-, -, int63); + v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -); + + // Primitive Profile with add atribute "maxByte" = "100" for content resource. + v_createPrimitveProfile := m_createPrimitveProfileAddContainerMaxByte100({f_getOriginator(v_aeIndex)}); + v_primitiveProfileIndex := f_cse_createResource(int62, v_createPrimitveProfile, v_aeIndex); + + v_updatePrimitiveProfileRequest := f_getUpdateRequestPrimitive(int62, v_primitiveProfileIndex, m_updatePrimitiveProfileWithInvalidAdditionsOrDeletions); + + f_send(e_mcaPort, m_request(v_updatePrimitiveProfileRequest)); + tc_ac.start; + alt { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4137))) -> value v_response { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": IUT rejected Primitve Profile with PRIMITIVE_PROFILE_BAD REQUEST"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Mismatch in status response code from IUT!"); + } + [] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": IUT accepted Primitve Profile with invalid parametres/attributes in additions/deletions!"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer from IUT for the last Request!"); + } + } + + //Postamble + f_cse_postamble_deleteResources(); + + //Tear down + f_cf01Down(); + } // f_CSE_PP_008 + + /** * @desc Check that the IUT rejects the creation of a <primitiveProfile> resource when a mutual exclusivity check is failed, on the names of the attributes or parameters specified in the additions and deletions attributes. * @@ -18603,4 +19015,4 @@ module OneM2M_Testcases_CSE_Release_4 { }//end group CSE -} \ No newline at end of file +}