diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index ee78a1dfc93bff850a9cc0d1271d03e08247db72..20b3e13192e37803e5a18f28de009dfe113e260f 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -3658,7 +3658,7 @@ module OneM2M_Functions { vc_localResourcesList[p_localResourceIndex].resource.remoteCSE.labels := p_resource.remoteCSE.labels; } if(ispresent(p_resource.remoteCSE.announceTo)) { - v_primitiveContent := {remoteCSEAnnc := m_contentCreateRemoteCSEAnnc}; + v_primitiveContent := {remoteCSEAnnc := valueof(m_contentCreateRemoteCSEAnnc)}; v_primitiveContent := f_setLink(v_primitiveContent, f_getLocalResourceAddress(p_localResourceIndex)); vc_cse2.start(f_generateAndSetLocalResource(m_primitiveContentRemoteCSEAnnc(v_primitiveContent.remoteCSEAnnc), -, int10016)); f_cseSimu_checkComponentDoneAndGetVerdict(vc_cse2); diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 62d8b2342d698e3094b16de7b6aad792edf89293..c332349daa79eb5e09c505010ed344344f600fb0 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -897,7 +897,7 @@ module OneM2M_Templates { * @param p_appId * @param p_stemId */ - template (value) RequestPrimitive m_createAEAnnc(template (omit) AcpType p_accessControlPolicyIds := omit, XSD.ID p_parentResourceAddress, template (omit) XSD.ID p_from := omit, XSD.ID p_appId, XSD.ID p_stemId := "") modifies m_create:= { + template (value) RequestPrimitive m_createAEAnnc(template (omit) AcpType p_accessControlPolicyIds := omit, XSD.ID p_parentResourceAddress, template (omit) XSD.ID p_from := omit, template (omit) XSD.ID p_appId, XSD.ID p_stemId := "") modifies m_create:= { to_ := p_parentResourceAddress, from_ := p_from,//PX_AE_ID_STEM,//TODO We should use omit, "s", or "c" requestIdentifier := testcasename() & "-m_createAEAnnc", @@ -913,11 +913,11 @@ module OneM2M_Templates { * @param p_appId * @param p_stemId */ - template (value) RequestPrimitive m_createAEAnncBase(template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) XSD.ID p_from := omit, XSD.ID p_appId, XSD.ID p_stemId := "") modifies m_create:= { + template (value) RequestPrimitive m_createAEAnncBase(template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) XSD.ID p_from := omit, template (omit) XSD.ID p_appId, XSD.AnyURI p_link := "NotInitialized") modifies m_create:= { from_ := p_from,//PX_AE_ID_STEM,//TODO We should use omit, "s", or "c" requestIdentifier := testcasename() & "-m_createAEAnnc", resourceType := int10002, - primitiveContent := {aEAnnc := m_contentCreateAEAnnc({"Credential-ID:None"}, p_accessControlPolicyIds, p_appId, p_stemId)} + primitiveContent := {aEAnnc := m_contentCreateAEAnnc({"Credential-ID:None"}, p_accessControlPolicyIds, p_appId, p_link)} }; /** @@ -2394,33 +2394,33 @@ module OneM2M_Templates { * @param p_appId App ID * @param p_nodeLink Node link */ - template AEAnnc_optional m_contentCreateAEAnnc (in template (omit) Labels p_labels, in template (omit) AcpType p_accessControlPolicyIds, XSD.ID p_appId := PX_TS_AE1.appId, in XSD.AnyURI p_link := "") := { - resourceName := omit,//O TODO - resourceType := omit,//NP - resourceID := omit,//NP - parentID := omit,//NP - creationTime := omit,//NP - lastModifiedTime := omit,//NP - labels := p_labels,//O - accessControlPolicyIDs := p_accessControlPolicyIds,//O - expirationTime := "20301231T012345",//O + template (value) AEAnnc_optional m_contentCreateAEAnnc (in template (omit) Labels p_labels, in template (omit) AcpType p_accessControlPolicyIds, template (omit) XSD.ID p_appId := PX_TS_AE1.appId, in template (omit) XSD.AnyURI p_link := omit) := { + resourceName := omit,//NA + resourceType := omit,//NA + resourceID := omit,//NA + parentID := omit,//NA + creationTime := omit,//NA + lastModifiedTime := omit,//NA + labels := p_labels,//MA + accessControlPolicyIDs := p_accessControlPolicyIds,//MA Special case, mandatory for announced resources + expirationTime := "20301231T012345",//MA link := p_link,//M TODO Put the right value dynamicAuthorizationConsultationIDs := omit, //TODO Check whether it is optional or mandatory for create operation - appName := omit,//O - app_ID := p_appId,//M - aE_ID := omit,//NP + appName := omit,//OA + app_ID := p_appId,//OA + aE_ID := omit,//OA pointOfAccess := omit, //{"http://127.0.0.1:1400/monitor"},//O //{"http://192.168.1.92:18080/notifications/AE"}, // TODO: Check this => AE PoA - ontologyRef := omit,//O - nodeLink := omit,//NP - requestReachability := false,//M - contentSerialization := omit,//O - e2eSecInfo := omit, //O TODO Check whether it is optional or mandatory for create operation - supportedReleaseVersions := {"3"}, //M - registrationStatus := omit,//O - trackRegistrationPoints := omit,//O - sessionCapabilities := omit,//O - triggerEnable := omit,//O - activityPatternElements := omit,//O + ontologyRef := omit,//OA + nodeLink := omit,//OA + requestReachability := omit,//OA + contentSerialization := omit,//OA + e2eSecInfo := omit, //MA TODO Check whether it is optional or mandatory for create operation + supportedReleaseVersions := omit, //MA + registrationStatus := omit,//OA + trackRegistrationPoints := omit,//OA + sessionCapabilities := omit,//OA + triggerEnable := omit,//OA + activityPatternElements := omit,//OA choice := omit//NP }; @@ -2442,7 +2442,7 @@ module OneM2M_Templates { accessControlPolicyIDs := p_accessControlPolicyIds,//MA O expirationTime := ?,//MA M link := p_link,//M - dynamicAuthorizationConsultationIDs := omit, //OA O + dynamicAuthorizationConsultationIDs := *, //OA O appName := *,//OA O app_ID := *,//OA M aE_ID := *,//OA M @@ -6062,27 +6062,27 @@ module OneM2M_Templates { }; template AEAnnc_optional mw_contentAeAnnc_base := { - resourceName := ?,//M - resourceType := ?,//M - resourceID := ?,//M - parentID := ?,//M - creationTime := ?,//M - lastModifiedTime := ?,//M - labels := *,//O - accessControlPolicyIDs := *,//O - expirationTime := ?,//M + resourceName := ?,//M NA + resourceType := ?,//M NA + resourceID := ?,//M NA + parentID := ?,//M NA + creationTime := ?,//M NA + lastModifiedTime := ?,//M NA + labels := *,//O MA + accessControlPolicyIDs := *,//O MA Special case: acpi mandatory for announced resources + expirationTime := ?,//M MA link := ?,//M, - dynamicAuthorizationConsultationIDs := *, //O - appName := *,//O - app_ID := ?,//M - aE_ID := ?,//M - pointOfAccess := *,//O - ontologyRef := *,//O - nodeLink := *,//O - requestReachability := ?,//M - contentSerialization := *,//O - e2eSecInfo:= *, //O - supportedReleaseVersions := ?,//M + dynamicAuthorizationConsultationIDs := *, //O OA + appName := *,//O OA + app_ID := *,//M OA + aE_ID := *,//M OA + pointOfAccess := *,//O OA + ontologyRef := *,//O OA + nodeLink := *,//O OA + requestReachability := *,//M OA + contentSerialization := *,//O OA + e2eSecInfo:= *, //O MA + supportedReleaseVersions := *,//O MA registrationStatus := *,//O, trackRegistrationPoints := *,//O, sessionCapabilities := *,//O, diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index b9feccdc0b83e2340a697925d706ce15d7e17ca5..2c66d5d8920c7b9c1ddf79f61af8f8e48b34d964 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -5962,10 +5962,13 @@ module OneM2M_PermutationFunctions { // Preamble v_acpAuxIndex := f_cse_preamble_createAcpAux(-, int59);//c_CRDNDi) - v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpAuxIndex].resource)}, -);//c_CRDNDi); + v_aeIndex := f_cse_preamble_registerAe(-, -); f_cse_preamble_subscriptionVerification(v_ae2Index, p_createRequestPrimitive, p_resourceType); + if(p_resourceType != int1) { + p_createRequestPrimitive := f_setAcpId(p_createRequestPrimitive,{f_getResourceId(vc_resourcesList[v_acpAuxIndex].resource)});//c_CRDNDi); + } if(p_resourceType != int18) { v_parentIndex := v_aeIndex;//For resources that can have AE resource as parent } @@ -8019,9 +8022,9 @@ module OneM2M_PermutationFunctions { tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int4102))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responseDiscovery({}))) -> value v_response { tc_ac.stop; - setverdict(pass, __SCOPE__ & ": Contents Unacceptable"); + setverdict(pass, __SCOPE__ & ": Expected no match due to conflicting filter criteria "); } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; @@ -8434,7 +8437,7 @@ module OneM2M_PermutationFunctions { // Preamble v_createRequest := f_getCreateRequestPrimitive(int1, m_createAcpBase, -1); v_currentTime := fx_generateTimestamp(); - v_accessControlRule.accessControlContexts_list := {{{"* * * * " & int2str(f_getMonth(v_currentTime)) & " *"}, omit, omit}}; + v_accessControlRule.accessControlContexts_list := {{{"* * * * " & int2str(f_getMonth(v_currentTime)) & " * *"}, omit, omit}}; v_createRequest.primitiveContent.accessControlPolicy.privileges.accessControlRule_list := {v_accessControlRule}; vc_acpAuxIndex := f_cse_createResource(int1, v_createRequest); // CSE child resource @@ -8504,7 +8507,7 @@ module OneM2M_PermutationFunctions { } else { v_month := v_month + 1; } - v_accessControlRule.accessControlContexts_list := {{{"* * * * " & int2str(v_month) & " *"}, omit, omit}}; + v_accessControlRule.accessControlContexts_list := {{{"* * * * " & int2str(v_month) & " * *"}, omit, omit}}; v_createRequest.primitiveContent.accessControlPolicy.privileges.accessControlRule_list := {v_accessControlRule}; vc_acpAuxIndex := f_cse_createResource(int1, v_createRequest); // CSE child resource diff --git a/OneM2M_Testcases_CSE_Release_1.ttcn b/OneM2M_Testcases_CSE_Release_1.ttcn index e6130dc7cb2ccff146b3cae7b50c3ecbabe95fbc..ba9bd8f1bf6b76235d88152477bb6c4a0530093c 100644 --- a/OneM2M_Testcases_CSE_Release_1.ttcn +++ b/OneM2M_Testcases_CSE_Release_1.ttcn @@ -455,6 +455,10 @@ module OneM2M_Testcases_CSE_Release_1 { var template RequestPrimitive v_requestPrimitive; //Test control + if(not(PICS_MN_CSE)) { + setverdict(inconc, __SCOPE__ & ": IUT shall be MN-CSE to run this test case"); + stop; + } // Test component configuration f_cf02UpCseSimuMaster(int1); @@ -590,6 +594,10 @@ module OneM2M_Testcases_CSE_Release_1 { template XSD.AnyURI v_link := pattern "{v_cseId}/S"; //Test control + if(not(PICS_MN_CSE)) { + setverdict(inconc, __SCOPE__ & ": IUT shall be MN-CSE to run this test case"); + stop; + } // Test component configuration f_cf02UpCseSimuMaster(int1); @@ -1119,6 +1127,22 @@ module OneM2M_Testcases_CSE_Release_1 { v_ae1.start(f_CSE_REG_CRE_012(v_create)); v_ae1.done; } + + testcase TC_CSE_REG_CRE_012_AE_NL() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, omit, PX_TS_AE1.aeIdStem); + v_create.primitiveContent.aE.nodeLink := "MyNodeResourceID"; + v_ae1.start(f_CSE_REG_CRE_012(v_create)); + v_ae1.done; + } + + testcase TC_CSE_REG_CRE_012_AE_OR() runs on Tester system CseSystem { + var AeSimu v_ae1 := AeSimu.create("AE1") alive; + var template RequestPrimitive v_create := m_createAe(PX_TS_AE1.appId, omit, PX_TS_AE1.aeIdStem); + v_create.primitiveContent.aE.ontologyRef := "MyOntologyReference"; + v_ae1.start(f_CSE_REG_CRE_012(v_create)); + v_ae1.done; + } } @@ -2036,7 +2060,7 @@ module OneM2M_Testcases_CSE_Release_1 { vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSEBase); //Test Body - v_request := valueof(m_createAEAnnc(-, f_getResourceAddress(vc_remoteCseIndex), PX_TS_CSE1.cseId & "/" & PX_ALLOWED_S_AE_IDS[0], PX_TS_AE1.appId, PX_TS_CSE1.cseId & "/" & PX_ALLOWED_S_AE_IDS[0])); + v_request := valueof(m_createAEAnnc(-, f_getResourceAddress(vc_remoteCseIndex), PX_TS_CSE1.cseId & "/" & PX_ALLOWED_S_AE_IDS[0], omit, PX_TS_CSE1.cseId & "/" & PX_ALLOWED_S_AE_IDS[0])); v_request := f_getCreateRequestPrimitive(int10002, v_request, vc_remoteCseIndex); v_primitiveContent.aEAnnc := mw_contentAeAnnc_base; @@ -7608,7 +7632,7 @@ module OneM2M_Testcases_CSE_Release_1 { testcase TC_CSE_DMR_UPD_016_ACP_PVS() runs on Tester system CseSystem { var AeSimu v_ae1 := AeSimu.create("AE1") alive; - var SetOfAcrs v_privileges_1 := {{valueof(m_createAcr({PX_SUPER_AE_ID}, int61))}}; + var SetOfAcrs v_privileges_1 := {{valueof(m_createAcr({PX_SUPER_AE_ID}, int62))}}; var template RequestPrimitive v_updateRequest := m_updateAcpBase; var ResponsePrimitive v_responsePrimitive; var PrimitiveContent v_primitiveContentRetrieveResource; @@ -10152,9 +10176,9 @@ module OneM2M_Testcases_CSE_Release_1 { tc_ac.start; alt { - [] mcaPort.receive(mw_response(mw_responsePrimitive(int4102))) -> value v_response { + [] mcaPort.receive(mw_response(mw_responsePrimitive(int4000))) -> value v_response { tc_ac.stop; - setverdict(pass, __SCOPE__ & ": Contents Unacceptable"); + setverdict(pass, __SCOPE__ & ": Discovery properly rejected due to invalid filter criteria format"); } [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { tc_ac.stop; @@ -10179,7 +10203,7 @@ module OneM2M_Testcases_CSE_Release_1 { group g_CSE_DIS_008{ /** - * @desc Check that the IUT responds the originator with an error when the originator sends a request to discover the resource TARGET_RESOURCE_ADDRESS including two conflicted filter criteria of different type FILTER_CRITERIA_CONDITION_1 and FILTER_CRITERIA_CONDITION_2 (E.G. createBefore < createdAfter) + * @desc Check that the IUT responds the originator with a success response when the originator sends a request to discover the resource TARGET_RESOURCE_ADDRESS including two conflicted filter criteria of different type FILTER_CRITERIA_CONDITION_1 and FILTER_CRITERIA_CONDITION_2 (E.G. createBefore < createdAfter) * */ testcase TC_CSE_DIS_008_CRB_CRA() runs on Tester system CseSystem { @@ -10370,7 +10394,7 @@ module OneM2M_Testcases_CSE_Release_1 { [] mcaPort.receive(mw_response(mw_responseDiscovery)) -> value v_response { tc_ac.stop; while (v_i_cont<lengthof(v_response.primitive.responsePrimitive.primitiveContent.uRIList)){ - if (f_isNonHierarchical(v_response.primitive.responsePrimitive.primitiveContent.uRIList[v_i_cont])) { + if (f_isHierarchical(v_response.primitive.responsePrimitive.primitiveContent.uRIList[v_i_cont])) { setverdict(pass, __SCOPE__ & ": Hierarchical address form present in URIList[" & int2str(v_i_cont) & "] element"); } else { setverdict(fail, __SCOPE__ & ": Hierarchical address form absent in URIList[" & int2str(v_i_cont) & "] element");