diff --git a/SOL003/VNFLifecycleManagement-API_egm/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API_egm/IndividualVNFInstance.robot new file mode 100644 index 0000000000000000000000000000000000000000..cd2f229f5efcbb1d68a45ac611395397a9715389 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API_egm/IndividualVNFInstance.robot @@ -0,0 +1,107 @@ +*** Settings *** +# Suite setup Expect spec SOL003-VNFLifecycleManagement-API.yaml +Resource variables.txt +Library REST http://${VNFM_HOST}:${VNFM_PORT} +... spec=SOL003-VNFLifecycleManagement-API.yaml +Documentation This resource represents an individual VNF instance. The client can use this resource to modify and delete the +... underlying VNF instance, and to read information about the VNF instance. + +*** Test Cases *** +Post Individual VNFInstance - Method not implemented + log Trying to perform a POST. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Log Validate Status code + Output response + Integer response status 405 + +Get Information about an individual VNF Instance + log Trying to get information about an individual VNF instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Log Validate Status code + Output response + Integer response status 200 + +PUT Individual VNFInstance - Method not implemented + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Log Validate Status code + Output response + Integer response status 405 + +PATCH Individual VNFInstance + [Documentation] Modify VNF Information + ... This method modifies an individual VNF instance resource. + ... Changes to the VNF configurable properties are applied to the configuration in the VNF instance, and are reflected in the representation of this resource. + ... Other changes are applied to the VNF instance information managed by the VNFM, and are reflected in the representation of this resource + log Trying to modify an individual VNF instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} ${PATCH_BODY_REQUEST} + Log Validate Status code + Output response + Integer response status 202 + +PATCH Individual VNFInstance Conflict + # TODO: Need to set the pre-condition of the test + [Documentation] Conflict + ... The operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. + ... Typically, this is due to the fact that another LCM operation is ongoing. The response body shall contain a ProblemDetails structure, in which the “detail” attribute should convey more information about the error. + log Trying to modify an individual VNF instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} ${PATCH_BODY_REQUEST_CONFLICT} + Log Validate Status code + Output response + Integer response status 409 + +PATCH Individual VNFInstance Precondition failed + # TODO: Need to set the pre-condition of the test + # TODO: According to the Etag mechanism principle (https://www.logicbig.com/quick-info/web/etag-header.html), a request header 'If-None-Match' is needed to trigger the Etag validation. + # But this request header is not mentioned in the spec + [Documentation] Precondition Failed + ... A precondition given in an HTTP request header is not fulfilled. + ... Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. + ... The response body should contain a ProblemDetails structure, in which the “detail” attribute should convey more information about the error. + log Trying to modify an individual VNF instance Precondition failed + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} ${PATCH_BODY_REQUEST} + Log Validate Status code + Output response + Integer response status 412 + +DELETE Individual VNFInstance + [Documentation] Delete VNF Identifier This method deletes an individual VNF instance resource. + log Trying to delete an individual VNF instance + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Log Validate Status code + Output response + Integer response status 204 + +DELETE Individual VNFInstance Conflict + # TODO: Need to set the pre-condition of the test. The VnfInstance shall in INSTANTIATED state + [Documentation] Conflict + ... The operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. + ... Typically, this is due to the fact that the VNF instance resource is in INSTANTIATED state. + ... The response body shall contain a ProblemDetails structure, in which the “detail” attribute should convey more information about the error. + log Trying to delete an individual VNF instance Conflict + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId} + Log Validate Status code + Output response + Integer response status 409 + + \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API_egm/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API_egm/VNFInstances.robot index 8ddb4d5a4b356dc3cd15df9eb719d977e1311179..8db50b78ed7965dae515b14d5dccaa9e7e92e57f 100644 --- a/SOL003/VNFLifecycleManagement-API_egm/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API_egm/VNFInstances.robot @@ -2,20 +2,19 @@ # Suite setup Expect spec SOL003-VNFLifecycleManagement-API.yaml Resource variables.txt Library REST http://${VNFM_HOST}:${VNFM_PORT} -#Library RequestsLibrary ... spec=SOL003-VNFLifecycleManagement-API.yaml *** Test cases *** Create a new vnfInstance - Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiVersion} + Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiVersion}/vnf_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances {"vnfdId": "${vnfId}","vnfInstanceName": "${vnfInstanceName}", "vnfInstanceDescription": "${vnfInstanceDescription}"} + Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances {"vnfdId": "${vnfInstanceId}","vnfInstanceName": "${vnfInstanceName}", "vnfInstanceDescription": "${vnfInstanceDescription}"} Output response Integer response status 201 - Log Status code validated + Log Status code validated # Create a new vnfInstance Bad Request # Log Create VNF instance by POST to /vnflcm/v1/vnf_instances diff --git a/SOL003/VNFLifecycleManagement-API_egm/variables.txt b/SOL003/VNFLifecycleManagement-API_egm/variables.txt index 3f40b435eb0cb0bb2db1b05cc9b9918b8732c637..195394b6f66e384f06eb3de419a92967de4f6352 100644 --- a/SOL003/VNFLifecycleManagement-API_egm/variables.txt +++ b/SOL003/VNFLifecycleManagement-API_egm/variables.txt @@ -7,13 +7,16 @@ ${VNFM_SCHEMA} https ${NFVO_SCHEMA} https ${AUTHORIZATION} Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ== ${CONTENT_TYPE} application/json +${CONTENT_TYPE_PATCH} application/merge-patch+json +${PATCH_BODY_REQUEST} {} +${PATCH_BODY_REQUEST_CONFLICT} {} ${ACCEPT} application/json ${apiRoot} / ${apiName} vnflcm ${apiVersion} v1 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX -${vnfId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${vnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${vnfInstanceName} Test-VnfInstance ${vnfInstanceDescription} description vnf ${vnfInstanceDescription_Update} Updated description vnf