/*
* Copyright (c) 2013 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.api.service.impl.resource;
import static org.apache.commons.lang.StringUtils.EMPTY;
import java.net.URI;
import org.junit.Assert;
import org.junit.Test;
import com.emc.storageos.db.client.model.DataObject;
import com.emc.storageos.db.client.model.StorageSystem;
import com.emc.storageos.svcs.errorhandling.resources.APIException;
import com.emc.storageos.svcs.errorhandling.resources.BadRequestException;
import com.emc.storageos.svcs.errorhandling.resources.NotFoundException;
import com.emc.storageos.svcs.errorhandling.resources.ServiceCode;
public class ArgValidatorTest extends Assert {
@Test
public void testCheckValidUri(){
ArgValidator.checkUri(URI.create("urn:storageos:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc1"));
}
@Test(expected = APIException.class)
public void testCheckUriBadScheme() {
try {
ArgValidator.checkUri(URI.create("other:storageos:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc1"));
} catch (APIException apiException) {
assertEquals(ServiceCode.API_PARAMETER_INVALID_URI, apiException.getServiceCode());
assertEquals("Parameter other:storageos:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc1 is not a valid URI", apiException.getLocalizedMessage());
throw apiException;
}
}
@Test(expected = APIException.class)
public void testCheckUriBadSchemeSpecificPart() {
try {
ArgValidator.checkUri(URI.create("urn:other:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc1"));
} catch (APIException apiException) {
assertEquals(ServiceCode.API_PARAMETER_INVALID_URI, apiException.getServiceCode());
assertEquals("Parameter urn:other:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc1 is not a valid URI", apiException.getLocalizedMessage());
throw apiException;
}
}
@Test(expected = APIException.class)
public void testCheckEmptyUri() {
try {
ArgValidator.checkUri(URI.create(EMPTY));
} catch (APIException apiException) {
assertEquals(ServiceCode.API_PARAMETER_INVALID_URI, apiException.getServiceCode());
assertEquals("Parameter is not a valid URI", apiException.getLocalizedMessage());
throw apiException;
}
}
@Test(expected = APIException.class)
public void testCheckNullUri() {
try {
ArgValidator.checkUri(null);
} catch (APIException apiException) {
assertEquals(ServiceCode.API_PARAMETER_INVALID_URI, apiException.getServiceCode());
assertEquals("Parameter null is not a valid URI", apiException.getLocalizedMessage());
throw apiException;
}
}
@Test
public void testCheckFieldNotNullPositiveCase() {
final Object mockObject = new Object();
ArgValidator.checkFieldNotNull(mockObject, "mock");
}
@Test(expected = BadRequestException.class)
public void testCheckFieldNotNullNegativeCase() {
try {
ArgValidator.checkFieldNotNull(null, "mock");
} catch (BadRequestException e) {
assertEquals(ServiceCode.API_PARAMETER_MISSING, e.getServiceCode());
assertEquals("Required parameter mock was missing or empty", e.getLocalizedMessage());
throw e;
}
}
@Test
public void testCheckEntityPositiveCase() {
ArgValidator.checkEntity(new StorageSystem(), URI.create("urn:storageos:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc"),
false);
}
@Test(expected = NotFoundException.class)
public void testCheckEntityNegativeCase() {
ArgValidator.checkEntity(null, URI.create("urn:storageos:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc"), true);
}
@Test(expected = BadRequestException.class)
public void testCheckEntityInactiveEntityBadRequest() {
try {
DataObject object = new DataObject(){};
object.setId(URI.create("urn:storageos:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc1"));
object.setInactive(true);
ArgValidator.checkEntity(object, object.getId(), false);
} catch (APIException bre) {
assertEquals(ServiceCode.API_PARAMETER_INACTIVE, bre.getServiceCode());
assertEquals("Entity with the given id urn:storageos:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc1 is inactive and marked for deletion",
bre.getLocalizedMessage());
throw bre;
}
}
@Test(expected = NotFoundException.class)
public void testCheckEntityInactiveEntityNotfound() {
try {
DataObject object = new DataObject(){};
object.setId(URI.create("urn:storageos:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc1"));
object.setInactive(true);
ArgValidator.checkEntity(object, object.getId(), true);
} catch (APIException bre) {
assertEquals(ServiceCode.API_URL_ENTITY_INACTIVE, bre.getServiceCode());
assertEquals("Entity specified in URL with the given id urn:storageos:StorageSystem:2b91947d-749f-4356-aad7-dcd7f7906197:vdc1 is inactive and marked for deletion",
bre.getLocalizedMessage());
throw bre;
}
}
}