/*
* Copyright (c) 2011-2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.api.service;
import com.emc.storageos.api.service.ApiTestBase.BalancedWebResource;
import com.sun.jersey.api.client.ClientResponse;
import org.junit.Assert;
import org.springframework.util.CollectionUtils;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
/**
* A class that is used to clean up created resources like authnprovider, tenant, etc
* upon the completion of each tests.
*
*/
public class CleanupResource {
private String _method;
private String _url;
private BalancedWebResource _user;
private Object _requestParam;
private int _expectedStatus;
public CleanupResource(String method, String url, BalancedWebResource user, Object requestParam) {
_method = method;
_url = url;
_user = user;
_requestParam = requestParam;
_expectedStatus = 200;
}
public CleanupResource(String method, String url, BalancedWebResource user, Object requestParam, int expectedStatus) {
_method = method;
_url = url;
_user = user;
_requestParam = requestParam;
_expectedStatus = expectedStatus;
}
// Function that iterates the list in reverse order and cleans up all the registered
// resources. Doing it in reverse order to make the cleanup success (the first created
// resource should be cleaned at last).
public static void cleanUpTestResources(List<CleanupResource> cleanupResourcetList) {
if (!CollectionUtils.isEmpty(cleanupResourcetList)) {
Iterator<CleanupResource> reverseItr = ((LinkedList<CleanupResource>)cleanupResourcetList).descendingIterator();
while (reverseItr.hasNext()) {
CleanupResource cleanupResource = reverseItr.next();
if (cleanupResource._method.equalsIgnoreCase("delete")) {
ClientResponse response = cleanupResource._user.path(cleanupResource._url).delete(ClientResponse.class);
Assert.assertEquals(cleanupResource._expectedStatus, response.getStatus());
} else if (cleanupResource._method.equalsIgnoreCase("put")) {
ClientResponse response = cleanupResource._user.path(cleanupResource._url).put(ClientResponse.class,
cleanupResource._requestParam);
Assert.assertEquals(cleanupResource._expectedStatus, response.getStatus());
} else if (cleanupResource._method.equalsIgnoreCase("post")) {
ClientResponse response = cleanupResource._user.path(cleanupResource._url).post(ClientResponse.class,
cleanupResource._requestParam);
Assert.assertEquals(cleanupResource._expectedStatus, response.getStatus());
}
}
}
}
}