re base code
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / resource / UpdateResourceMetadataTest.java
index 2b84af9..bfd64c3 100644 (file)
 
 package org.openecomp.sdc.ci.tests.execute.resource;
 
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertNotNull;
-import static org.testng.AssertJUnit.assertTrue;
-
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
+import com.google.gson.Gson;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.junit.rules.TestName;
@@ -44,12 +33,7 @@ import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
 import org.openecomp.sdc.ci.tests.api.Urls;
 import org.openecomp.sdc.ci.tests.config.Config;
 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
-import org.openecomp.sdc.ci.tests.datatypes.enums.ErrorInfo;
-import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
-import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
-import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
-import org.openecomp.sdc.ci.tests.datatypes.enums.ServiceCategoriesEnum;
-import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
+import org.openecomp.sdc.ci.tests.datatypes.enums.*;
 import org.openecomp.sdc.ci.tests.datatypes.expected.ExpectedResourceAuditJavaObject;
 import org.openecomp.sdc.ci.tests.datatypes.http.HttpHeaderEnum;
 import org.openecomp.sdc.ci.tests.datatypes.http.HttpRequest;
@@ -70,54 +54,57 @@ import org.testng.AssertJUnit;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import com.google.gson.Gson;
+import java.io.FileNotFoundException;
+import java.util.*;
+
+import static org.testng.AssertJUnit.*;
 
 public class UpdateResourceMetadataTest extends ComponentBaseTest {
-       private static Logger logger = LoggerFactory.getLogger(UpdateResourceMetadataTest.class.getName());
-       protected List<String> Empty_List = new ArrayList<String>();
-       protected String extendedChars;
+    private static Logger logger = LoggerFactory.getLogger(UpdateResourceMetadataTest.class.getName());
+    protected List<String> Empty_List = new ArrayList<String>();
+    protected String extendedChars;
 
-       protected final String contentTypeHeaderData = "application/json";
-       protected final String acceptHeaderDate = "application/json";
-       protected final String CHARSET_ISO_8859 = "charset=ISO-8859-1";
+    protected final String contentTypeHeaderData = "application/json";
+    protected final String acceptHeaderDate = "application/json";
+    protected final String CHARSET_ISO_8859 = "charset=ISO-8859-1";
 
-       public static TestName name = new TestName();
-       protected User sdncModifierDetails;
-       protected ResourceReqDetails resourceDetails;
+    public static TestName name = new TestName();
+    protected User sdncModifierDetails;
+    protected ResourceReqDetails resourceDetails;
 
-       public UpdateResourceMetadataTest() {
-               super(name, UpdateResourceMetadataTest.class.getName());
+    public UpdateResourceMetadataTest() {
+        super(name, UpdateResourceMetadataTest.class.getName());
 
-       }
+    }
 
-       public String extendedCharsStringBuilder() throws Exception {
-               char[] extendedCharsArray = new char[128];
-               char ch = 128;
-               for (int i = 0; i < extendedCharsArray.length - 1; i++) {
-                       extendedCharsArray[i] = ch;
-                       ch++;
-               }
-               extendedChars = new String(extendedCharsArray);
-               return extendedChars;
+    public String extendedCharsStringBuilder() throws Exception {
+        char[] extendedCharsArray = new char[128];
+        char ch = 128;
+        for (int i = 0; i < extendedCharsArray.length - 1; i++) {
+            extendedCharsArray[i] = ch;
+            ch++;
+        }
+        extendedChars = new String(extendedCharsArray);
+        return extendedChars;
 
-       }
+    }
 
-       @BeforeMethod
-       public void setup() throws Exception {
-               sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
-               resourceDetails = defineResourse();
+    @BeforeMethod
+    public void setup() throws Exception {
+        sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
+        resourceDetails = defineResourse();
 
-       }
+    }
 
-       // Keep
-       @Test
-       public void UpdateDerivedFromSuccess() throws Exception {
+    // Keep
+    @Test
+    public void UpdateDerivedFromSuccess() throws Exception {
 
-               String oldDerivedFromName = NormativeTypesEnum.ROOT.getNormativeName();
-               String newDerivedFromName = NormativeTypesEnum.SOFTWARE_COMPONENT.getNormativeName();
+        String oldDerivedFromName = NormativeTypesEnum.ROOT.getNormativeName();
+        String newDerivedFromName = NormativeTypesEnum.SOFTWARE_COMPONENT.getNormativeName();
 
-               // Getting both derived from resources for validation
-               /*
+        // Getting both derived from resources for validation
+        /*
                 * RestResponse resourceByNameAndVersion =
                 * resourceUtils.getResourceByNameAndVersion(sdncModifierDetails,
                 * oldDerivedFromName, "1.0");
@@ -135,1181 +122,1181 @@ public class UpdateResourceMetadataTest extends ComponentBaseTest {
                 * resourceUtils.parseResourceResp(resourceByNameAndVersion);
                 */
 
-               // Derived from set to Database
-               List<String> derivedFrom = new ArrayList<>();
-               derivedFrom.add(oldDerivedFromName);
-               resourceDetails.setDerivedFrom(derivedFrom);
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               AssertJUnit.assertEquals("Check response code after create resource", 201,
-                               restResponse.getErrorCode().intValue());
-               Resource currentResource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
-
-               derivedFrom.clear();
-               derivedFrom.add(newDerivedFromName);
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
-                               sdncModifierDetails, currentResource.getUniqueId(), "");
-               AssertJUnit.assertEquals("Check response code after create resource", 200,
-                               updatedRestResponse.getErrorCode().intValue());
-
-       }
-
-       protected ResourceReqDetails defineUpdateResourceWithNonUpdatableFields(Resource resourceBeforeUpdate) {
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceBeforeUpdate.getName());
-
-               updatedResourceDetails.setVersion("mumu");
-               updatedResourceDetails.setIsAbstract(true);
-               updatedResourceDetails.setIsHighestVersion(true);
-               updatedResourceDetails.setCreatorUserId("df4444");
-               updatedResourceDetails.setCreatorFullName("John Doe");
-               updatedResourceDetails.setLastUpdaterUserId("gf5646");
-               updatedResourceDetails.setLastUpdaterFullName("Viktor Tzoy");
-               updatedResourceDetails.setCreationDate(new Long(4444));
-               updatedResourceDetails.setLastUpdateDate(new Long("534535"));
-               updatedResourceDetails.setLifecycleState(LifecycleStateEnum.READY_FOR_CERTIFICATION);
-               updatedResourceDetails.setCost("6.1");
-               updatedResourceDetails.setLicenseType("Installation");
-               updatedResourceDetails.setUUID("dfsfsdf");
-               return updatedResourceDetails;
-       }
-
-       public void UpdateResourceNotFoundTest() throws Exception {
-               // init ADMIN user
-               User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-
-               String resourceName = "cisco4";
-               // update resource
-               String description = "updatedDescription";
-               ArrayList<String> resourceTags = new ArrayList<String>();
-               resourceTags.add("tag2");
-               String category = ServiceCategoriesEnum.MOBILITY.getValue();
-               ArrayList<String> derivedFrom = new ArrayList<String>();
-               derivedFrom.add(NormativeTypesEnum.ROOT.getNormativeName());
-               String vendorName = "newOracle";
-               String vendorRelease = "2.5";
-               String contactId = "jh0003";
-               String icon = "myICON";
-
-               ResourceReqDetails updatedResourceDetails = new ResourceReqDetails(resourceName, description, resourceTags,
-                               category, derivedFrom, vendorName, vendorRelease, contactId, icon);
-               updatedResourceDetails.setUniqueId("dummyId");
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, "0.1");
-
-               // validate response
-               AssertJUnit.assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               AssertJUnit.assertNotNull("check error code exists in response after update resource",
-                               updatedRestResponse.getErrorCode());
-               AssertJUnit.assertEquals("Check response code after update resource", 404,
-                               updatedRestResponse.getErrorCode().intValue());
-               // String resourceId =
-               // UniqueIdBuilder.buildResourceUniqueId(resourceName, "0.1");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NOT_FOUND.name(), Arrays.asList("dummyId"),
-                               updatedRestResponse.getResponse());
-
-               resourceName = "";
-               // resourceId = UniqueIdBuilder.buildResourceUniqueId(resourceName,
-               // "0.1");
-               updatedResourceDetails = defineUpdatedResourse(resourceName);
-               updatedResourceDetails.setUniqueId("dummyId");
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
-                               "0.1");
-               AssertJUnit.assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               AssertJUnit.assertNotNull("check error code exists in response after update resource",
-                               updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NOT_FOUND.name(), Arrays.asList("dummyId"),
-                               updatedRestResponse.getResponse());
-
-       }
-
-       public char[] getInValidChars() throws Exception {
-
-               char[] extendedCharsArray = new char[59];
-               char ch = 1;
-               for (int i = 0; i < 44; i++) {
-                       extendedCharsArray[i] = ch;
-                       ch++;
-               }
-               ch = 58;
-               for (int i = 44; i < 51; i++) {
-                       extendedCharsArray[i] = ch;
-                       ch++;
-               }
-               ch = 91;
-               for (int i = 51; i < 55; i++) {
-                       extendedCharsArray[i] = ch;
-                       ch++;
-               }
-               ch = 123;
-               for (int i = 55; i < 59; i++) {
-                       extendedCharsArray[i] = ch;
-                       ch++;
-               }
-               return extendedCharsArray;
-       }
-
-       public char[] getTagInValidFormatChars() throws Exception {
-               // Tag format is the same as defined for "Resource Name" :
-               // Allowed characters: Alphanumeric (a-zA-Z0-9), space (' '), underscore
-               // ('_'), dash ('-'), dot ('.')
-               char[] notValidCharsArray = new char[30];
-               char ch = 33;
-               for (int i = 0; i < 12; i++) {
-                       notValidCharsArray[i] = ch;
-                       ch++;
-               }
-               notValidCharsArray[13] = 47;
-               ch = 58;
-               for (int i = 14; i < 21; i++) {
-                       notValidCharsArray[i] = ch;
-                       ch++;
-               }
-               ch = 91;
-               for (int i = 21; i < 24; i++) {
-                       notValidCharsArray[i] = ch;
-                       ch++;
-               }
-               notValidCharsArray[24] = 96;
-               ch = 123;
-               for (int i = 25; i < 30; i++) {
-                       notValidCharsArray[i] = ch;
-                       ch++;
-               }
-               return notValidCharsArray;
-       }
-
-       public void Validation_UpdateWithIncompleteJsonBodyTest() throws Exception {
-               // init ADMIN user
-               User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-
-               // define and create resource
-               ResourceReqDetails resourceDetails = defineResourse();
-               ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "0.1");
-               ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "1.0");
-               ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "1.1");
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceId = resourceDetails.getUniqueId();
-               resourceDetails.setUniqueId(ResponseParser.getUniqueIdFromResponse(restResponse));
-
-               // build Json Object
-               JSONObject jsonObject = JsonObjectBuilder(resourceDetails);
-
-               List<String> resource = new ArrayList<>();
-               resource.add("Resource");
-
-               // remove Description
-               UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "description",
-                               ActionStatus.COMPONENT_MISSING_DESCRIPTION.name(), resource);
-               // remove Tags
-               UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "tags",
-                               ActionStatus.COMPONENT_MISSING_TAGS.name(), Empty_List);
-               // remove Category
-               UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "category",
-                               ActionStatus.COMPONENT_MISSING_CATEGORY.name(), resource);
-               // remove VendorName
-               UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "vendorName",
-                               ActionStatus.MISSING_VENDOR_NAME.name(), Empty_List);
-               // remove VendorRelease
-               UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "vendorRelease",
-                               ActionStatus.MISSING_VENDOR_RELEASE.name(), Empty_List);
-               // remove AT&T Contact
-               UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "contactId",
-                               ActionStatus.COMPONENT_MISSING_CONTACT.name(), resource);
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails, "0.1");
-               // validate response
-               AssertJUnit.assertNotNull("check response object is not null after get resource", getRestResponse);
-               AssertJUnit.assertNotNull("check error code exists in response after get resource",
-                               getRestResponse.getErrorCode());
-               AssertJUnit.assertEquals("Check response code after update resource", 200,
-                               getRestResponse.getErrorCode().intValue());
-
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
-
-               ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "0.1");
-               ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "1.0");
-               ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "1.1");
-       }
-
-       // End of validation tests
-       // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-       protected ResourceReqDetails defineUpdatedResourse(String resourceName) {
-               String description = "updatedDescription";
-               ArrayList<String> resourceTags = new ArrayList<String>();
-               // Duplicate tags are allowed and should be de-duplicated by server side
-               resourceTags.add(resourceName);
-               resourceTags.add("tag1");
-               resourceTags.add("tag1");
-               resourceTags.add("tag2");
-               resourceTags.add("tag2");
-               String category = ServiceCategoriesEnum.VOIP.getValue();
-               ArrayList<String> derivedFrom = new ArrayList<String>();
-               derivedFrom.add(NormativeTypesEnum.ROOT.getNormativeName());
-               String vendorName = "updatedOracle";
-               String vendorRelease = "3.5";
-               String contactId = "jh0001";
-               String icon = "myUpdatedICON";
-
-               ResourceReqDetails resourceDetails = new ResourceReqDetails(resourceName, description, resourceTags, category,
-                               derivedFrom, vendorName, vendorRelease, contactId, icon);
-               resourceDetails.addCategoryChain(ResourceCategoryEnum.GENERIC_INFRASTRUCTURE.getCategory(),
-                               ResourceCategoryEnum.GENERIC_INFRASTRUCTURE.getSubCategory());
-
-               return resourceDetails;
-       }
-
-       protected ResourceReqDetails defineResourse() {
-               String resourceName = "cisco4";
-               String description = "description";
-               ArrayList<String> resourceTags = new ArrayList<String>();
-               resourceTags.add(resourceName);
-               ArrayList<String> derivedFrom = new ArrayList<String>();
-               derivedFrom.add(NormativeTypesEnum.ROOT.getNormativeName());// "tosca.nodes.Root");
-               String vendorName = "Oracle";
-               String vendorRelease = "1.5";
-               String contactId = "jh0003";
-               String icon = "objectStorage";
-
-               ResourceReqDetails resourceDetails = new ResourceReqDetails(resourceName, description, resourceTags, null,
-                               derivedFrom, vendorName, vendorRelease, contactId, icon);
-               resourceDetails.addCategoryChain(ResourceCategoryEnum.GENERIC_INFRASTRUCTURE.getCategory(),
-                               ResourceCategoryEnum.GENERIC_INFRASTRUCTURE.getSubCategory());
-
-               return resourceDetails;
-       }
-
-       protected RestResponse createResource(User sdncModifierDetails, ResourceReqDetails resourceDetails)
-                       throws Exception {
-               // clean ES DB
-               DbUtils.cleanAllAudits();
-
-               // create resource
-               RestResponse restResponse = ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);
-
-               // validate response
-               AssertJUnit.assertNotNull("check response object is not null after create resource", restResponse);
-               AssertJUnit.assertNotNull("check error code exists in response after create resource",
-                               restResponse.getErrorCode());
-               AssertJUnit.assertEquals("Check response code after create resource", 201,
-                               restResponse.getErrorCode().intValue());
-
-               return restResponse;
-       }
-
-       protected RestResponse TryUpdateByAnotherVerb(ResourceReqDetails updatedResourceDetails, User sdncModifierDetails,
-                       String uri) throws Exception {
-               // delete resource
-               Config config;
-               RestResponse ResourceResponse;
-               try {
-                       config = Utils.getConfig();
-                       Map<String, String> headersMap = new HashMap<String, String>();
-                       headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
-                       headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), acceptHeaderDate);
-                       headersMap.put(HttpHeaderEnum.USER_ID.getValue(), sdncModifierDetails.getUserId());
-                       HttpRequest http = new HttpRequest();
-                       String url = String.format(Urls.UPDATE_RESOURCE_METADATA, config.getCatalogBeHost(),
-                                       config.getCatalogBePort(), updatedResourceDetails.getName() + ".0.1");
-
-                       if (uri == "GET") {
-                               ResourceResponse = http.httpSendGet(url, headersMap);
-                       } else if (uri == "POST") {
-                               Gson gson = new Gson();
-                               String userBodyJson = gson.toJson(updatedResourceDetails);
-                               ResourceResponse = http.httpSendPost(url, userBodyJson, headersMap);
-                       } else if (uri == "DELETE") {
-                               ResourceResponse = http.httpSendDelete(url, headersMap);
-                       } else
-                               return null;
-
-                       return ResourceResponse;
-               } catch (FileNotFoundException e) {
-                       e.printStackTrace();
-               }
-
-               return null;
-
-       }
-
-       protected JSONObject JsonObjectBuilder(ResourceReqDetails resourceDetails) throws JSONException {
-               // json object: resourceName and icon are must
-               JSONObject jObject = new JSONObject();
-
-               List<String> tagsList = Arrays.asList(resourceDetails.getName());
-               List<String> derivedFromList = Arrays.asList("[tosca.nodes.Root]");
-
-               jObject.put("name", resourceDetails.getName());
-               jObject.put("description", "updatedDescription");
-               jObject.put("tags", tagsList);
-               jObject.put("category", ServiceCategoriesEnum.VOIP.getValue());
-               jObject.put("derivedFrom", derivedFromList);
-               jObject.put("vendorName", "newOracle");
-               jObject.put("vendorRelease", "1.5");
-               jObject.put("contactId", "jh0003");
-               jObject.put("icon", resourceDetails.getIcon());
-
-               return jObject;
-       }
-
-       protected JSONObject RemoveFromJsonObject(JSONObject jObject, String removedPropery) {
-               jObject.remove(removedPropery);
-
-               return jObject;
-       }
-
-       // purpose: function for controlling json body fields and validating
-       // response
-       protected void UpdateAndValidateWithIncompletedJsonBody(User sdncModifierDetails, JSONObject jsonObject,
-                       String resourceId, String removedField, String errorMessage, List<String> variables) throws Exception {
-
-               JSONObject jObject = new JSONObject(jsonObject, JSONObject.getNames(jsonObject));
-               // remove description from jsonObject
-               jObject = RemoveFromJsonObject(jObject, removedField);
-               // update with incomplete body.
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(jObject.toString(),
-                               sdncModifierDetails, resourceId);
-               // validate response
-               AssertJUnit.assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               AssertJUnit.assertNotNull("check error code exists in response after update resource",
-                               updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(errorMessage, variables, updatedRestResponse.getResponse());
-
-       }
-
-       // purpose: function for validating error response
-       protected void UpdateAndValidate(User sdncModifierDetails, ResourceReqDetails resourceDetails,
-                       String recievedMessage, List<String> variables) throws Exception {
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
-                               sdncModifierDetails, "0.1");
-               // validate response
-               AssertJUnit.assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               AssertJUnit.assertNotNull("check error code exists in response after update resource",
-                               updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(recievedMessage, variables, updatedRestResponse.getResponse());
-
-       }
-
-       protected void parseResponseAndValidateNonUpdatable(ResourceReqDetails resourceDetails, RestResponse restResponse)
-                       throws Exception {
-               // parse response to javaObject
-               Resource updatedResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(restResponse.getResponse());
-               AssertJUnit.assertTrue(
-                               !resourceDetails.getIsHighestVersion().equals(updatedResourceRespJavaObject.isHighestVersion()));
-               AssertJUnit.assertTrue(!resourceDetails.getVersion().equals(updatedResourceRespJavaObject.getName()));
-               AssertJUnit.assertTrue(!resourceDetails.getIsAbstract().equals(updatedResourceRespJavaObject.isAbstract()));
-               AssertJUnit.assertTrue(
-                               !resourceDetails.getCreatorUserId().equals(updatedResourceRespJavaObject.getCreatorUserId()));
-               AssertJUnit.assertTrue(
-                               !resourceDetails.getCreatorFullName().equals(updatedResourceRespJavaObject.getCreatorFullName()));
-               AssertJUnit.assertTrue(
-                               !resourceDetails.getLastUpdateDate().equals(updatedResourceRespJavaObject.getLastUpdateDate()));
-               AssertJUnit
-                               .assertTrue(!resourceDetails.getCreationDate().equals(updatedResourceRespJavaObject.getCreationDate()));
-               AssertJUnit.assertTrue(
-                               !resourceDetails.getLastUpdaterUserId().equals(updatedResourceRespJavaObject.getLastUpdaterUserId()));
-               AssertJUnit.assertTrue(!resourceDetails.getLastUpdaterFullName()
-                               .equals(updatedResourceRespJavaObject.getLastUpdaterFullName()));
-               AssertJUnit.assertTrue(
-                               !resourceDetails.getLifecycleState().equals(updatedResourceRespJavaObject.getLifecycleState()));
-               AssertJUnit.assertTrue(!resourceDetails.getCost().equals(updatedResourceRespJavaObject.getCost()));
-               AssertJUnit
-                               .assertTrue(!resourceDetails.getLicenseType().equals(updatedResourceRespJavaObject.getLicenseType()));
-               AssertJUnit.assertTrue(!resourceDetails.getUUID().equals(updatedResourceRespJavaObject.getUUID()));
-
-       }
-
-       protected void parseResponseAndValidate(ResourceReqDetails ResourceDetails, RestResponse restResponse)
-                       throws Exception {
-               // parse response to javaObject
-               Resource updatedResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(restResponse.getResponse());
-               // validate request vs response
-               ResourceValidationUtils.validateResourceReqVsResp(ResourceDetails, updatedResourceRespJavaObject);
-       }
-
-       public ExpectedResourceAuditJavaObject constructFieldsForAuditValidation(ResourceReqDetails resourceDetails,
-                       String resourceVersion) {
-
-               ExpectedResourceAuditJavaObject expectedResourceAuditJavaObject = new ExpectedResourceAuditJavaObject();
-
-               expectedResourceAuditJavaObject.setAction("Checkout");
-               expectedResourceAuditJavaObject.setModifierUid(UserRoleEnum.ADMIN.getUserId());
-               expectedResourceAuditJavaObject.setModifierName(UserRoleEnum.ADMIN.getUserName());
-               expectedResourceAuditJavaObject.setStatus("200.0");
-               expectedResourceAuditJavaObject.setDesc("OK");
-               expectedResourceAuditJavaObject.setResourceName(resourceDetails.getName().toLowerCase());
-               expectedResourceAuditJavaObject.setResourceType("Resource");
-               expectedResourceAuditJavaObject.setPrevVersion(String.valueOf(Float.parseFloat(resourceVersion) - 0.1f));
-               expectedResourceAuditJavaObject.setCurrVersion(resourceVersion);
-               expectedResourceAuditJavaObject.setPrevState((LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT).toString());
-               expectedResourceAuditJavaObject.setCurrState((LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT).toString());
-
-               return expectedResourceAuditJavaObject;
-
-       }
-
-       public enum FieldToValidate {
-               contactId, Tags, VendorName, VendorRelease, Description
-       }
-
-       @Test
-       public void UpdateBy_postTest() throws Exception {
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               // update resource - without changing resourceName
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-
-               RestResponse updatedRestResponse = TryUpdateByAnotherVerb(updatedResourceDetails, sdncModifierDetails, "POST");
-
-               // validate response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.NOT_ALLOWED.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               assertNotNull("check response object is not null after update resource", getRestResponse);
-               parseResponseAndValidate(resourceDetails, getRestResponse);
-
-       }
-
-       @Test
-       public void UpdateBy_getTest() throws Exception {
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               // update resource - without changing resourceName
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-               RestResponse updatedRestResponse = TryUpdateByAnotherVerb(updatedResourceDetails, sdncModifierDetails, "GET");
-
-               // validate response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.NOT_ALLOWED.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               assertNotNull("check response object is not null after update resource", getRestResponse);
-               parseResponseAndValidate(resourceDetails, getRestResponse);
-
-       }
-
-       @Test
-       public void UpdateBy_deleteTest() throws Exception {
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               // update resource - without changing resourceName
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-               RestResponse updatedRestResponse = TryUpdateByAnotherVerb(updatedResourceDetails, sdncModifierDetails,
-                               "DELETE");
-
-               // validate response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.NOT_ALLOWED.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               RestResponse getRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails,
-                               resourceDetails.getUniqueId(), "");
-               assertNotNull("check response object is not null after update resource", getRestResponse);
-               parseResponseAndValidate(resourceDetails, getRestResponse);
-
-       }
-
-       // TODO DE
-       // @Ignore("")
-       @Test
-       public void UpdateWithInvaldJsonBodyTest() throws Exception {
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               resourceDetails.setUniqueId(ResponseParser.getUniqueIdFromResponse(restResponse));
-               String resourceId = resourceDetails.getUniqueId();
-
-               // update Descirption value
-               String description = "updatedDescription";
-
-               // send update with incompleted json, only description string
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(description, sdncModifierDetails,
-                               resourceId);
-
-               // validate response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("check error code after update resource", 400, updatedRestResponse.getErrorCode().intValue());
-
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               assertNotNull("check response object is not null after update resource", getRestResponse);
-               parseResponseAndValidate(resourceDetails, getRestResponse);
-
-       }
-
-       // @Test
-       // public void UpdateResourceModifierNotOwnerStateTest() throws Exception {
-       //
-       //
-       // RestResponse restResponse = createResource(sdncModifierDetails,
-       // resourceDetails);
-       // String resourceName = resourceDetails.getName();
-       //
-       // // new user parameters
-       // String userFirstName = "Kot";
-       // String userLastName = "Matroskin";
-       // String role = "ADMIN";
-       // User sdncUserDetails = new User(userFirstName, userLastName,
-       // httpCspUserId, email, role,null);
-       // RestResponse deleteUserResponse = userUtils.deleteUser(sdncUserDetails,
-       // ElementFactory.getDefaultUser(UserRoleEnum.ADMIN));
-       //
-       // RestResponse createUserResponse = UserUtils.createUser(sdncUserDetails,
-       // ElementFactory.getDefaultUser(UserRoleEnum.ADMIN));
-       //
-       // User updatedSdncModifierDetails = new User(userFirstName, userLastName,
-       // httpCspUserId, email,role,null);
-       // ResourceReqDetails updatedResourceDetails =
-       // defineUpdatedResourse(resourceName);
-       // RestResponse updatedRestResponse =
-       // ResourceRestUtils.updateResource(updatedResourceDetails,
-       // updatedSdncModifierDetails, resourceDetails.getUniqueId(), "");
-       //
-       // // validate response
-       // assertNotNull("check response object is not null after update resource",
-       // updatedRestResponse);
-       // assertNotNull("check error code exists in response after update
-       // resource", updatedRestResponse.getErrorCode());
-       // ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(),
-       // Empty_List, updatedRestResponse.getResponse());
-       //
-       // RestResponse getRestResponse =
-       // ResourceRestUtils.getResource(sdncModifierDetails,
-       // resourceDetails.getUniqueId());
-       // assertNotNull("check response object is not null after update resource",
-       // getRestResponse);
-       // parseResponseAndValidate(resourceDetails, getRestResponse);
-       //
-       //
-       // }
-
-       @Test
-       public void UpdateResourceNameSensitiveTest() throws Exception {
-               User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-               String resourceBaseVersion = "0.1";
-               String resourceName = "Ab";
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-               // Delete resources
-               RestResponse response = null;
-               response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
-                               updatedResourceDetails.getName(), "0.1");
-               BaseRestUtils.checkDeleteResponse(response);
-               response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
-                               updatedResourceDetails.getName(), "0.2");
-               BaseRestUtils.checkDeleteResponse(response);
-
-               RestResponse restResponse = createResource(sdncModifierDetails, updatedResourceDetails);
-               assertEquals("create resource failed", 201, restResponse.getErrorCode().intValue());
-
-               // check-in Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(updatedResourceDetails,
-                               sdncModifierDetails, resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               // String resourceCertifyVersion = "0.1";
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(updatedResourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKOUT);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               updatedResourceDetails.setName("ABC_-bt.aT");
-               ArrayList<String> resourceTag = new ArrayList<String>();
-               resourceTag.add(0, "ABC_-bt.aT");
-               updatedResourceDetails.setTags(resourceTag);
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, updatedResourceDetails.getUniqueId(), "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(updatedResourceDetails, updatedRestResponse);
-
-               // Delete resources
-               response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
-                               updatedResourceDetails.getName(), "0.1");
-               BaseRestUtils.checkDeleteResponse(response);
-               response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
-                               updatedResourceDetails.getName(), "0.2");
-               BaseRestUtils.checkDeleteResponse(response);
-
-       }
-
-       @Test
-       public void UpdateIcon_InegativeFlow() throws Exception {
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               List<String> resourceList = new ArrayList<String>();
-               resourceList.add(0, "Resource");
-               // check InValid Characters
-               char[] notValidCharsArray = new char[59];
-               notValidCharsArray = getInValidChars();
-               // update metadata details
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-               RestResponse updatedRestResponse;
-
-               for (int i = 0; i < notValidCharsArray.length; i++) {
-                       // change icon of metadata
-                       updatedResourceDetails.setIcon("MyIcon" + notValidCharsArray[i]);
-                       // PUT request
-                       updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
-                                       resourceDetails.getUniqueId(), "");
-                       // validate response
-                       assertNotNull("check response object is not null after update resource", updatedRestResponse);
-                       assertNotNull("check error code exists in response after update resource",
-                                       updatedRestResponse.getErrorCode());
-                       ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_ICON.name(), resourceList,
-                                       updatedRestResponse.getResponse());
-                       assertEquals("Check response code after updating resource icon", 400,
-                                       updatedRestResponse.getErrorCode().intValue());
-                       assertEquals("Check response code after updating resource icon", "Bad Request",
-                                       updatedRestResponse.getResponseMessage().toString());
-
-               }
-
-               // empty icon
-               String updateIcon = "";
-               updatedResourceDetails.setIcon(updateIcon);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
-                               resourceDetails.getUniqueId(), "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_ICON.name(), resourceList,
-                               updatedRestResponse.getResponse());
-
-               // Icon length more then 25 characters
-               resourceList.add(1, "25");
-               updatedResourceDetails.setIcon("1234567890_-qwertyuiopASDNNN");
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
-                               resourceDetails.getUniqueId(), "");
-               // validate response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_ICON_EXCEEDS_LIMIT.name(), resourceList,
-                               updatedRestResponse.getResponse());
-               assertEquals("Check response code after create resource", 400, updatedRestResponse.getErrorCode().intValue());
-               assertEquals("Check response code after updating resource icon", "Bad Request",
-                               updatedRestResponse.getResponseMessage().toString());
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               // validate response
-               assertNotNull("check response object is not null after get resource", getRestResponse);
-               assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
-
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
-
-       }
-
-       @Test
-       public void UpdateResource_NoTagsEqualToResourceName() throws Exception {
-
-               User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-               String resourceBaseVersion = "0.1";
-
-               // create resource
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               ResourceReqDetails updatedResourceDetails = defineResourse();
-               updatedResourceDetails.setName("updatedResourceName");
-               List<String> tags = updatedResourceDetails.getTags();
-
-               for (Iterator<String> iter = tags.listIterator(); iter.hasNext();) {
-                       String a = iter.next();
-                       if (a.equals("updatedResourceName")) {
-                               iter.remove();
-                       }
-               }
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-               // validate response
-               List<String> resourceList = new ArrayList<String>();
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_TAGS_NO_COMP_NAME.name(),
-                               resourceList, updatedRestResponse.getResponse());
-               assertEquals("Check response code after updating resource icon", 400,
-                               updatedRestResponse.getErrorCode().intValue());
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               // validate response
-               assertNotNull("check response object is not null after get resource", getRestResponse);
-               assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
-
-       }
-
-       @Test
-       public void UpdateResourceName_negativeFlow() throws Exception {
-               // The validation are done in Tag's validation
-               User sdncAdminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-
-               RestResponse updatedRestResponse;
-               RestResponse restResponse = createResource(sdncAdminModifierDetails, resourceDetails);
-               assertEquals("create resource failed", 201, restResponse.getErrorCode().intValue());
-               String uniqueId = resourceDetails.getUniqueId();
-               String resourceName = resourceDetails.getName();
-               // check InValid Characters
-               char[] notValidCharsArray = new char[59];
-               notValidCharsArray = getInValidChars();
-               ArrayList<String> resource_Name = new ArrayList<String>();
-               List<String> resourceList = new ArrayList<String>();
-
-               ArrayList<String> resourceTags = new ArrayList<String>();
-               resourceList.add(0, "Resource");
-
-               // update metadata details
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-               for (int i = 0; i < notValidCharsArray.length; i++, resource_Name.clear()) {
-                       if (i != 1 && i != 46
-                                       && /*
+        // Derived from set to Database
+        List<String> derivedFrom = new ArrayList<>();
+        derivedFrom.add(oldDerivedFromName);
+        resourceDetails.setDerivedFrom(derivedFrom);
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        AssertJUnit.assertEquals("Check response code after create resource", 201,
+                restResponse.getErrorCode().intValue());
+        Resource currentResource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
+
+        derivedFrom.clear();
+        derivedFrom.add(newDerivedFromName);
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
+                sdncModifierDetails, currentResource.getUniqueId(), "");
+        AssertJUnit.assertEquals("Check response code after create resource", 200,
+                updatedRestResponse.getErrorCode().intValue());
+
+    }
+
+    protected ResourceReqDetails defineUpdateResourceWithNonUpdatableFields(Resource resourceBeforeUpdate) {
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceBeforeUpdate.getName());
+
+        updatedResourceDetails.setVersion("mumu");
+        updatedResourceDetails.setIsAbstract(true);
+        updatedResourceDetails.setIsHighestVersion(true);
+        updatedResourceDetails.setCreatorUserId("df4444");
+        updatedResourceDetails.setCreatorFullName("John Doe");
+        updatedResourceDetails.setLastUpdaterUserId("gf5646");
+        updatedResourceDetails.setLastUpdaterFullName("Viktor Tzoy");
+        updatedResourceDetails.setCreationDate(new Long(4444));
+        updatedResourceDetails.setLastUpdateDate(new Long("534535"));
+        updatedResourceDetails.setLifecycleState(LifecycleStateEnum.READY_FOR_CERTIFICATION);
+        updatedResourceDetails.setCost("6.1");
+        updatedResourceDetails.setLicenseType("Installation");
+        updatedResourceDetails.setUUID("dfsfsdf");
+        return updatedResourceDetails;
+    }
+
+    public void UpdateResourceNotFoundTest() throws Exception {
+        // init ADMIN user
+        User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+
+        String resourceName = "cisco4";
+        // update resource
+        String description = "updatedDescription";
+        ArrayList<String> resourceTags = new ArrayList<String>();
+        resourceTags.add("tag2");
+        String category = ServiceCategoriesEnum.MOBILITY.getValue();
+        ArrayList<String> derivedFrom = new ArrayList<String>();
+        derivedFrom.add(NormativeTypesEnum.ROOT.getNormativeName());
+        String vendorName = "newOracle";
+        String vendorRelease = "2.5";
+        String contactId = "jh0003";
+        String icon = "myICON";
+
+        ResourceReqDetails updatedResourceDetails = new ResourceReqDetails(resourceName, description, resourceTags,
+                category, derivedFrom, vendorName, vendorRelease, contactId, icon);
+        updatedResourceDetails.setUniqueId("dummyId");
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, "0.1");
+
+        // validate response
+        AssertJUnit.assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        AssertJUnit.assertNotNull("check error code exists in response after update resource",
+                updatedRestResponse.getErrorCode());
+        AssertJUnit.assertEquals("Check response code after update resource", 404,
+                updatedRestResponse.getErrorCode().intValue());
+        // String resourceId =
+        // UniqueIdBuilder.buildResourceUniqueId(resourceName, "0.1");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NOT_FOUND.name(), Arrays.asList("dummyId"),
+                updatedRestResponse.getResponse());
+
+        resourceName = "";
+        // resourceId = UniqueIdBuilder.buildResourceUniqueId(resourceName,
+        // "0.1");
+        updatedResourceDetails = defineUpdatedResourse(resourceName);
+        updatedResourceDetails.setUniqueId("dummyId");
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
+                "0.1");
+        AssertJUnit.assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        AssertJUnit.assertNotNull("check error code exists in response after update resource",
+                updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NOT_FOUND.name(), Arrays.asList("dummyId"),
+                updatedRestResponse.getResponse());
+
+    }
+
+    public char[] getInValidChars() throws Exception {
+
+        char[] extendedCharsArray = new char[59];
+        char ch = 1;
+        for (int i = 0; i < 44; i++) {
+            extendedCharsArray[i] = ch;
+            ch++;
+        }
+        ch = 58;
+        for (int i = 44; i < 51; i++) {
+            extendedCharsArray[i] = ch;
+            ch++;
+        }
+        ch = 91;
+        for (int i = 51; i < 55; i++) {
+            extendedCharsArray[i] = ch;
+            ch++;
+        }
+        ch = 123;
+        for (int i = 55; i < 59; i++) {
+            extendedCharsArray[i] = ch;
+            ch++;
+        }
+        return extendedCharsArray;
+    }
+
+    public char[] getTagInValidFormatChars() throws Exception {
+        // Tag format is the same as defined for "Resource Name" :
+        // Allowed characters: Alphanumeric (a-zA-Z0-9), space (' '), underscore
+        // ('_'), dash ('-'), dot ('.')
+        char[] notValidCharsArray = new char[30];
+        char ch = 33;
+        for (int i = 0; i < 12; i++) {
+            notValidCharsArray[i] = ch;
+            ch++;
+        }
+        notValidCharsArray[13] = 47;
+        ch = 58;
+        for (int i = 14; i < 21; i++) {
+            notValidCharsArray[i] = ch;
+            ch++;
+        }
+        ch = 91;
+        for (int i = 21; i < 24; i++) {
+            notValidCharsArray[i] = ch;
+            ch++;
+        }
+        notValidCharsArray[24] = 96;
+        ch = 123;
+        for (int i = 25; i < 30; i++) {
+            notValidCharsArray[i] = ch;
+            ch++;
+        }
+        return notValidCharsArray;
+    }
+
+    public void Validation_UpdateWithIncompleteJsonBodyTest() throws Exception {
+        // init ADMIN user
+        User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+
+        // define and create resource
+        ResourceReqDetails resourceDetails = defineResourse();
+        ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "0.1");
+        ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "1.0");
+        ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "1.1");
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceId = resourceDetails.getUniqueId();
+        resourceDetails.setUniqueId(ResponseParser.getUniqueIdFromResponse(restResponse));
+
+        // build Json Object
+        JSONObject jsonObject = JsonObjectBuilder(resourceDetails);
+
+        List<String> resource = new ArrayList<>();
+        resource.add("Resource");
+
+        // remove Description
+        UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "description",
+                ActionStatus.COMPONENT_MISSING_DESCRIPTION.name(), resource);
+        // remove Tags
+        UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "tags",
+                ActionStatus.COMPONENT_MISSING_TAGS.name(), Empty_List);
+        // remove Category
+        UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "category",
+                ActionStatus.COMPONENT_MISSING_CATEGORY.name(), resource);
+        // remove VendorName
+        UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "vendorName",
+                ActionStatus.MISSING_VENDOR_NAME.name(), Empty_List);
+        // remove VendorRelease
+        UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "vendorRelease",
+                ActionStatus.MISSING_VENDOR_RELEASE.name(), Empty_List);
+        // remove AT&T Contact
+        UpdateAndValidateWithIncompletedJsonBody(sdncModifierDetails, jsonObject, resourceId, "contactId",
+                ActionStatus.COMPONENT_MISSING_CONTACT.name(), resource);
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails, "0.1");
+        // validate response
+        AssertJUnit.assertNotNull("check response object is not null after get resource", getRestResponse);
+        AssertJUnit.assertNotNull("check error code exists in response after get resource",
+                getRestResponse.getErrorCode());
+        AssertJUnit.assertEquals("Check response code after update resource", 200,
+                getRestResponse.getErrorCode().intValue());
+
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
+
+        ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "0.1");
+        ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "1.0");
+        ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, resourceDetails.getName(), "1.1");
+    }
+
+    // End of validation tests
+    // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+    protected ResourceReqDetails defineUpdatedResourse(String resourceName) {
+        String description = "updatedDescription";
+        ArrayList<String> resourceTags = new ArrayList<String>();
+        // Duplicate tags are allowed and should be de-duplicated by server side
+        resourceTags.add(resourceName);
+        resourceTags.add("tag1");
+        resourceTags.add("tag1");
+        resourceTags.add("tag2");
+        resourceTags.add("tag2");
+        String category = ServiceCategoriesEnum.VOIP.getValue();
+        ArrayList<String> derivedFrom = new ArrayList<String>();
+        derivedFrom.add(NormativeTypesEnum.ROOT.getNormativeName());
+        String vendorName = "updatedOracle";
+        String vendorRelease = "3.5";
+        String contactId = "jh0001";
+        String icon = "myUpdatedICON";
+
+        ResourceReqDetails resourceDetails = new ResourceReqDetails(resourceName, description, resourceTags, category,
+                derivedFrom, vendorName, vendorRelease, contactId, icon);
+        resourceDetails.addCategoryChain(ResourceCategoryEnum.GENERIC_INFRASTRUCTURE.getCategory(),
+                ResourceCategoryEnum.GENERIC_INFRASTRUCTURE.getSubCategory());
+
+        return resourceDetails;
+    }
+
+    protected ResourceReqDetails defineResourse() {
+        String resourceName = "cisco4";
+        String description = "description";
+        ArrayList<String> resourceTags = new ArrayList<String>();
+        resourceTags.add(resourceName);
+        ArrayList<String> derivedFrom = new ArrayList<String>();
+        derivedFrom.add(NormativeTypesEnum.ROOT.getNormativeName());// "tosca.nodes.Root");
+        String vendorName = "Oracle";
+        String vendorRelease = "1.5";
+        String contactId = "jh0003";
+        String icon = "objectStorage";
+
+        ResourceReqDetails resourceDetails = new ResourceReqDetails(resourceName, description, resourceTags, null,
+                derivedFrom, vendorName, vendorRelease, contactId, icon);
+        resourceDetails.addCategoryChain(ResourceCategoryEnum.GENERIC_INFRASTRUCTURE.getCategory(),
+                ResourceCategoryEnum.GENERIC_INFRASTRUCTURE.getSubCategory());
+
+        return resourceDetails;
+    }
+
+    protected RestResponse createResource(User sdncModifierDetails, ResourceReqDetails resourceDetails)
+            throws Exception {
+        // clean ES DB
+        DbUtils.cleanAllAudits();
+
+        // create resource
+        RestResponse restResponse = ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);
+
+        // validate response
+        AssertJUnit.assertNotNull("check response object is not null after create resource", restResponse);
+        AssertJUnit.assertNotNull("check error code exists in response after create resource",
+                restResponse.getErrorCode());
+        AssertJUnit.assertEquals("Check response code after create resource", 201,
+                restResponse.getErrorCode().intValue());
+
+        return restResponse;
+    }
+
+    protected RestResponse TryUpdateByAnotherVerb(ResourceReqDetails updatedResourceDetails, User sdncModifierDetails,
+                                                  String uri) throws Exception {
+        // delete resource
+        Config config;
+        RestResponse ResourceResponse;
+        try {
+            config = Utils.getConfig();
+            Map<String, String> headersMap = new HashMap<String, String>();
+            headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
+            headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), acceptHeaderDate);
+            headersMap.put(HttpHeaderEnum.USER_ID.getValue(), sdncModifierDetails.getUserId());
+            HttpRequest http = new HttpRequest();
+            String url = String.format(Urls.UPDATE_RESOURCE_METADATA, config.getCatalogBeHost(),
+                    config.getCatalogBePort(), updatedResourceDetails.getName() + ".0.1");
+
+            if (uri == "GET") {
+                ResourceResponse = http.httpSendGet(url, headersMap);
+            } else if (uri == "POST") {
+                Gson gson = new Gson();
+                String userBodyJson = gson.toJson(updatedResourceDetails);
+                ResourceResponse = http.httpSendPost(url, userBodyJson, headersMap);
+            } else if (uri == "DELETE") {
+                ResourceResponse = http.httpSendDelete(url, headersMap);
+            } else
+                return null;
+
+            return ResourceResponse;
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+
+        return null;
+
+    }
+
+    protected JSONObject JsonObjectBuilder(ResourceReqDetails resourceDetails) throws JSONException {
+        // json object: resourceName and icon are must
+        JSONObject jObject = new JSONObject();
+
+        List<String> tagsList = Arrays.asList(resourceDetails.getName());
+        List<String> derivedFromList = Arrays.asList("[tosca.nodes.Root]");
+
+        jObject.put("name", resourceDetails.getName());
+        jObject.put("description", "updatedDescription");
+        jObject.put("tags", tagsList);
+        jObject.put("category", ServiceCategoriesEnum.VOIP.getValue());
+        jObject.put("derivedFrom", derivedFromList);
+        jObject.put("vendorName", "newOracle");
+        jObject.put("vendorRelease", "1.5");
+        jObject.put("contactId", "jh0003");
+        jObject.put("icon", resourceDetails.getIcon());
+
+        return jObject;
+    }
+
+    protected JSONObject RemoveFromJsonObject(JSONObject jObject, String removedPropery) {
+        jObject.remove(removedPropery);
+
+        return jObject;
+    }
+
+    // purpose: function for controlling json body fields and validating
+    // response
+    protected void UpdateAndValidateWithIncompletedJsonBody(User sdncModifierDetails, JSONObject jsonObject,
+                                                            String resourceId, String removedField, String errorMessage, List<String> variables) throws Exception {
+
+        JSONObject jObject = new JSONObject(jsonObject, JSONObject.getNames(jsonObject));
+        // remove description from jsonObject
+        jObject = RemoveFromJsonObject(jObject, removedField);
+        // update with incomplete body.
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(jObject.toString(),
+                sdncModifierDetails, resourceId);
+        // validate response
+        AssertJUnit.assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        AssertJUnit.assertNotNull("check error code exists in response after update resource",
+                updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(errorMessage, variables, updatedRestResponse.getResponse());
+
+    }
+
+    // purpose: function for validating error response
+    protected void UpdateAndValidate(User sdncModifierDetails, ResourceReqDetails resourceDetails,
+                                     String recievedMessage, List<String> variables) throws Exception {
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
+                sdncModifierDetails, "0.1");
+        // validate response
+        AssertJUnit.assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        AssertJUnit.assertNotNull("check error code exists in response after update resource",
+                updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(recievedMessage, variables, updatedRestResponse.getResponse());
+
+    }
+
+    protected void parseResponseAndValidateNonUpdatable(ResourceReqDetails resourceDetails, RestResponse restResponse)
+            throws Exception {
+        // parse response to javaObject
+        Resource updatedResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(restResponse.getResponse());
+        AssertJUnit.assertTrue(
+                !resourceDetails.getIsHighestVersion().equals(updatedResourceRespJavaObject.isHighestVersion()));
+        AssertJUnit.assertTrue(!resourceDetails.getVersion().equals(updatedResourceRespJavaObject.getName()));
+        AssertJUnit.assertTrue(!resourceDetails.getIsAbstract().equals(updatedResourceRespJavaObject.isAbstract()));
+        AssertJUnit.assertTrue(
+                !resourceDetails.getCreatorUserId().equals(updatedResourceRespJavaObject.getCreatorUserId()));
+        AssertJUnit.assertTrue(
+                !resourceDetails.getCreatorFullName().equals(updatedResourceRespJavaObject.getCreatorFullName()));
+        AssertJUnit.assertTrue(
+                !resourceDetails.getLastUpdateDate().equals(updatedResourceRespJavaObject.getLastUpdateDate()));
+        AssertJUnit
+                .assertTrue(!resourceDetails.getCreationDate().equals(updatedResourceRespJavaObject.getCreationDate()));
+        AssertJUnit.assertTrue(
+                !resourceDetails.getLastUpdaterUserId().equals(updatedResourceRespJavaObject.getLastUpdaterUserId()));
+        AssertJUnit.assertTrue(!resourceDetails.getLastUpdaterFullName()
+                .equals(updatedResourceRespJavaObject.getLastUpdaterFullName()));
+        AssertJUnit.assertTrue(
+                !resourceDetails.getLifecycleState().equals(updatedResourceRespJavaObject.getLifecycleState()));
+        AssertJUnit.assertTrue(!resourceDetails.getCost().equals(updatedResourceRespJavaObject.getCost()));
+        AssertJUnit
+                .assertTrue(!resourceDetails.getLicenseType().equals(updatedResourceRespJavaObject.getLicenseType()));
+        AssertJUnit.assertTrue(!resourceDetails.getUUID().equals(updatedResourceRespJavaObject.getUUID()));
+
+    }
+
+    protected void parseResponseAndValidate(ResourceReqDetails ResourceDetails, RestResponse restResponse)
+            throws Exception {
+        // parse response to javaObject
+        Resource updatedResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(restResponse.getResponse());
+        // validate request vs response
+        ResourceValidationUtils.validateResourceReqVsResp(ResourceDetails, updatedResourceRespJavaObject);
+    }
+
+    public ExpectedResourceAuditJavaObject constructFieldsForAuditValidation(ResourceReqDetails resourceDetails,
+                                                                             String resourceVersion) {
+
+        ExpectedResourceAuditJavaObject expectedResourceAuditJavaObject = new ExpectedResourceAuditJavaObject();
+
+        expectedResourceAuditJavaObject.setAction("Checkout");
+        expectedResourceAuditJavaObject.setModifierUid(UserRoleEnum.ADMIN.getUserId());
+        expectedResourceAuditJavaObject.setModifierName(UserRoleEnum.ADMIN.getUserName());
+        expectedResourceAuditJavaObject.setStatus("200.0");
+        expectedResourceAuditJavaObject.setDesc("OK");
+        expectedResourceAuditJavaObject.setResourceName(resourceDetails.getName().toLowerCase());
+        expectedResourceAuditJavaObject.setResourceType("Resource");
+        expectedResourceAuditJavaObject.setPrevVersion(String.valueOf(Float.parseFloat(resourceVersion) - 0.1f));
+        expectedResourceAuditJavaObject.setCurrVersion(resourceVersion);
+        expectedResourceAuditJavaObject.setPrevState((LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT).toString());
+        expectedResourceAuditJavaObject.setCurrState((LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT).toString());
+
+        return expectedResourceAuditJavaObject;
+
+    }
+
+    public enum FieldToValidate {
+        contactId, Tags, VendorName, VendorRelease, Description
+    }
+
+    @Test
+    public void UpdateBy_postTest() throws Exception {
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        // update resource - without changing resourceName
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+
+        RestResponse updatedRestResponse = TryUpdateByAnotherVerb(updatedResourceDetails, sdncModifierDetails, "POST");
+
+        // validate response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.NOT_ALLOWED.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        assertNotNull("check response object is not null after update resource", getRestResponse);
+        parseResponseAndValidate(resourceDetails, getRestResponse);
+
+    }
+
+    @Test
+    public void UpdateBy_getTest() throws Exception {
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        // update resource - without changing resourceName
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+        RestResponse updatedRestResponse = TryUpdateByAnotherVerb(updatedResourceDetails, sdncModifierDetails, "GET");
+
+        // validate response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.NOT_ALLOWED.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        assertNotNull("check response object is not null after update resource", getRestResponse);
+        parseResponseAndValidate(resourceDetails, getRestResponse);
+
+    }
+
+    @Test
+    public void UpdateBy_deleteTest() throws Exception {
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        // update resource - without changing resourceName
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+        RestResponse updatedRestResponse = TryUpdateByAnotherVerb(updatedResourceDetails, sdncModifierDetails,
+                "DELETE");
+
+        // validate response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.NOT_ALLOWED.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        RestResponse getRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails,
+                resourceDetails.getUniqueId(), "");
+        assertNotNull("check response object is not null after update resource", getRestResponse);
+        parseResponseAndValidate(resourceDetails, getRestResponse);
+
+    }
+
+    // TODO DE
+    // @Ignore("")
+    @Test
+    public void UpdateWithInvaldJsonBodyTest() throws Exception {
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        resourceDetails.setUniqueId(ResponseParser.getUniqueIdFromResponse(restResponse));
+        String resourceId = resourceDetails.getUniqueId();
+
+        // update Descirption value
+        String description = "updatedDescription";
+
+        // send update with incompleted json, only description string
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(description, sdncModifierDetails,
+                resourceId);
+
+        // validate response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("check error code after update resource", 400, updatedRestResponse.getErrorCode().intValue());
+
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        assertNotNull("check response object is not null after update resource", getRestResponse);
+        parseResponseAndValidate(resourceDetails, getRestResponse);
+
+    }
+
+    // @Test
+    // public void UpdateResourceModifierNotOwnerStateTest() throws Exception {
+    //
+    //
+    // RestResponse restResponse = createResource(sdncModifierDetails,
+    // resourceDetails);
+    // String resourceName = resourceDetails.getName();
+    //
+    // // new user parameters
+    // String userFirstName = "Kot";
+    // String userLastName = "Matroskin";
+    // String role = "ADMIN";
+    // User sdncUserDetails = new User(userFirstName, userLastName,
+    // httpCspUserId, email, role,null);
+    // RestResponse deleteUserResponse = userUtils.deleteUser(sdncUserDetails,
+    // ElementFactory.getDefaultUser(UserRoleEnum.ADMIN));
+    //
+    // RestResponse createUserResponse = UserUtils.createUser(sdncUserDetails,
+    // ElementFactory.getDefaultUser(UserRoleEnum.ADMIN));
+    //
+    // User updatedSdncModifierDetails = new User(userFirstName, userLastName,
+    // httpCspUserId, email,role,null);
+    // ResourceReqDetails updatedResourceDetails =
+    // defineUpdatedResourse(resourceName);
+    // RestResponse updatedRestResponse =
+    // ResourceRestUtils.updateResource(updatedResourceDetails,
+    // updatedSdncModifierDetails, resourceDetails.getUniqueId(), "");
+    //
+    // // validate response
+    // assertNotNull("check response object is not null after update resource",
+    // updatedRestResponse);
+    // assertNotNull("check error code exists in response after update
+    // resource", updatedRestResponse.getErrorCode());
+    // ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(),
+    // Empty_List, updatedRestResponse.getResponse());
+    //
+    // RestResponse getRestResponse =
+    // ResourceRestUtils.getResource(sdncModifierDetails,
+    // resourceDetails.getUniqueId());
+    // assertNotNull("check response object is not null after update resource",
+    // getRestResponse);
+    // parseResponseAndValidate(resourceDetails, getRestResponse);
+    //
+    //
+    // }
+
+    @Test
+    public void UpdateResourceNameSensitiveTest() throws Exception {
+        User sdncModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+        String resourceBaseVersion = "0.1";
+        String resourceName = "Ab";
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+        // Delete resources
+        RestResponse response = null;
+        response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
+                updatedResourceDetails.getName(), "0.1");
+        BaseRestUtils.checkDeleteResponse(response);
+        response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
+                updatedResourceDetails.getName(), "0.2");
+        BaseRestUtils.checkDeleteResponse(response);
+
+        RestResponse restResponse = createResource(sdncModifierDetails, updatedResourceDetails);
+        assertEquals("create resource failed", 201, restResponse.getErrorCode().intValue());
+
+        // check-in Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(updatedResourceDetails,
+                sdncModifierDetails, resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        // String resourceCertifyVersion = "0.1";
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(updatedResourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKOUT);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        updatedResourceDetails.setName("ABC_-bt.aT");
+        ArrayList<String> resourceTag = new ArrayList<String>();
+        resourceTag.add(0, "ABC_-bt.aT");
+        updatedResourceDetails.setTags(resourceTag);
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, updatedResourceDetails.getUniqueId(), "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(updatedResourceDetails, updatedRestResponse);
+
+        // Delete resources
+        response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
+                updatedResourceDetails.getName(), "0.1");
+        BaseRestUtils.checkDeleteResponse(response);
+        response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
+                updatedResourceDetails.getName(), "0.2");
+        BaseRestUtils.checkDeleteResponse(response);
+
+    }
+
+    @Test
+    public void UpdateIcon_InegativeFlow() throws Exception {
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        List<String> resourceList = new ArrayList<String>();
+        resourceList.add(0, "Resource");
+        // check InValid Characters
+        char[] notValidCharsArray = new char[59];
+        notValidCharsArray = getInValidChars();
+        // update metadata details
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+        RestResponse updatedRestResponse;
+
+        for (int i = 0; i < notValidCharsArray.length; i++) {
+            // change icon of metadata
+            updatedResourceDetails.setIcon("MyIcon" + notValidCharsArray[i]);
+            // PUT request
+            updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
+                    resourceDetails.getUniqueId(), "");
+            // validate response
+            assertNotNull("check response object is not null after update resource", updatedRestResponse);
+            assertNotNull("check error code exists in response after update resource",
+                    updatedRestResponse.getErrorCode());
+            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_ICON.name(), resourceList,
+                    updatedRestResponse.getResponse());
+            assertEquals("Check response code after updating resource icon", 400,
+                    updatedRestResponse.getErrorCode().intValue());
+            assertEquals("Check response code after updating resource icon", "Bad Request",
+                    updatedRestResponse.getResponseMessage().toString());
+
+        }
+
+        // empty icon
+        String updateIcon = "";
+        updatedResourceDetails.setIcon(updateIcon);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
+                resourceDetails.getUniqueId(), "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_ICON.name(), resourceList,
+                updatedRestResponse.getResponse());
+
+        // Icon length more then 25 characters
+        resourceList.add(1, "25");
+        updatedResourceDetails.setIcon("1234567890_-qwertyuiopASDNNN");
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
+                resourceDetails.getUniqueId(), "");
+        // validate response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_ICON_EXCEEDS_LIMIT.name(), resourceList,
+                updatedRestResponse.getResponse());
+        assertEquals("Check response code after create resource", 400, updatedRestResponse.getErrorCode().intValue());
+        assertEquals("Check response code after updating resource icon", "Bad Request",
+                updatedRestResponse.getResponseMessage().toString());
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        // validate response
+        assertNotNull("check response object is not null after get resource", getRestResponse);
+        assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
+
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
+
+    }
+
+    @Test
+    public void UpdateResource_NoTagsEqualToResourceName() throws Exception {
+
+        User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+        String resourceBaseVersion = "0.1";
+
+        // create resource
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        ResourceReqDetails updatedResourceDetails = defineResourse();
+        updatedResourceDetails.setName("updatedResourceName");
+        List<String> tags = updatedResourceDetails.getTags();
+
+        for (Iterator<String> iter = tags.listIterator(); iter.hasNext(); ) {
+            String a = iter.next();
+            if (a.equals("updatedResourceName")) {
+                iter.remove();
+            }
+        }
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+        // validate response
+        List<String> resourceList = new ArrayList<String>();
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_TAGS_NO_COMP_NAME.name(),
+                resourceList, updatedRestResponse.getResponse());
+        assertEquals("Check response code after updating resource icon", 400,
+                updatedRestResponse.getErrorCode().intValue());
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        // validate response
+        assertNotNull("check response object is not null after get resource", getRestResponse);
+        assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
+
+    }
+
+    @Test
+    public void UpdateResourceName_negativeFlow() throws Exception {
+        // The validation are done in Tag's validation
+        User sdncAdminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+
+        RestResponse updatedRestResponse;
+        RestResponse restResponse = createResource(sdncAdminModifierDetails, resourceDetails);
+        assertEquals("create resource failed", 201, restResponse.getErrorCode().intValue());
+        String uniqueId = resourceDetails.getUniqueId();
+        String resourceName = resourceDetails.getName();
+        // check InValid Characters
+        char[] notValidCharsArray = new char[59];
+        notValidCharsArray = getInValidChars();
+        ArrayList<String> resource_Name = new ArrayList<String>();
+        List<String> resourceList = new ArrayList<String>();
+
+        ArrayList<String> resourceTags = new ArrayList<String>();
+        resourceList.add(0, "Resource");
+
+        // update metadata details
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+        for (int i = 0; i < notValidCharsArray.length; i++, resource_Name.clear()) {
+            if (i != 1 && i != 46
+                    && /*
                                                 * i != 8 && i != 9 && i != 10 && i != 11 && i != 12 &&
                                                 */ i != 31) // space ("") and dot(.)
-                       {
-                               // change resourceName parameter
-                               updatedResourceDetails.setName("UpdatedResourceName" + notValidCharsArray[i]);
-                               resource_Name.add("UpdatedResourceName" + notValidCharsArray[i]);
-                               updatedResourceDetails.setTags(resource_Name);
-                               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                                               sdncAdminModifierDetails, uniqueId, "");
-                               // validate response
-                               // ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_TAG.name(),
-                               // Empty_List, updatedRestResponse.getResponse());
-                               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_COMPONENT_NAME.name(), resourceList,
-                                               updatedRestResponse.getResponse());
-
-                       }
-               }
-
-               // resourceName length more then 50 characters
-               // Duplicate tags are allowed and should be de-duplicated by server side
-               resource_Name.add(resourceName);
-               resource_Name.add("tag1");
-               resource_Name.add("tag1");
-               resource_Name.add("tag2");
-               resource_Name.add("tag2");
-
-               resourceList.add(1, "1024");
-               // updatedResourceDetails.setName("123456789012345678901234567890123456789012345678901");
-               updatedResourceDetails.setName(new String(new char[1025]).replace("\0", "a"));
-               // resource_Name.add("123456789012345678901234567890123456789012345678901");
-               updatedResourceDetails.setTags(resource_Name);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncAdminModifierDetails,
-                               uniqueId, "");
-               // validate response
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_NAME_EXCEEDS_LIMIT.name(), resourceList,
-                               updatedRestResponse.getResponse());
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncAdminModifierDetails,
-                               resourceDetails.getUniqueId());
-               // validate response
-               assertNotNull("check response object is not null after get resource", getRestResponse);
-               assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
-
-               // delete resource
-               RestResponse response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncAdminModifierDetails,
-                               updatedResourceDetails.getName(), "0.1");
-               BaseRestUtils.checkDeleteResponse(response);
-       }
-
-       @Test
-       public void UpdateResourceInformation_NotCheckedOut() throws Exception {
-
-               String resourceBaseVersion = "0.1";
-               List<String> resourceList = new ArrayList<String>();
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               // CheckIn Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKIN); // NOT_CERTIFIED_CHECKIN
-               assertNotNull("check response object is not null after checkout resource", checkoutResource);
-               assertNotNull("check error code exists in response after checkIn resource", checkoutResource.getErrorCode());
-               assertEquals("Check response code after checkin resource", 200, checkoutResource.getErrorCode().intValue());
-
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), resourceList,
-                               updatedRestResponse.getResponse());
-               assertEquals("Check response code after updating resource icon", 409,
-                               updatedRestResponse.getErrorCode().intValue());
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               // validate response
-               assertNotNull("check response object is not null after get resource", getRestResponse);
-               assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
-
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
-
-       }
-
-       @Test
-       public void UpdateResourceInformation_resourceVersion_11() throws Exception {
-
-               User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-               String resourceBaseVersion = "0.1";
-
-               // create resource
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
-               // restResponse);
-
-               // Certify Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               String resourceCertifyVersion = "1.0";
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceDetails.getVersion(), LifeCycleStatesEnum.CHECKOUT);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-               // validate response
-               List<String> resourceList = new ArrayList<String>();
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), resourceList,
-                               updatedRestResponse.getResponse());
-               // assertEquals("Check response code after updating resource icon", 409,
-               // updatedRestResponse.getErrorCode().intValue());
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               // validate response
-               assertNotNull("check response object is not null after get resource", getRestResponse);
-
-               assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
-
-               assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
-
-       }
-
-       @Test
-       public void UpdateResourceInformation_resourceVersion_02() throws Exception {
-
-               String resourceBaseVersion = "0.1";
-
-               // create resource
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
-               // restResponse);
-
-               // Certify Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               // String resourceCertifyVersion = "0.1";
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKOUT);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-               // validate response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after updating resource icon", 200,
-                               updatedRestResponse.getErrorCode().intValue());
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               // validate response
-               assertNotNull("check response object is not null after get resource", getRestResponse);
-               assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
-
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(updatedResourceDetails, getResourceRespJavaObject);
-
-               // delete resource
-               RestResponse response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
-                               updatedResourceDetails.getName(), "0.1");
-               BaseRestUtils.checkDeleteResponse(response);
-               response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
-                               updatedResourceDetails.getName(), "0.2");
-               BaseRestUtils.checkDeleteResponse(response);
-
-       }
-
-       @Test
-       public void UpdateResourceIcon_resourceVersion_11() throws Exception {
-               // Can be changed only if major version is "0".
-
-               User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-               String resourceBaseVersion = "0.1";
-
-               // create resource
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
-               // restResponse);
-
-               // Certify Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               String resourceCertifyVersion = "1.0";
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               // ResourceReqDetails updatedResourceDetails =
-               // defineUpdatedResourse(resourceName);
-               ResourceReqDetails updatedResourceDetails = defineResourse();
-               // updatedResourceDetails.setVendorName("updatedVandorName");
-               updatedResourceDetails.setIcon("updatedIcon");
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-               // validate response
-               List<String> resourceList = new ArrayList<String>();
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_ICON_CANNOT_BE_CHANGED.name(), resourceList,
-                               updatedRestResponse.getResponse());
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               // validate response
-               assertNotNull("check response object is not null after get resource", getRestResponse);
-               assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
-
-       }
-
-       @Test
-       public void UpdateResourceVandorName_resourceVersion_11() throws Exception {
-               // Can be changed only if the major resource version is "0".
-               User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-               String resourceBaseVersion = "0.1";
-
-               // create resource
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
-               // restResponse);
-
-               // Certify Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               String resourceCertifyVersion = "1.0";
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               // ResourceReqDetails updatedResourceDetails =
-               // defineUpdatedResourse(resourceName);
-               ResourceReqDetails updatedResourceDetails = defineResourse();
-
-               updatedResourceDetails.setVendorName("updatedVandorName");
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-               // validate response
-               List<String> resourceList = new ArrayList<String>();
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_VENDOR_NAME_CANNOT_BE_CHANGED.name(),
-                               resourceList, updatedRestResponse.getResponse());
-               assertEquals("Check response code after updating resource icon", 400,
-                               updatedRestResponse.getErrorCode().intValue());
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               // validate response
-               assertNotNull("check response object is not null after get resource", getRestResponse);
-               assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
-
-       }
-
-       @Test
-       public void UpdateResourceName_resourceVersion_11() throws Exception {
-               // Can be changed only if the major resource version is "0".
-               User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-               String resourceBaseVersion = "0.1";
-
-               // create resource
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("create resource failed", 201, restResponse.getErrorCode().intValue());
-               String resourceName = resourceDetails.getName();
-
-               // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
-               // restResponse);
-
-               // Certify Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               String resourceCertifyVersion = "1.0";
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+            {
+                // change resourceName parameter
+                updatedResourceDetails.setName("UpdatedResourceName" + notValidCharsArray[i]);
+                resource_Name.add("UpdatedResourceName" + notValidCharsArray[i]);
+                updatedResourceDetails.setTags(resource_Name);
+                updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                        sdncAdminModifierDetails, uniqueId, "");
+                // validate response
+                // ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_TAG.name(),
+                // Empty_List, updatedRestResponse.getResponse());
+                ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_COMPONENT_NAME.name(), resourceList,
+                        updatedRestResponse.getResponse());
+
+            }
+        }
+
+        // resourceName length more then 50 characters
+        // Duplicate tags are allowed and should be de-duplicated by server side
+        resource_Name.add(resourceName);
+        resource_Name.add("tag1");
+        resource_Name.add("tag1");
+        resource_Name.add("tag2");
+        resource_Name.add("tag2");
+
+        resourceList.add(1, "1024");
+        // updatedResourceDetails.setName("123456789012345678901234567890123456789012345678901");
+        updatedResourceDetails.setName(new String(new char[1025]).replace("\0", "a"));
+        // resource_Name.add("123456789012345678901234567890123456789012345678901");
+        updatedResourceDetails.setTags(resource_Name);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncAdminModifierDetails,
+                uniqueId, "");
+        // validate response
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_NAME_EXCEEDS_LIMIT.name(), resourceList,
+                updatedRestResponse.getResponse());
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncAdminModifierDetails,
+                resourceDetails.getUniqueId());
+        // validate response
+        assertNotNull("check response object is not null after get resource", getRestResponse);
+        assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
+
+        // delete resource
+        RestResponse response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncAdminModifierDetails,
+                updatedResourceDetails.getName(), "0.1");
+        BaseRestUtils.checkDeleteResponse(response);
+    }
+
+    @Test
+    public void UpdateResourceInformation_NotCheckedOut() throws Exception {
+
+        String resourceBaseVersion = "0.1";
+        List<String> resourceList = new ArrayList<String>();
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        // CheckIn Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKIN); // NOT_CERTIFIED_CHECKIN
+        assertNotNull("check response object is not null after checkout resource", checkoutResource);
+        assertNotNull("check error code exists in response after checkIn resource", checkoutResource.getErrorCode());
+        assertEquals("Check response code after checkin resource", 200, checkoutResource.getErrorCode().intValue());
+
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), resourceList,
+                updatedRestResponse.getResponse());
+        assertEquals("Check response code after updating resource icon", 409,
+                updatedRestResponse.getErrorCode().intValue());
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        // validate response
+        assertNotNull("check response object is not null after get resource", getRestResponse);
+        assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
+
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
+
+    }
+
+    @Test
+    public void UpdateResourceInformation_resourceVersion_11() throws Exception {
+
+        User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+        String resourceBaseVersion = "0.1";
+
+        // create resource
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
+        // restResponse);
+
+        // Certify Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        /*logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());*/
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        String resourceCertifyVersion = "1.0";
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceDetails.getVersion(), LifeCycleStatesEnum.CHECKOUT);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+        // validate response
+        List<String> resourceList = new ArrayList<String>();
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), resourceList,
+                updatedRestResponse.getResponse());
+        // assertEquals("Check response code after updating resource icon", 409,
+        // updatedRestResponse.getErrorCode().intValue());
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        // validate response
+        assertNotNull("check response object is not null after get resource", getRestResponse);
+
+        assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
+
+        assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
+
+    }
+
+    @Test
+    public void UpdateResourceInformation_resourceVersion_02() throws Exception {
+
+        String resourceBaseVersion = "0.1";
+
+        // create resource
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
+        // restResponse);
+
+        // Certify Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        // String resourceCertifyVersion = "0.1";
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKOUT);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+        // validate response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after updating resource icon", 200,
+                updatedRestResponse.getErrorCode().intValue());
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        // validate response
+        assertNotNull("check response object is not null after get resource", getRestResponse);
+        assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
+
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(updatedResourceDetails, getResourceRespJavaObject);
+
+        // delete resource
+        RestResponse response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
+                updatedResourceDetails.getName(), "0.1");
+        BaseRestUtils.checkDeleteResponse(response);
+        response = ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails,
+                updatedResourceDetails.getName(), "0.2");
+        BaseRestUtils.checkDeleteResponse(response);
+
+    }
+
+    @Test
+    public void UpdateResourceIcon_resourceVersion_11() throws Exception {
+        // Can be changed only if major version is "0".
+
+        User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+        String resourceBaseVersion = "0.1";
+
+        // create resource
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
+        // restResponse);
+
+        // Certify Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        /*logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());*/
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        String resourceCertifyVersion = "1.0";
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        // ResourceReqDetails updatedResourceDetails =
+        // defineUpdatedResourse(resourceName);
+        ResourceReqDetails updatedResourceDetails = defineResourse();
+        // updatedResourceDetails.setVendorName("updatedVandorName");
+        updatedResourceDetails.setIcon("updatedIcon");
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+        // validate response
+        List<String> resourceList = new ArrayList<String>();
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_ICON_CANNOT_BE_CHANGED.name(), resourceList,
+                updatedRestResponse.getResponse());
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        // validate response
+        assertNotNull("check response object is not null after get resource", getRestResponse);
+        assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
+
+    }
+
+    @Test
+    public void UpdateResourceVandorName_resourceVersion_11() throws Exception {
+        // Can be changed only if the major resource version is "0".
+        User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+        String resourceBaseVersion = "0.1";
+
+        // create resource
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
+        // restResponse);
+
+        // Certify Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        /*logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());*/
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        String resourceCertifyVersion = "1.0";
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        // ResourceReqDetails updatedResourceDetails =
+        // defineUpdatedResourse(resourceName);
+        ResourceReqDetails updatedResourceDetails = defineResourse();
+
+        updatedResourceDetails.setVendorName("updatedVandorName");
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+        // validate response
+        List<String> resourceList = new ArrayList<String>();
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_VENDOR_NAME_CANNOT_BE_CHANGED.name(),
+                resourceList, updatedRestResponse.getResponse());
+        assertEquals("Check response code after updating resource icon", 400,
+                updatedRestResponse.getErrorCode().intValue());
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        // validate response
+        assertNotNull("check response object is not null after get resource", getRestResponse);
+        assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
+
+    }
+
+    @Test
+    public void UpdateResourceName_resourceVersion_11() throws Exception {
+        // Can be changed only if the major resource version is "0".
+        User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+        String resourceBaseVersion = "0.1";
+
+        // create resource
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("create resource failed", 201, restResponse.getErrorCode().intValue());
+        String resourceName = resourceDetails.getName();
+
+        // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
+        // restResponse);
+
+        // Certify Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        /*logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());*/
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        String resourceCertifyVersion = "1.0";
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
 
                /*
                 * //ResourceReqDetails updatedResourceDetails =
@@ -1319,1330 +1306,1330 @@ public class UpdateResourceMetadataTest extends ComponentBaseTest {
                 * updatedResourceDetails.setResourceName("updatedResourceName");
                 * updatedResourceDetails.setIcon("updatedResourceName");
                 */
-               resourceDetails.setName("updatedResourceName");
-               List<String> tagList = new ArrayList<String>();
-               tagList.add(0, "updatedResourceName");
-               resourceDetails.setTags(tagList);
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-               // validate response
-               List<String> resourceList = new ArrayList<String>();
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NAME_CANNOT_BE_CHANGED.name(), resourceList,
-                               updatedRestResponse.getResponse());
-
-       }
-
-       @Test
-       public void UpdateResourceTag_resourceVersion_11() throws Exception {
-               // Tag Can be updated when major version is "0".
-               User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-               String resourceBaseVersion = "0.1";
-
-               // create resource
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
-               // restResponse);
-
-               // Certify Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               String resourceCertifyVersion = "1.0";
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               // ResourceReqDetails updatedResourceDetails =
-               // defineUpdatedResourse(resourceName);
-               ResourceReqDetails updatedResourceDetails = defineResourse();
-               // updatedResourceDetails.setVendorName("updatedVandorName");
-
-               ArrayList<String> resourceTags = new ArrayList<String>();
-               resourceTags.add("NewTag");
-               resourceTags.add(resourceDetails.getName());
-
-               updatedResourceDetails.setTags(resourceTags);
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-               // validate response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               assertNotNull("check response object is not null after update resource", getRestResponse);
-               parseResponseAndValidate(updatedResourceDetails, getRestResponse);
-
-       }
-
-       @Test
-       public void UpdateAllowedParames_resourceVersion_11() throws Exception {
-
-               // Tag, contactId, vendorRelease,tags And description - Can be also
-               // updated when major version is NOT "0".
-               User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-               String resourceBaseVersion = "0.1";
-
-               // create resource
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-
-               // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
-               // restResponse);
-
-               // Certify Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               String resourceCertifyVersion = "1.0";
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               // ResourceReqDetails updatedResourceDetails =
-               // defineUpdatedResourse(resourceName);
-               ResourceReqDetails updatedResourceDetails = defineResourse();
-               // updatedResourceDetails.setVendorName("updatedVandorName");
-
-               // updated allowed parameters when major resource version is NOT "0"
-               ArrayList<String> resourceTags = new ArrayList<String>();
-               resourceTags.add("NewTag");
-               resourceTags.add(resourceDetails.getName());
-               updatedResourceDetails.setTags(resourceTags);
-               updatedResourceDetails.setDescription("UpdatedDescription");
-               updatedResourceDetails.setVendorRelease("5.1");
-               updatedResourceDetails.setContactId("bt750h");
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-               // validate response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               assertNotNull("check response object is not null after update resource", getRestResponse);
-               parseResponseAndValidate(updatedResourceDetails, getRestResponse);
-
-       }
-
-       @Test
-       public void UpdateResourceDerivedFrom_resourceVersion_11() throws Exception {
-               // DerivedFrom parameter - Can be updated when major version is "0".
-               User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-               String resourceBaseVersion = "0.1";
-
-               // create resource
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String resourceName = resourceDetails.getName();
-
-               // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
-               // restResponse);
-
-               // Certify Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
-                               resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               String resourceCertifyVersion = "1.0";
-               logger.debug("Changing resource life cycle ");
-               checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
-               assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
-
-               // ResourceReqDetails updatedResourceDetails =
-               // defineUpdatedResourse(resourceName);
-               ResourceReqDetails updatedResourceDetails = defineResourse();
-               ArrayList<String> drivenFrom = new ArrayList<String>();
-               drivenFrom.add(0, "tosca.nodes.Container.Application");
-               updatedResourceDetails.setDerivedFrom(drivenFrom);
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-               // validate response
-               List<String> resourceList = new ArrayList<String>();
-               ResourceRestUtils.checkSuccess(updatedRestResponse);
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               // validate response
-               assertNotNull("check response object is not null after get resource", getRestResponse);
-               assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
-
-       }
-
-       @Test
-       public void UpdateResource_vendorNameValidation() throws Exception {
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               String updatedVendorName = "";
-               String uniqueId = resourceDetails.getUniqueId();
-               resourceDetails.setVendorName(updatedVendorName);
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
-                               sdncModifierDetails, uniqueId, "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.MISSING_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               // update resource vendorName metadata: 1 characters
-               updatedVendorName = "   ";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.MISSING_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               // update resource vendorName metadata: 25 characters
-               updatedVendorName = "Verification and validati";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               // update resource vendorName metadata: 26 characters
-               updatedVendorName = "Verification and validatii";
-               // set vendorName
-               List<String> myList = new ArrayList<String>();
-               myList.add(0, "25");
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.VENDOR_NAME_EXCEEDS_LIMIT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               // update resource VendorRelease metadata: forbidden characters
-               updatedVendorName = "A1<";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorName = "A1>";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorName = "A1:";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorName = "A1\"";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorName = "A1/";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorName = "A1\\";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorName = "A1|";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorName = "A1?";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorName = "A1*";
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               // update resource vendorName metadata: null
-               updatedVendorName = null;
-               // set vendorName
-               resourceDetails.setVendorName(updatedVendorName);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.MISSING_VENDOR_NAME.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-       }
-
-       @Test
-       public void UpdateResource_vendorReleaseValidation() throws Exception {
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               RestResponse updatedRestResponse;
-               String uniqueId = resourceDetails.getUniqueId();
-               String updatedVendorRelease;
-               // set VendorRelease
-
-               // update resource VendorRelease metadata: 1 characters
-               updatedVendorRelease = "1";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               // update resource VendorRelease metadata: 25 characters
-               updatedVendorRelease = "(!#1.00000000000000000000";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               // update resource VendorRelease metadata: 26 characters
-               updatedVendorRelease = "(!#1.000000000000000000005";// set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.VENDOR_RELEASE_EXCEEDS_LIMIT.name(),
-                               Arrays.asList("" + ValidationUtils.VENDOR_RELEASE_MAX_LENGTH), updatedRestResponse.getResponse());
-
-               // UpdateAndValidate(sdncModifierDetails, resourceDetails,
-               // ActionStatus.VENDOR_RELEASE_EXCEEDS_LIMIT.name(),
-               // Arrays.asList(""+ValidationUtils.VENDOR_RELEASE_MAX_LENGTH));
-
-               // update resource VendorRelease metadata: forbidden characters
-               updatedVendorRelease = "A1<";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorRelease = "A1>";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorRelease = "A1:";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorRelease = "A1\"";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorRelease = "A1/";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorRelease = "A1\\";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorRelease = "A1|";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorRelease = "A1?";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               updatedVendorRelease = "A1*";
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               // update resource VendorRelease metadata: null
-               updatedVendorRelease = null;
-               // set VendorRelease
-               resourceDetails.setVendorRelease(updatedVendorRelease);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.MISSING_VENDOR_RELEASE.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-       }
-
-       @Test
-       public void UpdateResource_contactIdValidation() throws Exception { // [a-zA-Z]{2}[0-9]{3}[a-zA-Z0-9]{1}
-                                                                                                                                                       // (6
-                                                                                                                                                       // characters
-                                                                                                                                                       // now,
-                                                                                                                                                       // may
-                                                                                                                                                       // be
-                                                                                                                                                       // expanded
-                                                                                                                                                       // up
-                                                                                                                                                       // to
-                                                                                                                                                       // 8
-                                                                                                                                                       // characters
-                                                                                                                                                       // in
-                                                                                                                                                       // the
-                                                                                                                                                       // future).
-                                                                                                                                                       // Convert
-                                                                                                                                                       // Upper
-                                                                                                                                                       // case
-                                                                                                                                                       // character
-                                                                                                                                                       // to
-                                                                                                                                                       // lower
-                                                                                                                                                       // case
-               RestResponse updatedRestResponse;
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               String uniqueId = resourceDetails.getUniqueId();
-
-               List<String> myList = new ArrayList<String>();
-               myList.add(0, "Resource");
-               String updatedcontactId = "";
-               resourceDetails.setContactId(updatedcontactId);
-
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "ab12345";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "      ";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "ab 50h";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "ab123c";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               updatedcontactId = "cd789E";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-
-               resourceDetails.setContactId(updatedcontactId.toLowerCase());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               updatedcontactId = "ef4567";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               updatedcontactId = "AA012A";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-
-               resourceDetails.setContactId(updatedcontactId.toLowerCase());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               updatedcontactId = "CD012c";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-
-               resourceDetails.setContactId(updatedcontactId.toLowerCase());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               updatedcontactId = "EF0123";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-
-               resourceDetails.setContactId(updatedcontactId.toLowerCase());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               ////////////////////////////// **************//////////////////////////////
-               List<String> resource = Arrays.asList("Resource");
-               updatedcontactId = "01345a";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "0y000B";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "Y1000b";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "abxyzC";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "cdXYZc";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "efXY1D";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "EFabcD";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "EFABCD";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "EFABC1";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "efui1D";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "efui1!";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "ef555!";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = ",f555";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               updatedcontactId = "EF55.5";
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               // update resource contactId metadata: extended character set (128–255)
-               resourceDetails.setContactId(extendedCharsStringBuilder());
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-               // update resource contactId metadata: null
-               updatedcontactId = null;
-               resourceDetails.setContactId(updatedcontactId);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_CONTACT.name(), myList,
-                               updatedRestResponse.getResponse());
-
-       }
-
-       @Test
-       public void UpdateResource_TagsFieldValidation() throws Exception {
-               RestResponse updatedRestResponse;
-               // define and create resource
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               String uniqueId = resourceDetails.getUniqueId();
-
-               String updatedTagField = "";
-               ArrayList<String> resourceTags = new ArrayList<String>();
-               resourceTags.add(updatedTagField);
-               // set description
-               resourceDetails.setTags(resourceTags);
-               List<String> variables = Arrays.asList("Resource", "tag");
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_FIELD_FORMAT.name(), variables,
-                               updatedRestResponse.getResponse());
-
-               // update resource tags metadata: empty
-               resourceTags = new ArrayList<String>();
-               // set Tags
-               resourceDetails.setTags(resourceTags);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_TAGS.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-
-               // update resource description metadata: 1 characters
-               updatedTagField = "A";
-               resourceTags = new ArrayList<String>();
-               resourceTags.add(updatedTagField);
-               resourceTags.add(resourceDetails.getName());
-               // set description
-               resourceDetails.setTags(resourceTags);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               // OK - tag up to 50 chars
-               updatedTagField = "The Indian-crested.porcupine_The Indian cresteddds";
-               resourceTags.add(updatedTagField);
-               resourceDetails.setTags(resourceTags);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               // OK - sum is 1024, 50x20+48+20(commas)+6(cisco4 - resource name)
-               String updatedTagField1 = "The Indian-crested.porcupine_The Indian crestedd01";
-               String updatedTagField2 = "The Indian-crested.porcupine_The Indian crestedd02";
-               String updatedTagField3 = "The Indian-crested.porcupine_The Indian crestedd03";
-               String updatedTagField4 = "The Indian-crested.porcupine_The Indian crestedd04";
-               String updatedTagField5 = "The Indian-crested.porcupine_The Indian crestedd05";
-               String updatedTagField6 = "The Indian-crested.porcupine_The Indian crestedd06";
-               String updatedTagField7 = "The Indian-crested.porcupine_The Indian crestedd07";
-               String updatedTagField8 = "The Indian-crested.porcupine_The Indian crestedd08";
-               String updatedTagField9 = "The Indian-crested.porcupine_The Indian crestedd09";
-               String updatedTagField10 = "The Indian-crested.porcupine_The Indian crestedd10";
-               String updatedTagField11 = "The Indian-crested.porcupine_The Indian crestedd11";
-               String updatedTagField12 = "The Indian-crested.porcupine_The Indian crestedd12";
-               String updatedTagField13 = "The Indian-crested.porcupine_The Indian crestedd13";
-               String updatedTagField14 = "The Indian-crested.porcupine_The Indian crestedd14";
-               String updatedTagField15 = "The Indian-crested.porcupine_The Indian crestedd15";
-               String updatedTagField16 = "The Indian-crested.porcupine_The Indian crestedd16";
-               String updatedTagField17 = "The Indian-crested.porcupine_The Indian crestedd17";
-               String updatedTagField18 = "The Indian-crested.porcupine_The Indian crestedd18";
-               String updatedTagField19 = "The Indian-crested.porcupine_The Indian crestaa";
-
-               resourceTags = new ArrayList<String>();
-               resourceTags.add(updatedTagField);
-               resourceTags.add(updatedTagField1);
-               resourceTags.add(updatedTagField2);
-               resourceTags.add(updatedTagField3);
-               resourceTags.add(updatedTagField4);
-               resourceTags.add(updatedTagField5);
-               resourceTags.add(updatedTagField6);
-               resourceTags.add(updatedTagField7);
-               resourceTags.add(updatedTagField8);
-               resourceTags.add(updatedTagField9);
-               resourceTags.add(updatedTagField10);
-               resourceTags.add(updatedTagField11);
-               resourceTags.add(updatedTagField12);
-               resourceTags.add(updatedTagField13);
-               resourceTags.add(updatedTagField14);
-               resourceTags.add(updatedTagField15);
-               resourceTags.add(updatedTagField16);
-               resourceTags.add(updatedTagField17);
-               resourceTags.add(updatedTagField18);
-               resourceTags.add(updatedTagField19);
-               resourceTags.add(resourceDetails.getName());
-               // set description
-               resourceDetails.setTags(resourceTags);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               // Add another tag-exceeds limit
-               resourceTags.add("d");
-               resourceDetails.setTags(resourceTags);
-               ArrayList<String> myArray = new ArrayList<String>();
-               myArray.add(0, "1024");
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_TAGS_EXCEED_LIMIT.name(), myArray,
-                               updatedRestResponse.getResponse());
-
-               // Tag exceeds limit - 51
-               resourceTags = new ArrayList<String>();
-               updatedTagField = "The Indian-crested.porcupine_The Indian crestedddsw";
-               resourceTags.add(updatedTagField);
-               resourceTags.add(resourceDetails.getName());
-               // set description
-               resourceDetails.setTags(resourceTags);
-               myArray.remove(0);
-               myArray.add(0, "50");
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_SINGLE_TAG_EXCEED_LIMIT.name(), myArray,
-                               updatedRestResponse.getResponse());
-
-       }
-
-       @Test
-       public void UpdateResource_DesriptionFieldValidation() throws Exception {
-               // define and create resource
-               RestResponse updatedRestResponse;
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               String uniqueId = resourceDetails.getUniqueId();
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               List<String> resource = new ArrayList<>();
-               resource.add("Resource");
-               // update resource description metadata: 0 characters
-               String updatedDescription = "";
-               // set description
-               resourceDetails.setDescription(updatedDescription);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_DESCRIPTION.name(), resource,
-                               updatedRestResponse.getResponse());
-
-               // update resource description metadata: null
-               updatedDescription = null;
-               // set description
-               resourceDetails.setDescription(updatedDescription);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_DESCRIPTION.name(), resource,
-                               updatedRestResponse.getResponse());
-
-               // update resource description metadata: 1 characters
-               updatedDescription = "A";
-               // set description
-               resourceDetails.setDescription(updatedDescription);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               // update resource description metadata: 1024 characters
-               updatedDescription = "The Indian crested porcupine *{Hystrix indica}*, or Indian porcupine is a member of the Old World porcupines."
-                               + "It is quite an adaptable rodent, found throughout southern Asia and the Middle East."
-                               + "It is tolerant of several different habitats: mountains, tropical and subtropical grasslands, scrublands, and forests."
-                               + "It is a large rodent, growing more than 0.9 m = (3 ft) long and weighing 14.5 kg = (32 lb)! [citation needed] It is covered in multiple layers of quills."
-                               + "The longest quills grow from its shoulders to about a third of the animal's length."
-                               + "Its tail is covered in short, hollow quills that can rattle when threatened."
-                               + "It has broad feet and long claws for digging. When attacked, the Indian crested porcupine raises its quills and rattles the hollow quills on its tail."
-                               + "If the predator persists past these threats, the porcupine launches a backwards assault, hoping to stab its attacker with its quills."
-                               + "It does this so effectively that most brushes between predators and the Indian porcupine end in death or severe injury";
-               // set description
-               resourceDetails.setDescription(updatedDescription);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               parseResponseAndValidate(resourceDetails, updatedRestResponse);
-
-               // update resource description metadata: 1025 characters
-               updatedDescription = "The Indian crested porcupine *{Hystrix indica}*, or Indian porcupine is a member of the Old World porcupines."
-                               + "It is quite an adaptable rodent, found throughout southern Asia and the Middle East."
-                               + "It is tolerant of several different habitats: mountains, tropical and subtropical grasslands, scrublands, and forests."
-                               + "It is a large rodent, growing more than 0.9 m = (3 ft) long and weighing 14.5 kg = (32 lb)! [citation needed] It is covered in multiple layers of quills."
-                               + "The longest quills grow from its shoulders to about a third of the animal's length."
-                               + "Its tail is covered in short, hollow quills that can rattle when threatened."
-                               + "It has broad feet and long claws for digging. When attacked, the Indian crested porcupine raises its quills and rattles the hollow quills on its tail."
-                               + "If the predator persists past these threats, the porcupine launches a backwards assault, hoping to stab its attacker with its quills."
-                               + "It does this so effectively that most brushes between predators and the Indian porcupine end in death or severe injury.";
-               // set description
-               resourceDetails.setDescription(updatedDescription);
-               resource.add(1, "1024");
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
-                               "");
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_DESCRIPTION_EXCEEDS_LIMIT.name(), resource,
-                               updatedRestResponse.getResponse());
-
-       }
-
-       @Test
-       public void UpdateResource_TagsFormatValidation() throws Exception {
-               char[] notValidCharsArray = getTagInValidFormatChars();
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check recourse created ", 201, restResponse.getErrorCode().intValue());
-               String resourceName = resourceDetails.getName();
-
-               // update tag details
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-               ArrayList<String> resourceTags = new ArrayList<String>();
-
-               String updatedTagField;
-               RestResponse updatedRestResponse;
-               List<String> variables = Arrays.asList("Resource", "tag");
-
-               for (int i = 0; i < notValidCharsArray.length; i++) {
-                       updatedTagField = "UpdatedTag" + notValidCharsArray[i];
-                       resourceTags = new ArrayList<String>();
-                       resourceTags.add(updatedTagField);
-                       resourceTags.add(resourceDetails.getName());
-                       // set description
-                       updatedResourceDetails.setTags(resourceTags);
-
-                       updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
-                                       resourceDetails.getUniqueId(), "");
-                       // validate response
-                       assertNotNull("check response object is not null after update resource", updatedRestResponse);
-                       assertNotNull("check error code exists in response after update resource",
-                                       updatedRestResponse.getErrorCode());
-                       ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_FIELD_FORMAT.name(), variables,
-                                       updatedRestResponse.getResponse());
-                       assertEquals("Check response code after updating resource icon", 400,
-                                       updatedRestResponse.getErrorCode().intValue());
-                       assertEquals("Check response code after updating resource icon", "Bad Request",
-                                       updatedRestResponse.getResponseMessage().toString());
-
-               }
-
-       }
-
-       @Test
-       public void UpdateResourceCategory_negativeFlow() throws Exception {
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after update resource", 201, restResponse.getErrorCode().intValue());
-               Resource resourceBeforeUpdate = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
-               String uniqueID = resourceDetails.getUniqueId();
-
-               // Update resource Category Successfully
-               ResourceReqDetails updatedResourceDetails = resourceDetails;
-
-               updatedResourceDetails.removeAllCategories();
-               updatedResourceDetails.addCategoryChain(ServiceCategoriesEnum.MOBILITY.getValue(),
-                               ResourceCategoryEnum.APPLICATION_L4_DATABASE.getSubCategory());
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-
-               // validate response
-               List<String> resourceList = new ArrayList<String>();
-               resourceList.add(0, "Resource");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CATEGORY.name(), resourceList,
-                               updatedRestResponse.getResponse());
-               assertEquals("Check response code after updating resource", 400, updatedRestResponse.getErrorCode().intValue());
-
-               // Updating resource category
-               updatedResourceDetails = defineUpdateResourceWithNonUpdatableFields(resourceBeforeUpdate);
-               updatedResourceDetails.addCategory("");
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
-                               resourceDetails.getUniqueId(), "");
-               // validate response
-               resourceList = new ArrayList<String>();
-               resourceList.add(0, "Resource");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_CATEGORY.name(), resourceList,
-                               updatedRestResponse.getResponse());
-               assertEquals("Check response code after updating resource", 400, updatedRestResponse.getErrorCode().intValue());
-
-               // Updating resource category
-               updatedResourceDetails = defineUpdateResourceWithNonUpdatableFields(resourceBeforeUpdate);
-               updatedResourceDetails.addCategory("XXXXXX");
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
-                               resourceDetails.getUniqueId(), "");
-               // validate response
-               resourceList = new ArrayList<String>();
-               resourceList.add(0, "Resource");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CATEGORY.name(), resourceList,
-                               updatedRestResponse.getResponse());
-               assertEquals("Check response code after updating resource", 400, updatedRestResponse.getErrorCode().intValue());
-
-               // CheckIn Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceDetails.getVersion(), LifeCycleStatesEnum.CHECKIN); // NOT_CERTIFIED_CHECKIN
-               assertEquals("Check response code after checkin resource", 200, checkoutResource.getErrorCode().intValue());
-
-               // Update resource Category
-               updatedResourceDetails = defineUpdateResourceWithNonUpdatableFields(resourceBeforeUpdate);
-               updatedResourceDetails.addCategory(ServiceCategoriesEnum.VOIP.getValue());
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
-                               resourceDetails.getUniqueId(), "");
-               // verify response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), Empty_List,
-                               updatedRestResponse.getResponse());
-               assertEquals("Check response code after updating resource", 409, updatedRestResponse.getErrorCode().intValue());
-
-               // CheckIn Resource
-               logger.debug("Changing resource life cycle ");
-               RestResponse checkinResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               resourceDetails.getVersion(), LifeCycleStatesEnum.CHECKOUT); // NOT_CERTIFIED_CHECKIN
-               assertNotNull("check response object is not null after checkout resource", checkoutResource);
-               assertNotNull("check error code exists in response after checkIn resource", checkoutResource.getErrorCode());
-               assertEquals("Check response code after checkin resource", 200, checkoutResource.getErrorCode().intValue());
-
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails, uniqueID);
-               assertNotNull("check response object is not null after update resource", getRestResponse);
-               parseResponseAndValidate(resourceDetails, getRestResponse);
-
-       }
-
-       @Test
-       public void UpdateResourceCategorySuccessfully() throws Exception {
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after update resource", 201, restResponse.getErrorCode().intValue());
-               Resource resourceBeforeUpdate = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
-
-               // Update resource Category Successfully
-               ResourceReqDetails updatedResourceDetails = resourceDetails;
-
-               updatedResourceDetails.removeAllCategories();
-               updatedResourceDetails.addCategoryChain(ResourceCategoryEnum.APPLICATION_L4_DATABASE.getCategory(),
-                               ResourceCategoryEnum.APPLICATION_L4_DATABASE.getSubCategory());
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncModifierDetails, resourceDetails.getUniqueId(), "");
-
-               // validate response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
-               // parseResponseAndValidateNonUpdatable(updatedResourceDetails,
-               // updatedRestResponse);
-               parseResponseAndValidate(updatedResourceDetails, updatedRestResponse);
-
-               // validate category updated
-               assertTrue(updatedResourceDetails.getCategories().get(0).getName()
-                               .equals(ResourceCategoryEnum.APPLICATION_L4_DATABASE.getCategory()));
-
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
-                               resourceDetails.getUniqueId());
-               assertNotNull("check response object is not null after update resource", getRestResponse);
-               parseResponseAndValidate(updatedResourceDetails, getRestResponse);
-
-               ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, updatedResourceDetails.getName(), "0.1");
-       }
-
-       // Benny
-
-       @Test
-       public void Validation_UpdateIcon() throws Exception {
-               // Fields to update (Forbidden)
-               String _updatedIcon = "mySecondIcon.Jpg";
-
-               // administrator permissions
-               User sdncAdminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
-
-               // define and create resource
-               ResourceRestUtils.deleteResourceByNameAndVersion(sdncAdminModifierDetails, resourceDetails.getName(), "0.1");
-
-               RestResponse restResponse = createResource(sdncAdminModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               String resourceName = resourceDetails.getName();
-
-               // update metadata details
-               ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
-               // change icon of metadata
-               updatedResourceDetails.setIcon(_updatedIcon);
-               // PUT request
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
-                               sdncAdminModifierDetails, resourceDetails.getUniqueId(), "");
-
-               // validate response
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_ICON.name(),
-                               Arrays.asList("Resource"), updatedRestResponse.getResponse());
-
-               // empty icon
-               _updatedIcon = "";
-               updatedResourceDetails.setIcon(_updatedIcon);
-               updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncAdminModifierDetails,
-                               resourceDetails.getUniqueId(), "");
-               assertNotNull("check response object is not null after update resource", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_ICON.name(),
-                               Arrays.asList("Resource"), updatedRestResponse.getResponse());
-
-               // get resource with original name. original metadata should be returned
-               RestResponse getRestResponse = ResourceRestUtils.getResource(sdncAdminModifierDetails,
-                               resourceDetails.getUniqueId());
-               // validate response
-               assertNotNull("check response object is not null after get resource", getRestResponse);
-               assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
-
-               // parse updated response to javaObject
-               Resource getResourceRespJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(getRestResponse.getResponse());
-               // validate that metadata was not changed
-               ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
-
-               ResourceRestUtils.deleteResourceByNameAndVersion(sdncAdminModifierDetails, updatedResourceDetails.getName(),
-                               "0.1");
-
-       }
-
-       @Test
-       public void UpdateResourceTypeSuccess() throws Exception {
-               // LCS is CheckOut
-               String newResourceType = ResourceTypeEnum.VL.toString();
-               String currentResourceType = resourceDetails.getResourceType();
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               Resource currentResourceJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(restResponse.getResponse());
-
-               resourceDetails.setResourceType(newResourceType);
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
-                               sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
-               assertEquals("Check response code after create resource", 200, updatedRestResponse.getErrorCode().intValue());
-               Resource updatedResourceJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(updatedRestResponse.getResponse());
-               // assertTrue("Check resource type after update resource",
-               // updatedResourceJavaObject.getResourceType().toString().equals(resourceType));
-               assertTrue("Check resource type after update resource",
-                               updatedResourceJavaObject.getResourceType().toString().equals(currentResourceType));
-
-       }
-
-       @Test
-       public void UpdateResourceTypeAndNameSuccess() throws Exception {
-               // LCS is CheckOut
-               String newResourceType = ResourceTypeEnum.VL.toString();
-               String currentResourceType = resourceDetails.getResourceType();
-               String newResourceName = "new Name";
-
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               Resource currentResourceJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(restResponse.getResponse());
-
-               resourceDetails.setResourceType(newResourceType);
-               resourceDetails.setName(newResourceName);
-               List<String> tags = resourceDetails.getTags();
-               tags.add(newResourceName);
-               resourceDetails.setTags(tags);
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
-                               sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
-               assertEquals("Check response code after create resource", 200, updatedRestResponse.getErrorCode().intValue());
-               Resource updatedResourceJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(updatedRestResponse.getResponse());
-               assertTrue("Check resource type after update resource",
-                               updatedResourceJavaObject.getResourceType().toString().equals(currentResourceType));
-               assertTrue("Check resource name after update resource",
-                               updatedResourceJavaObject.getName().equals(newResourceName));
-
-       }
-
-       @Test
-       public void UpdateResourceTypeAfterResourceCertification() throws Exception {
-
-               String newResourceType = ResourceTypeEnum.VF.toString();
-               String currentResourceType = resourceDetails.getResourceType();
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               Resource currentResourceJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(restResponse.getResponse());
-
-               resourceDetails.setResourceType(newResourceType);
-               restResponse = LifecycleRestUtils.certifyResource(resourceDetails);
-               assertEquals("Check response code after resource CheckIn", 200, restResponse.getErrorCode().intValue());
-               restResponse = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               LifeCycleStatesEnum.CHECKOUT);
-               assertEquals("Check response code after resource CheckIn", 200, restResponse.getErrorCode().intValue());
-               currentResourceJavaObject = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
-                               sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
-               assertEquals("Check response code after create resource", 200, updatedRestResponse.getErrorCode().intValue());
-               Resource updatedResourceJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(updatedRestResponse.getResponse());
-               // assertTrue("Check resource type after update resource",
-               // updatedResourceJavaObject.getResourceType().toString().equals(newResourceType));
-               assertTrue("Check resource type after update resource",
-                               updatedResourceJavaObject.getResourceType().toString().equals(currentResourceType));
-
-       }
-
-       @Test
-       public void UpdateResourceTypeCheckInLCS() throws Exception {
-
-               String resourceType = ResourceTypeEnum.VL.toString();
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               Resource currentResourceJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(restResponse.getResponse());
-
-               resourceDetails.setResourceType(resourceType);
-               restResponse = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
-                               LifeCycleStatesEnum.CHECKIN);
-               assertEquals("Check response code after resource CheckIn", 200, restResponse.getErrorCode().intValue());
-
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
-                               sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
-
-               ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.RESTRICTED_OPERATION.name());
-
-               assertNotNull("check response object is not null after create resouce", updatedRestResponse);
-               assertNotNull("check error code exists in response after create resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after create resource", errorInfo.getCode(),
-                               updatedRestResponse.getErrorCode());
-
-               List<String> variables = new ArrayList<>();
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), variables,
-                               updatedRestResponse.getResponse());
-
-       }
-
-       @Test
-       public void UpdateResourceTypeCertifiedLCS() throws Exception {
-
-               String resourceType = ResourceTypeEnum.VL.toString();
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               Resource currentResourceJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(restResponse.getResponse());
-
-               restResponse = LifecycleRestUtils.certifyResource(resourceDetails);
-               assertEquals("Check response code after resource CheckIn", 200, restResponse.getErrorCode().intValue());
-
-               resourceDetails.setResourceType(resourceType);
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
-                               sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
-
-               ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.RESTRICTED_OPERATION.name());
-
-               assertNotNull("check response object is not null after create resouce", updatedRestResponse);
-               assertNotNull("check error code exists in response after create resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after create resource", errorInfo.getCode(),
-                               updatedRestResponse.getErrorCode());
-
-               List<String> variables = new ArrayList<>();
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), variables,
-                               updatedRestResponse.getResponse());
-
-       }
-
-       @Test
-       public void UpdateResourceTypeInvalidType() throws Exception {
-
-               String resourceType = "INVALID TYPE";
-               RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
-               assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
-               Resource currentResourceJavaObject = ResponseParser
-                               .convertResourceResponseToJavaObject(restResponse.getResponse());
+        resourceDetails.setName("updatedResourceName");
+        List<String> tagList = new ArrayList<String>();
+        tagList.add(0, "updatedResourceName");
+        resourceDetails.setTags(tagList);
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+        // validate response
+        List<String> resourceList = new ArrayList<String>();
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NAME_CANNOT_BE_CHANGED.name(), resourceList,
+                updatedRestResponse.getResponse());
+
+    }
+
+    @Test
+    public void UpdateResourceTag_resourceVersion_11() throws Exception {
+        // Tag Can be updated when major version is "0".
+        User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+        String resourceBaseVersion = "0.1";
+
+        // create resource
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
+        // restResponse);
+
+        // Certify Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        /*logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());*/
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        String resourceCertifyVersion = "1.0";
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        // ResourceReqDetails updatedResourceDetails =
+        // defineUpdatedResourse(resourceName);
+        ResourceReqDetails updatedResourceDetails = defineResourse();
+        // updatedResourceDetails.setVendorName("updatedVandorName");
+
+        ArrayList<String> resourceTags = new ArrayList<String>();
+        resourceTags.add("NewTag");
+        resourceTags.add(resourceDetails.getName());
+
+        updatedResourceDetails.setTags(resourceTags);
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+        // validate response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        assertNotNull("check response object is not null after update resource", getRestResponse);
+        parseResponseAndValidate(updatedResourceDetails, getRestResponse);
+
+    }
+
+    @Test
+    public void UpdateAllowedParames_resourceVersion_11() throws Exception {
+
+        // Tag, contactId, vendorRelease,tags And description - Can be also
+        // updated when major version is NOT "0".
+        User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+        String resourceBaseVersion = "0.1";
+
+        // create resource
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+
+        // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
+        // restResponse);
+
+        // Certify Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        /*logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());*/
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        String resourceCertifyVersion = "1.0";
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        // ResourceReqDetails updatedResourceDetails =
+        // defineUpdatedResourse(resourceName);
+        ResourceReqDetails updatedResourceDetails = defineResourse();
+        // updatedResourceDetails.setVendorName("updatedVandorName");
+
+        // updated allowed parameters when major resource version is NOT "0"
+        ArrayList<String> resourceTags = new ArrayList<String>();
+        resourceTags.add("NewTag");
+        resourceTags.add(resourceDetails.getName());
+        updatedResourceDetails.setTags(resourceTags);
+        updatedResourceDetails.setDescription("UpdatedDescription");
+        updatedResourceDetails.setVendorRelease("5.1");
+        updatedResourceDetails.setContactId("bt750h");
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+        // validate response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        assertNotNull("check response object is not null after update resource", getRestResponse);
+        parseResponseAndValidate(updatedResourceDetails, getRestResponse);
+
+    }
+
+    @Test
+    public void UpdateResourceDerivedFrom_resourceVersion_11() throws Exception {
+        // DerivedFrom parameter - Can be updated when major version is "0".
+        User adminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+        String resourceBaseVersion = "0.1";
+
+        // create resource
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String resourceName = resourceDetails.getName();
+
+        // resourceUtils.addResourceMandatoryArtifacts(sdncModifierDetails,
+        // restResponse);
+
+        // Certify Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CHECKIN);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        /*logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFICATIONREQUEST);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.STARTCERTIFICATION);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());*/
+
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, adminModifierDetails,
+                resourceBaseVersion, LifeCycleStatesEnum.CERTIFY);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        String resourceCertifyVersion = "1.0";
+        logger.debug("Changing resource life cycle ");
+        checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceCertifyVersion, LifeCycleStatesEnum.CHECKOUT);
+        assertEquals("Check response code after checkout resource", 200, checkoutResource.getErrorCode().intValue());
+
+        // ResourceReqDetails updatedResourceDetails =
+        // defineUpdatedResourse(resourceName);
+        ResourceReqDetails updatedResourceDetails = defineResourse();
+        ArrayList<String> drivenFrom = new ArrayList<String>();
+        drivenFrom.add(0, "tosca.nodes.Container.Application");
+        updatedResourceDetails.setDerivedFrom(drivenFrom);
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+        // validate response
+        List<String> resourceList = new ArrayList<String>();
+        ResourceRestUtils.checkSuccess(updatedRestResponse);
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        // validate response
+        assertNotNull("check response object is not null after get resource", getRestResponse);
+        assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
+
+    }
+
+    @Test
+    public void UpdateResource_vendorNameValidation() throws Exception {
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        String updatedVendorName = "";
+        String uniqueId = resourceDetails.getUniqueId();
+        resourceDetails.setVendorName(updatedVendorName);
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
+                sdncModifierDetails, uniqueId, "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.MISSING_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        // update resource vendorName metadata: 1 characters
+        updatedVendorName = "  ";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.MISSING_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        // update resource vendorName metadata: 25 characters
+        updatedVendorName = "Verification and validati";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        // update resource vendorName metadata: 26 characters
+        updatedVendorName = "Verification and validatii";
+        // set vendorName
+        List<String> myList = new ArrayList<String>();
+        myList.add(0, "25");
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.VENDOR_NAME_EXCEEDS_LIMIT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        // update resource VendorRelease metadata: forbidden characters
+        updatedVendorName = "A1<";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorName = "A1>";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorName = "A1:";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorName = "A1\"";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorName = "A1/";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorName = "A1\\";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorName = "A1|";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorName = "A1?";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorName = "A1*";
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        // update resource vendorName metadata: null
+        updatedVendorName = null;
+        // set vendorName
+        resourceDetails.setVendorName(updatedVendorName);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.MISSING_VENDOR_NAME.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+    }
+
+    @Test
+    public void UpdateResource_vendorReleaseValidation() throws Exception {
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        RestResponse updatedRestResponse;
+        String uniqueId = resourceDetails.getUniqueId();
+        String updatedVendorRelease;
+        // set VendorRelease
+
+        // update resource VendorRelease metadata: 1 characters
+        updatedVendorRelease = "1";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        // update resource VendorRelease metadata: 25 characters
+        updatedVendorRelease = "(!#1.00000000000000000000";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        // update resource VendorRelease metadata: 26 characters
+        updatedVendorRelease = "(!#1.000000000000000000005";// set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.VENDOR_RELEASE_EXCEEDS_LIMIT.name(),
+                Arrays.asList("" + ValidationUtils.VENDOR_RELEASE_MAX_LENGTH), updatedRestResponse.getResponse());
+
+        // UpdateAndValidate(sdncModifierDetails, resourceDetails,
+        // ActionStatus.VENDOR_RELEASE_EXCEEDS_LIMIT.name(),
+        // Arrays.asList(""+ValidationUtils.VENDOR_RELEASE_MAX_LENGTH));
+
+        // update resource VendorRelease metadata: forbidden characters
+        updatedVendorRelease = "A1<";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorRelease = "A1>";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorRelease = "A1:";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorRelease = "A1\"";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorRelease = "A1/";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorRelease = "A1\\";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorRelease = "A1|";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorRelease = "A1?";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        updatedVendorRelease = "A1*";
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_VENDOR_RELEASE.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        // update resource VendorRelease metadata: null
+        updatedVendorRelease = null;
+        // set VendorRelease
+        resourceDetails.setVendorRelease(updatedVendorRelease);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.MISSING_VENDOR_RELEASE.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+    }
+
+    @Test
+    public void UpdateResource_contactIdValidation() throws Exception { // [a-zA-Z]{2}[0-9]{3}[a-zA-Z0-9]{1}
+        // (6
+        // characters
+        // now,
+        // may
+        // be
+        // expanded
+        // up
+        // to
+        // 8
+        // characters
+        // in
+        // the
+        // future).
+        // Convert
+        // Upper
+        // case
+        // character
+        // to
+        // lower
+        // case
+        RestResponse updatedRestResponse;
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        String uniqueId = resourceDetails.getUniqueId();
+
+        List<String> myList = new ArrayList<String>();
+        myList.add(0, "Resource");
+        String updatedcontactId = "";
+        resourceDetails.setContactId(updatedcontactId);
+
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "ab12345";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "      ";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "ab 50h";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "ab123c";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        updatedcontactId = "cd789E";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+
+        resourceDetails.setContactId(updatedcontactId.toLowerCase());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        updatedcontactId = "ef4567";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        updatedcontactId = "AA012A";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+
+        resourceDetails.setContactId(updatedcontactId.toLowerCase());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        updatedcontactId = "CD012c";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+
+        resourceDetails.setContactId(updatedcontactId.toLowerCase());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        updatedcontactId = "EF0123";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+
+        resourceDetails.setContactId(updatedcontactId.toLowerCase());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        ////////////////////////////// **************//////////////////////////////
+        List<String> resource = Arrays.asList("Resource");
+        updatedcontactId = "01345a";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "0y000B";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "Y1000b";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "abxyzC";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "cdXYZc";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "efXY1D";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "EFabcD";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "EFABCD";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "EFABC1";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "efui1D";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "efui1!";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "ef555!";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = ",f555";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        updatedcontactId = "EF55.5";
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        // update resource contactId metadata: extended character set (128–255)
+        resourceDetails.setContactId(extendedCharsStringBuilder());
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+        // update resource contactId metadata: null
+        updatedcontactId = null;
+        resourceDetails.setContactId(updatedcontactId);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_CONTACT.name(), myList,
+                updatedRestResponse.getResponse());
+
+    }
+
+    @Test
+    public void UpdateResource_TagsFieldValidation() throws Exception {
+        RestResponse updatedRestResponse;
+        // define and create resource
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        String uniqueId = resourceDetails.getUniqueId();
+
+        String updatedTagField = "";
+        ArrayList<String> resourceTags = new ArrayList<String>();
+        resourceTags.add(updatedTagField);
+        // set description
+        resourceDetails.setTags(resourceTags);
+        List<String> variables = Arrays.asList("Resource", "tag");
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_FIELD_FORMAT.name(), variables,
+                updatedRestResponse.getResponse());
+
+        // update resource tags metadata: empty
+        resourceTags = new ArrayList<String>();
+        // set Tags
+        resourceDetails.setTags(resourceTags);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_TAGS.name(), Empty_List,
+                updatedRestResponse.getResponse());
+
+        // update resource description metadata: 1 characters
+        updatedTagField = "A";
+        resourceTags = new ArrayList<String>();
+        resourceTags.add(updatedTagField);
+        resourceTags.add(resourceDetails.getName());
+        // set description
+        resourceDetails.setTags(resourceTags);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        // OK - tag up to 50 chars
+        updatedTagField = "The Indian-crested.porcupine_The Indian cresteddds";
+        resourceTags.add(updatedTagField);
+        resourceDetails.setTags(resourceTags);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        // OK - sum is 1024, 50x20+48+20(commas)+6(cisco4 - resource name)
+        String updatedTagField1 = "The Indian-crested.porcupine_The Indian crestedd01";
+        String updatedTagField2 = "The Indian-crested.porcupine_The Indian crestedd02";
+        String updatedTagField3 = "The Indian-crested.porcupine_The Indian crestedd03";
+        String updatedTagField4 = "The Indian-crested.porcupine_The Indian crestedd04";
+        String updatedTagField5 = "The Indian-crested.porcupine_The Indian crestedd05";
+        String updatedTagField6 = "The Indian-crested.porcupine_The Indian crestedd06";
+        String updatedTagField7 = "The Indian-crested.porcupine_The Indian crestedd07";
+        String updatedTagField8 = "The Indian-crested.porcupine_The Indian crestedd08";
+        String updatedTagField9 = "The Indian-crested.porcupine_The Indian crestedd09";
+        String updatedTagField10 = "The Indian-crested.porcupine_The Indian crestedd10";
+        String updatedTagField11 = "The Indian-crested.porcupine_The Indian crestedd11";
+        String updatedTagField12 = "The Indian-crested.porcupine_The Indian crestedd12";
+        String updatedTagField13 = "The Indian-crested.porcupine_The Indian crestedd13";
+        String updatedTagField14 = "The Indian-crested.porcupine_The Indian crestedd14";
+        String updatedTagField15 = "The Indian-crested.porcupine_The Indian crestedd15";
+        String updatedTagField16 = "The Indian-crested.porcupine_The Indian crestedd16";
+        String updatedTagField17 = "The Indian-crested.porcupine_The Indian crestedd17";
+        String updatedTagField18 = "The Indian-crested.porcupine_The Indian crestedd18";
+        String updatedTagField19 = "The Indian-crested.porcupine_The Indian crestaa";
+
+        resourceTags = new ArrayList<String>();
+        resourceTags.add(updatedTagField);
+        resourceTags.add(updatedTagField1);
+        resourceTags.add(updatedTagField2);
+        resourceTags.add(updatedTagField3);
+        resourceTags.add(updatedTagField4);
+        resourceTags.add(updatedTagField5);
+        resourceTags.add(updatedTagField6);
+        resourceTags.add(updatedTagField7);
+        resourceTags.add(updatedTagField8);
+        resourceTags.add(updatedTagField9);
+        resourceTags.add(updatedTagField10);
+        resourceTags.add(updatedTagField11);
+        resourceTags.add(updatedTagField12);
+        resourceTags.add(updatedTagField13);
+        resourceTags.add(updatedTagField14);
+        resourceTags.add(updatedTagField15);
+        resourceTags.add(updatedTagField16);
+        resourceTags.add(updatedTagField17);
+        resourceTags.add(updatedTagField18);
+        resourceTags.add(updatedTagField19);
+        resourceTags.add(resourceDetails.getName());
+        // set description
+        resourceDetails.setTags(resourceTags);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        // Add another tag-exceeds limit
+        resourceTags.add("d");
+        resourceDetails.setTags(resourceTags);
+        ArrayList<String> myArray = new ArrayList<String>();
+        myArray.add(0, "1024");
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_TAGS_EXCEED_LIMIT.name(), myArray,
+                updatedRestResponse.getResponse());
+
+        // Tag exceeds limit - 51
+        resourceTags = new ArrayList<String>();
+        updatedTagField = "The Indian-crested.porcupine_The Indian crestedddsw";
+        resourceTags.add(updatedTagField);
+        resourceTags.add(resourceDetails.getName());
+        // set description
+        resourceDetails.setTags(resourceTags);
+        myArray.remove(0);
+        myArray.add(0, "50");
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_SINGLE_TAG_EXCEED_LIMIT.name(), myArray,
+                updatedRestResponse.getResponse());
+
+    }
+
+    @Test
+    public void UpdateResource_DesriptionFieldValidation() throws Exception {
+        // define and create resource
+        RestResponse updatedRestResponse;
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        String uniqueId = resourceDetails.getUniqueId();
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        List<String> resource = new ArrayList<>();
+        resource.add("Resource");
+        // update resource description metadata: 0 characters
+        String updatedDescription = "";
+        // set description
+        resourceDetails.setDescription(updatedDescription);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_DESCRIPTION.name(), resource,
+                updatedRestResponse.getResponse());
+
+        // update resource description metadata: null
+        updatedDescription = null;
+        // set description
+        resourceDetails.setDescription(updatedDescription);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_DESCRIPTION.name(), resource,
+                updatedRestResponse.getResponse());
+
+        // update resource description metadata: 1 characters
+        updatedDescription = "A";
+        // set description
+        resourceDetails.setDescription(updatedDescription);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        // update resource description metadata: 1024 characters
+        updatedDescription = "The Indian crested porcupine *{Hystrix indica}*, or Indian porcupine is a member of the Old World porcupines."
+                + "It is quite an adaptable rodent, found throughout southern Asia and the Middle East."
+                + "It is tolerant of several different habitats: mountains, tropical and subtropical grasslands, scrublands, and forests."
+                + "It is a large rodent, growing more than 0.9 m = (3 ft) long and weighing 14.5 kg = (32 lb)! [citation needed] It is covered in multiple layers of quills."
+                + "The longest quills grow from its shoulders to about a third of the animal's length."
+                + "Its tail is covered in short, hollow quills that can rattle when threatened."
+                + "It has broad feet and long claws for digging. When attacked, the Indian crested porcupine raises its quills and rattles the hollow quills on its tail."
+                + "If the predator persists past these threats, the porcupine launches a backwards assault, hoping to stab its attacker with its quills."
+                + "It does this so effectively that most brushes between predators and the Indian porcupine end in death or severe injury";
+        // set description
+        resourceDetails.setDescription(updatedDescription);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        parseResponseAndValidate(resourceDetails, updatedRestResponse);
+
+        // update resource description metadata: 1025 characters
+        updatedDescription = "The Indian crested porcupine *{Hystrix indica}*, or Indian porcupine is a member of the Old World porcupines."
+                + "It is quite an adaptable rodent, found throughout southern Asia and the Middle East."
+                + "It is tolerant of several different habitats: mountains, tropical and subtropical grasslands, scrublands, and forests."
+                + "It is a large rodent, growing more than 0.9 m = (3 ft) long and weighing 14.5 kg = (32 lb)! [citation needed] It is covered in multiple layers of quills."
+                + "The longest quills grow from its shoulders to about a third of the animal's length."
+                + "Its tail is covered in short, hollow quills that can rattle when threatened."
+                + "It has broad feet and long claws for digging. When attacked, the Indian crested porcupine raises its quills and rattles the hollow quills on its tail."
+                + "If the predator persists past these threats, the porcupine launches a backwards assault, hoping to stab its attacker with its quills."
+                + "It does this so effectively that most brushes between predators and the Indian porcupine end in death or severe injury.";
+        // set description
+        resourceDetails.setDescription(updatedDescription);
+        resource.add(1, "1024");
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails, sdncModifierDetails, uniqueId,
+                "");
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_DESCRIPTION_EXCEEDS_LIMIT.name(), resource,
+                updatedRestResponse.getResponse());
+
+    }
+
+    @Test
+    public void UpdateResource_TagsFormatValidation() throws Exception {
+        char[] notValidCharsArray = getTagInValidFormatChars();
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check recourse created ", 201, restResponse.getErrorCode().intValue());
+        String resourceName = resourceDetails.getName();
+
+        // update tag details
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+        ArrayList<String> resourceTags = new ArrayList<String>();
+
+        String updatedTagField;
+        RestResponse updatedRestResponse;
+        List<String> variables = Arrays.asList("Resource", "tag");
+
+        for (int i = 0; i < notValidCharsArray.length; i++) {
+            updatedTagField = "UpdatedTag" + notValidCharsArray[i];
+            resourceTags = new ArrayList<String>();
+            resourceTags.add(updatedTagField);
+            resourceTags.add(resourceDetails.getName());
+            // set description
+            updatedResourceDetails.setTags(resourceTags);
+
+            updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
+                    resourceDetails.getUniqueId(), "");
+            // validate response
+            assertNotNull("check response object is not null after update resource", updatedRestResponse);
+            assertNotNull("check error code exists in response after update resource",
+                    updatedRestResponse.getErrorCode());
+            ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_FIELD_FORMAT.name(), variables,
+                    updatedRestResponse.getResponse());
+            assertEquals("Check response code after updating resource icon", 400,
+                    updatedRestResponse.getErrorCode().intValue());
+            assertEquals("Check response code after updating resource icon", "Bad Request",
+                    updatedRestResponse.getResponseMessage().toString());
+
+        }
+
+    }
+
+    @Test
+    public void UpdateResourceCategory_negativeFlow() throws Exception {
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after update resource", 201, restResponse.getErrorCode().intValue());
+        Resource resourceBeforeUpdate = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
+        String uniqueID = resourceDetails.getUniqueId();
+
+        // Update resource Category Successfully
+        ResourceReqDetails updatedResourceDetails = resourceDetails;
+
+        updatedResourceDetails.removeAllCategories();
+        updatedResourceDetails.addCategoryChain(ServiceCategoriesEnum.MOBILITY.getValue(),
+                ResourceCategoryEnum.APPLICATION_L4_DATABASE.getSubCategory());
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+
+        // validate response
+        List<String> resourceList = new ArrayList<String>();
+        resourceList.add(0, "Resource");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CATEGORY.name(), resourceList,
+                updatedRestResponse.getResponse());
+        assertEquals("Check response code after updating resource", 400, updatedRestResponse.getErrorCode().intValue());
+
+        // Updating resource category
+        updatedResourceDetails = defineUpdateResourceWithNonUpdatableFields(resourceBeforeUpdate);
+        updatedResourceDetails.addCategory("");
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
+                resourceDetails.getUniqueId(), "");
+        // validate response
+        resourceList = new ArrayList<String>();
+        resourceList.add(0, "Resource");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_CATEGORY.name(), resourceList,
+                updatedRestResponse.getResponse());
+        assertEquals("Check response code after updating resource", 400, updatedRestResponse.getErrorCode().intValue());
+
+        // Updating resource category
+        updatedResourceDetails = defineUpdateResourceWithNonUpdatableFields(resourceBeforeUpdate);
+        updatedResourceDetails.addCategory("XXXXXX");
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
+                resourceDetails.getUniqueId(), "");
+        // validate response
+        resourceList = new ArrayList<String>();
+        resourceList.add(0, "Resource");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_CATEGORY.name(), resourceList,
+                updatedRestResponse.getResponse());
+        assertEquals("Check response code after updating resource", 400, updatedRestResponse.getErrorCode().intValue());
+
+        // CheckIn Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkoutResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceDetails.getVersion(), LifeCycleStatesEnum.CHECKIN); // NOT_CERTIFIED_CHECKIN
+        assertEquals("Check response code after checkin resource", 200, checkoutResource.getErrorCode().intValue());
+
+        // Update resource Category
+        updatedResourceDetails = defineUpdateResourceWithNonUpdatableFields(resourceBeforeUpdate);
+        updatedResourceDetails.addCategory(ServiceCategoriesEnum.VOIP.getValue());
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncModifierDetails,
+                resourceDetails.getUniqueId(), "");
+        // verify response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), Empty_List,
+                updatedRestResponse.getResponse());
+        assertEquals("Check response code after updating resource", 409, updatedRestResponse.getErrorCode().intValue());
+
+        // CheckIn Resource
+        logger.debug("Changing resource life cycle ");
+        RestResponse checkinResource = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                resourceDetails.getVersion(), LifeCycleStatesEnum.CHECKOUT); // NOT_CERTIFIED_CHECKIN
+        assertNotNull("check response object is not null after checkout resource", checkoutResource);
+        assertNotNull("check error code exists in response after checkIn resource", checkoutResource.getErrorCode());
+        assertEquals("Check response code after checkin resource", 200, checkoutResource.getErrorCode().intValue());
+
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails, uniqueID);
+        assertNotNull("check response object is not null after update resource", getRestResponse);
+        parseResponseAndValidate(resourceDetails, getRestResponse);
+
+    }
+
+    @Test
+    public void UpdateResourceCategorySuccessfully() throws Exception {
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after update resource", 201, restResponse.getErrorCode().intValue());
+        Resource resourceBeforeUpdate = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
+
+        // Update resource Category Successfully
+        ResourceReqDetails updatedResourceDetails = resourceDetails;
+
+        updatedResourceDetails.removeAllCategories();
+        updatedResourceDetails.addCategoryChain(ResourceCategoryEnum.APPLICATION_L4_DATABASE.getCategory(),
+                ResourceCategoryEnum.APPLICATION_L4_DATABASE.getSubCategory());
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncModifierDetails, resourceDetails.getUniqueId(), "");
+
+        // validate response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, updatedRestResponse.getErrorCode().intValue());
+        // parseResponseAndValidateNonUpdatable(updatedResourceDetails,
+        // updatedRestResponse);
+        parseResponseAndValidate(updatedResourceDetails, updatedRestResponse);
+
+        // validate category updated
+        assertTrue(updatedResourceDetails.getCategories().get(0).getName()
+                .equals(ResourceCategoryEnum.APPLICATION_L4_DATABASE.getCategory()));
+
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncModifierDetails,
+                resourceDetails.getUniqueId());
+        assertNotNull("check response object is not null after update resource", getRestResponse);
+        parseResponseAndValidate(updatedResourceDetails, getRestResponse);
+
+        ResourceRestUtils.deleteResourceByNameAndVersion(sdncModifierDetails, updatedResourceDetails.getName(), "0.1");
+    }
+
+    // Benny
+
+    @Test
+    public void Validation_UpdateIcon() throws Exception {
+        // Fields to update (Forbidden)
+        String _updatedIcon = "mySecondIcon.Jpg";
+
+        // administrator permissions
+        User sdncAdminModifierDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
+
+        // define and create resource
+        ResourceRestUtils.deleteResourceByNameAndVersion(sdncAdminModifierDetails, resourceDetails.getName(), "0.1");
+
+        RestResponse restResponse = createResource(sdncAdminModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        String resourceName = resourceDetails.getName();
+
+        // update metadata details
+        ResourceReqDetails updatedResourceDetails = defineUpdatedResourse(resourceName);
+        // change icon of metadata
+        updatedResourceDetails.setIcon(_updatedIcon);
+        // PUT request
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails,
+                sdncAdminModifierDetails, resourceDetails.getUniqueId(), "");
+
+        // validate response
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_INVALID_ICON.name(),
+                Arrays.asList("Resource"), updatedRestResponse.getResponse());
+
+        // empty icon
+        _updatedIcon = "";
+        updatedResourceDetails.setIcon(_updatedIcon);
+        updatedRestResponse = ResourceRestUtils.updateResourceMetadata(updatedResourceDetails, sdncAdminModifierDetails,
+                resourceDetails.getUniqueId(), "");
+        assertNotNull("check response object is not null after update resource", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.COMPONENT_MISSING_ICON.name(),
+                Arrays.asList("Resource"), updatedRestResponse.getResponse());
+
+        // get resource with original name. original metadata should be returned
+        RestResponse getRestResponse = ResourceRestUtils.getResource(sdncAdminModifierDetails,
+                resourceDetails.getUniqueId());
+        // validate response
+        assertNotNull("check response object is not null after get resource", getRestResponse);
+        assertNotNull("check error code exists in response after get resource", getRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", 200, getRestResponse.getErrorCode().intValue());
+
+        // parse updated response to javaObject
+        Resource getResourceRespJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(getRestResponse.getResponse());
+        // validate that metadata was not changed
+        ResourceValidationUtils.validateResourceReqVsResp(resourceDetails, getResourceRespJavaObject);
+
+        ResourceRestUtils.deleteResourceByNameAndVersion(sdncAdminModifierDetails, updatedResourceDetails.getName(),
+                "0.1");
+
+    }
+
+    @Test
+    public void UpdateResourceTypeSuccess() throws Exception {
+        // LCS is CheckOut
+        String newResourceType = ResourceTypeEnum.VL.toString();
+        String currentResourceType = resourceDetails.getResourceType();
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        Resource currentResourceJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(restResponse.getResponse());
+
+        resourceDetails.setResourceType(newResourceType);
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
+                sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
+        assertEquals("Check response code after create resource", 200, updatedRestResponse.getErrorCode().intValue());
+        Resource updatedResourceJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(updatedRestResponse.getResponse());
+        // assertTrue("Check resource type after update resource",
+        // updatedResourceJavaObject.getResourceType().toString().equals(resourceType));
+        assertTrue("Check resource type after update resource",
+                updatedResourceJavaObject.getResourceType().toString().equals(currentResourceType));
+
+    }
+
+    @Test
+    public void UpdateResourceTypeAndNameSuccess() throws Exception {
+        // LCS is CheckOut
+        String newResourceType = ResourceTypeEnum.VL.toString();
+        String currentResourceType = resourceDetails.getResourceType();
+        String newResourceName = "new Name";
+
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        Resource currentResourceJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(restResponse.getResponse());
+
+        resourceDetails.setResourceType(newResourceType);
+        resourceDetails.setName(newResourceName);
+        List<String> tags = resourceDetails.getTags();
+        tags.add(newResourceName);
+        resourceDetails.setTags(tags);
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
+                sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
+        assertEquals("Check response code after create resource", 200, updatedRestResponse.getErrorCode().intValue());
+        Resource updatedResourceJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(updatedRestResponse.getResponse());
+        assertTrue("Check resource type after update resource",
+                updatedResourceJavaObject.getResourceType().toString().equals(currentResourceType));
+        assertTrue("Check resource name after update resource",
+                updatedResourceJavaObject.getName().equals(newResourceName));
+
+    }
+
+    @Test
+    public void UpdateResourceTypeAfterResourceCertification() throws Exception {
+
+        String newResourceType = ResourceTypeEnum.VF.toString();
+        String currentResourceType = resourceDetails.getResourceType();
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        Resource currentResourceJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(restResponse.getResponse());
+
+        resourceDetails.setResourceType(newResourceType);
+        restResponse = LifecycleRestUtils.certifyResource(resourceDetails);
+        assertEquals("Check response code after resource CheckIn", 200, restResponse.getErrorCode().intValue());
+        restResponse = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                LifeCycleStatesEnum.CHECKOUT);
+        assertEquals("Check response code after resource CheckIn", 200, restResponse.getErrorCode().intValue());
+        currentResourceJavaObject = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
+                sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
+        assertEquals("Check response code after create resource", 200, updatedRestResponse.getErrorCode().intValue());
+        Resource updatedResourceJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(updatedRestResponse.getResponse());
+        // assertTrue("Check resource type after update resource",
+        // updatedResourceJavaObject.getResourceType().toString().equals(newResourceType));
+        assertTrue("Check resource type after update resource",
+                updatedResourceJavaObject.getResourceType().toString().equals(currentResourceType));
+
+    }
+
+    @Test
+    public void UpdateResourceTypeCheckInLCS() throws Exception {
+
+        String resourceType = ResourceTypeEnum.VL.toString();
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        Resource currentResourceJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(restResponse.getResponse());
+
+        resourceDetails.setResourceType(resourceType);
+        restResponse = LifecycleRestUtils.changeResourceState(resourceDetails, sdncModifierDetails,
+                LifeCycleStatesEnum.CHECKIN);
+        assertEquals("Check response code after resource CheckIn", 200, restResponse.getErrorCode().intValue());
+
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
+                sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
+
+        ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.RESTRICTED_OPERATION.name());
+
+        assertNotNull("check response object is not null after create resouce", updatedRestResponse);
+        assertNotNull("check error code exists in response after create resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after create resource", errorInfo.getCode(),
+                updatedRestResponse.getErrorCode());
+
+        List<String> variables = new ArrayList<>();
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), variables,
+                updatedRestResponse.getResponse());
+
+    }
+
+    @Test
+    public void UpdateResourceTypeCertifiedLCS() throws Exception {
+
+        String resourceType = ResourceTypeEnum.VL.toString();
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        Resource currentResourceJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(restResponse.getResponse());
+
+        restResponse = LifecycleRestUtils.certifyResource(resourceDetails);
+        assertEquals("Check response code after resource CheckIn", 200, restResponse.getErrorCode().intValue());
+
+        resourceDetails.setResourceType(resourceType);
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
+                sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
+
+        ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.RESTRICTED_OPERATION.name());
+
+        assertNotNull("check response object is not null after create resouce", updatedRestResponse);
+        assertNotNull("check error code exists in response after create resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after create resource", errorInfo.getCode(),
+                updatedRestResponse.getErrorCode());
+
+        List<String> variables = new ArrayList<>();
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), variables,
+                updatedRestResponse.getResponse());
+
+    }
+
+    @Test
+    public void UpdateResourceTypeInvalidType() throws Exception {
+
+        String resourceType = "INVALID TYPE";
+        RestResponse restResponse = createResource(sdncModifierDetails, resourceDetails);
+        assertEquals("Check response code after create resource", 201, restResponse.getErrorCode().intValue());
+        Resource currentResourceJavaObject = ResponseParser
+                .convertResourceResponseToJavaObject(restResponse.getResponse());
 
-               resourceDetails.setResourceType(resourceType);
-               RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
-                               sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
-
-               ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.INVALID_CONTENT.name());
-
-               assertNotNull("check response object is not null after update resouce", updatedRestResponse);
-               assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
-               assertEquals("Check response code after update resource", errorInfo.getCode(),
-                               updatedRestResponse.getErrorCode());
+        resourceDetails.setResourceType(resourceType);
+        RestResponse updatedRestResponse = ResourceRestUtils.updateResourceMetadata(resourceDetails,
+                sdncModifierDetails, currentResourceJavaObject.getUniqueId(), "");
+
+        ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(ActionStatus.INVALID_CONTENT.name());
+
+        assertNotNull("check response object is not null after update resouce", updatedRestResponse);
+        assertNotNull("check error code exists in response after update resource", updatedRestResponse.getErrorCode());
+        assertEquals("Check response code after update resource", errorInfo.getCode(),
+                updatedRestResponse.getErrorCode());
 
-               List<String> variables = new ArrayList<>();
-               ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_CONTENT.name(), variables,
-                               updatedRestResponse.getResponse());
+        List<String> variables = new ArrayList<>();
+        ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_CONTENT.name(), variables,
+                updatedRestResponse.getResponse());
 
-       }
+    }
 }