From 6724b5a7a0db04a3c46794313e377d12af789655 Mon Sep 17 00:00:00 2001 From: reinaortega <miguelangel.reinaortega@etsi.org> Date: Tue, 5 Nov 2019 12:23:37 +0100 Subject: [PATCH] Added TC_CSE_SEC_ROL_CRE_004 and related templates --- LibOneM2M/OneM2M_Functions.ttcn | 6 ++- LibOneM2M/OneM2M_Templates.ttcn | 48 +++++++++++++++++--- LibOneM2M/OneM2M_Types.ttcn | 45 +++++++++++++++++++ LibOneM2M/OneM2M_TypesAndValues.ttcn | 1 + OneM2M_Testcases_CSE_Release_3.ttcn | 66 +++++++++++++++++++++++++++- 5 files changed, 158 insertions(+), 8 deletions(-) diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 8023039..116570d 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -6331,11 +6331,13 @@ module OneM2M_Functions { * @desc Creates and assigns a token resource to the Originator in the Token Repository */ external function fx_assign_originatorToken() return charstring; - + /** * @desc Generates a oneM2M JSON Web Token. */ - external function fx_generateJWT() return DynAuthJWT; + external function fx_generateJWT() return DynAuthJWT; + + } // end externalFunctions diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 23fa7ff..8b874c3 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -1522,7 +1522,7 @@ module OneM2M_Templates { resourceType := int10030, primitiveContent := {timeSeriesInstanceAnnc := mw_contentCreateTimeSeriesInstanceAnncBase} }; - + /** * @desc Base CREATE request primitive for role resource */ @@ -1531,6 +1531,15 @@ module OneM2M_Templates { resourceType := int31, primitiveContent := {role := m_contentCreateRole()} }; + + /** + * @desc Base CREATE request primitive for token resource + */ + template (value) RequestPrimitive m_createTokenBase modifies m_create := { + requestIdentifier := testcasename() & "-m_createToken", + resourceType := int32, + primitiveContent := {token := m_contentCreateToken()} + }; /** * @desc Reception template for CREATE DeviceAirConditioner @@ -3946,12 +3955,12 @@ module OneM2M_Templates { contentSize := omit,//NP choice := omit//NP }; - + template (value) MissingData m_missingData( in XSD.NonNegativeInteger p_number, in XSD.Duration p_duration) := { number := p_number, duration := p_duration }; - + /** * @desc Base primitiveContent for CREATE operation for Role resource * @param p_name Resource name @@ -3976,7 +3985,36 @@ module OneM2M_Templates { tokenLink := omit, //O choice := omit//O }; - + + /** + * @desc Base primitiveContent for CREATE operation for Token resource + * @param p_name Resource name + */ + template (value) Token_optional m_contentCreateToken (in template (omit) XSD.String p_name := c_defaultRoleResourceName):= { + resourceName := p_name,//O + resourceType := omit,//NP + resourceID := omit,//NP + parentID := omit,//NP + creationTime := omit,//NP + lastModifiedTime := omit,//NP + labels := omit,//O + accessControlPolicyIDs := omit, //O + expirationTime := omit,//O + dynamicAuthorizationConsultationIDs := omit, //O + tokenID := "roleID@a.b", //M + tokenObject := fx_generateJWT(), //M + version := omit, //O + issuer := omit, //O + holder := omit, //O + notBefore := omit,//O + notAfter := omit,//O + tokenName := omit,//O + audience := omit,//O + permissions := omit,//O + extension_ := omit,//O + choice := omit//O + }; + /** * @desc Base primitiveContent for CREATE operation for BinarySwitch resource * @param @@ -4624,7 +4662,7 @@ module OneM2M_Templates { bath := *,//O choice := omit//NP }; - + }//end group ContentCreate group ContentUpdate { diff --git a/LibOneM2M/OneM2M_Types.ttcn b/LibOneM2M/OneM2M_Types.ttcn index 64a391e..2230332 100644 --- a/LibOneM2M/OneM2M_Types.ttcn +++ b/LibOneM2M/OneM2M_Types.ttcn @@ -2095,6 +2095,7 @@ type union PrimitiveContent { DynamicAuthorizationConsultation_optional dynamicAuthorizationConsultation, GenericInterworkingOperationInstance_optional genericInterworkingOperationInstance, Role_optional role, + Token_optional token, //HAIM DeviceAirConditioner_optional deviceAirConditioner, DeviceClothesWasherDryer_optional deviceClothesWasherDryer, @@ -28465,6 +28466,50 @@ group OptionalResourceTypes { variant (choice.subscription_list[-]) "name as 'subscription'"; }; + type record Token_optional + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + ListOfURIs dynamicAuthorizationConsultationIDs optional, + TokenID tokenID optional, + DynAuthJWT tokenObject optional, + XSD.String version optional, + XSD.ID issuer optional, + XSD.ID holder optional, + Timestamp notBefore optional, + Timestamp notAfter optional, + XSD.String tokenName optional, + ListOfM2MID audience optional, + TokenPermissions permissions optional, + XSD.String extension_ optional, + union { + record length(1 .. infinity) of ChildResourceRef childResource_list, + record length(1 .. infinity) of union { + Subscription subscription, + Transaction transaction + } choice_list + } choice optional + } + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + variant (extension_) "name as 'extension'"; + variant (choice) "untagged"; + variant (choice.childResource_list) "untagged"; + variant (choice.childResource_list[-]) "name as 'childResource'"; + variant (choice.choice_list) "untagged"; + variant (choice.choice_list[-]) "untagged"; + }; + + }//end group OptionalResourceTypes diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn index b57c8df..deaf92c 100644 --- a/LibOneM2M/OneM2M_TypesAndValues.ttcn +++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn @@ -43,6 +43,7 @@ module OneM2M_TypesAndValues { const XSD.String c_defaultTimeSeriesAnncResourceName := "MyTimeSeriesAnncResource"; const XSD.String c_defaultTimeSeriesInstanceResourceName := "MyTimeSeriesInstanceResource"; const XSD.String c_defaultRoleResourceName := "MyRoleResource"; + const XSD.String c_defaultTokenResourceName := "MyTokenResource"; const XSD.String c_defaultGenericInterworkingServiceResourceName := "MyGenericInterworkingServiceResource"; //<genericInterworkingService> const XSD.ID c_aeAuxName := "MyAe"; const XSD.String c_defaultAE2Name := "MyAe2"; diff --git a/OneM2M_Testcases_CSE_Release_3.ttcn b/OneM2M_Testcases_CSE_Release_3.ttcn index ce68a58..3f85ba7 100644 --- a/OneM2M_Testcases_CSE_Release_3.ttcn +++ b/OneM2M_Testcases_CSE_Release_3.ttcn @@ -7577,7 +7577,7 @@ module OneM2M_Testcases_CSE_Release_3 { // Preamble vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSEBase); -// Test Body + // Test Body var RequestPrimitive v_createRequest := f_getCreateRequestPrimitive(int31, m_createRoleBase, -1); f_send(e_mcc_port, m_request(v_createRequest)); @@ -7608,6 +7608,70 @@ module OneM2M_Testcases_CSE_Release_3 { }//end f_CSE_SEC_ROL_CRE_002 + + /** + * @desc Check that the IUT successfully creates the <token> resource requested by the Authorization Authority + * + */ + testcase TC_CSE_SEC_ROL_CRE_004() runs on Tester system CseSystem { + //Local variables + var CseSimu v_cse1 := CseSimu.create("CSE1") alive; + + v_cse1.start(f_CSE_SEC_ROL_CRE_004()); + v_cse1.done; + } + + function f_CSE_SEC_ROL_CRE_004() runs on CseSimu system CseSystem { + // Local variables + var MsgIn v_response; + var integer v_aeIndex := -1; + var XSD.ID v_targetResourceAddress; + + // Test control + if(not(PICS_ROL_SUPPORT)) { + setverdict(inconc, __SCOPE__ & ": Role Based Access Control Procedure support is required to run this test case"); + stop; + } + + // Test component configuration + f_cf04Up(); + + // Test adapter configuration + + // Preamble + vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSEBase); + + // Test Body + var RequestPrimitive v_createRequest := f_getCreateRequestPrimitive(int32, m_createTokenBase, -1); + f_send(e_mcc_port, m_request(v_createRequest)); + + tc_ac.start; + alt { + [] mccPort.receive(mw_response(mw_responsePrimitive(int2001))) { + tc_ac.stop; + setverdict(pass, __SCOPE__ & ": Token resource successfully created"); + } + [] mccPort.receive(mw_response(mw_responsePrimitiveOK)) { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Wrong response status code in the response"); + } + [] mccPort.receive(mw_response(mw_responsePrimitiveKO)) { + tc_ac.stop; + setverdict(fail, __SCOPE__ & ": Error while creating token resource"); + } + [] tc_ac.timeout { + setverdict(fail, __SCOPE__ & ": No answer while creating the resource"); + } + } + + // Postamble + f_cse_postamble_deleteResourcesCSE(); + + // Tear down + f_cf04Down(); + + }//end f_CSE_SEC_ROL_CRE_004 + }//end group Create -- GitLab