mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Adding more testcases and fixes.
This commit is contained in:
parent
8278264733
commit
ba03bccd4c
@ -29,6 +29,7 @@ import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
|||||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.ActivityInfoProviderService;
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.ActivityInfoProviderService;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
|
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
|
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.*;
|
||||||
@ -54,22 +55,27 @@ public class ActivityProviderServiceImpl implements ActivityInfoProviderService
|
|||||||
@HeaderParam("If-Modified-Since") String ifModifiedSince) {
|
@HeaderParam("If-Modified-Since") String ifModifiedSince) {
|
||||||
Activity activity;
|
Activity activity;
|
||||||
DeviceManagementProviderService dmService;
|
DeviceManagementProviderService dmService;
|
||||||
try {
|
Response response = validateAdminUser();
|
||||||
RequestValidationUtil.validateActivityId(id);
|
if (response == null) {
|
||||||
|
try {
|
||||||
|
RequestValidationUtil.validateActivityId(id);
|
||||||
|
|
||||||
dmService = DeviceMgtAPIUtils.getDeviceManagementService();
|
dmService = DeviceMgtAPIUtils.getDeviceManagementService();
|
||||||
activity = dmService.getOperationByActivityId(id);
|
activity = dmService.getOperationByActivityId(id);
|
||||||
if (activity == null) {
|
if (activity == null) {
|
||||||
return Response.status(404).entity(
|
return Response.status(404).entity(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage("No activity can be " +
|
new ErrorResponse.ErrorResponseBuilder().setMessage("No activity can be " +
|
||||||
"found upon the provided activity id '" + id + "'").build()).build();
|
"found upon the provided activity id '" + id + "'").build()).build();
|
||||||
|
}
|
||||||
|
return Response.status(Response.Status.OK).entity(activity).build();
|
||||||
|
} catch (OperationManagementException e) {
|
||||||
|
String msg = "ErrorResponse occurred while fetching the activity for the supplied id.";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||||
}
|
}
|
||||||
return Response.status(Response.Status.OK).entity(activity).build();
|
} else {
|
||||||
} catch (OperationManagementException e) {
|
return response;
|
||||||
String msg = "ErrorResponse occurred while fetching the activity for the supplied id.";
|
|
||||||
log.error(msg, e);
|
|
||||||
return Response.serverError().entity(
|
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,7 +126,6 @@ public class ActivityProviderServiceImpl implements ActivityInfoProviderService
|
|||||||
long sinceTimestamp;
|
long sinceTimestamp;
|
||||||
long timestamp = 0;
|
long timestamp = 0;
|
||||||
boolean isIfModifiedSinceSet = false;
|
boolean isIfModifiedSinceSet = false;
|
||||||
boolean isSinceSet = false;
|
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("getActivities since: " + since + " , offset: " + offset + " ,limit: " + limit + " ," +
|
log.debug("getActivities since: " + since + " , offset: " + offset + " ,limit: " + limit + " ," +
|
||||||
"ifModifiedSince: " + ifModifiedSince);
|
"ifModifiedSince: " + ifModifiedSince);
|
||||||
@ -150,7 +155,6 @@ public class ActivityProviderServiceImpl implements ActivityInfoProviderService
|
|||||||
"Invalid date string is provided in 'since' filter").build()).build();
|
"Invalid date string is provided in 'since' filter").build()).build();
|
||||||
}
|
}
|
||||||
sinceTimestamp = sinceDate.getTime();
|
sinceTimestamp = sinceDate.getTime();
|
||||||
isSinceSet = true;
|
|
||||||
timestamp = sinceTimestamp / 1000;
|
timestamp = sinceTimestamp / 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,38 +166,57 @@ public class ActivityProviderServiceImpl implements ActivityInfoProviderService
|
|||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("getActivities final timestamp " + timestamp);
|
log.debug("getActivities final timestamp " + timestamp);
|
||||||
}
|
}
|
||||||
|
Response response = validateAdminUser();
|
||||||
List<Activity> activities;
|
if (response == null) {
|
||||||
ActivityList activityList = new ActivityList();
|
List<Activity> activities;
|
||||||
DeviceManagementProviderService dmService;
|
ActivityList activityList = new ActivityList();
|
||||||
try {
|
DeviceManagementProviderService dmService;
|
||||||
if (log.isDebugEnabled()) {
|
try {
|
||||||
log.debug("Calling database to get activities.");
|
if (log.isDebugEnabled()) {
|
||||||
}
|
log.debug("Calling database to get activities.");
|
||||||
dmService = DeviceMgtAPIUtils.getDeviceManagementService();
|
|
||||||
activities = dmService.getActivitiesUpdatedAfter(timestamp, limit, offset);
|
|
||||||
activityList.setList(activities);
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Calling database to get activity count.");
|
|
||||||
}
|
|
||||||
int count = dmService.getActivityCountUpdatedAfter(timestamp);
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Activity count: " + count);
|
|
||||||
}
|
|
||||||
activityList.setCount(count);
|
|
||||||
if (activities == null || activities.size() == 0) {
|
|
||||||
if (isIfModifiedSinceSet) {
|
|
||||||
return Response.notModified().build();
|
|
||||||
}
|
}
|
||||||
|
dmService = DeviceMgtAPIUtils.getDeviceManagementService();
|
||||||
|
activities = dmService.getActivitiesUpdatedAfter(timestamp, limit, offset);
|
||||||
|
activityList.setList(activities);
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Calling database to get activity count.");
|
||||||
|
}
|
||||||
|
int count = dmService.getActivityCountUpdatedAfter(timestamp);
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Activity count: " + count);
|
||||||
|
}
|
||||||
|
activityList.setCount(count);
|
||||||
|
if (activities == null || activities.size() == 0) {
|
||||||
|
if (isIfModifiedSinceSet) {
|
||||||
|
return Response.notModified().build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Response.ok().entity(activityList).build();
|
||||||
|
} catch (OperationManagementException e) {
|
||||||
|
String msg
|
||||||
|
= "ErrorResponse occurred while fetching the activities updated after given time stamp.";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||||
}
|
}
|
||||||
return Response.ok().entity(activityList).build();
|
} else {
|
||||||
} catch (OperationManagementException e) {
|
return response;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Response validateAdminUser(){
|
||||||
|
try {
|
||||||
|
if (!DeviceMgtAPIUtils.isAdmin()) {
|
||||||
|
return Response.status(Response.Status.UNAUTHORIZED).entity("Unauthorized operation! Only admin role can perform " +
|
||||||
|
"this operation.").build();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
} catch (UserStoreException e) {
|
||||||
String msg
|
String msg
|
||||||
= "ErrorResponse occurred while fetching the activities updated after given time stamp.";
|
= "Error occurred while validating the user have admin role!";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
return Response.serverError().entity(
|
return Response.serverError().entity(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -702,4 +702,18 @@ public class DeviceMgtAPIUtils {
|
|||||||
SSLContext.setDefault(sslContext);
|
SSLContext.setDefault(sslContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean isAdmin() throws UserStoreException {
|
||||||
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
|
UserRealm realmService = DeviceMgtAPIUtils.getRealmService().getTenantUserRealm(tenantId);
|
||||||
|
String adminRoleName = realmService.getRealmConfiguration().getAdminRoleName();
|
||||||
|
String userName = PrivilegedCarbonContext.getThreadLocalCarbonContext().getUsername();
|
||||||
|
String[] roles = realmService.getUserStoreManager().getRoleListOfUser(userName);
|
||||||
|
for (String role: roles){
|
||||||
|
if (role != null && role.equals(adminRoleName)){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -94,8 +94,6 @@ public interface OperationManager {
|
|||||||
Activity getOperationByActivityIdAndDevice(String activity, DeviceIdentifier deviceId)
|
Activity getOperationByActivityIdAndDevice(String activity, DeviceIdentifier deviceId)
|
||||||
throws OperationManagementException;
|
throws OperationManagementException;
|
||||||
|
|
||||||
List<Activity> getActivitiesUpdatedAfter(long timestamp) throws OperationManagementException;
|
|
||||||
|
|
||||||
List<Activity> getActivitiesUpdatedAfter(long timestamp, int limit, int offset) throws OperationManagementException;
|
List<Activity> getActivitiesUpdatedAfter(long timestamp, int limit, int offset) throws OperationManagementException;
|
||||||
|
|
||||||
int getActivityCountUpdatedAfter(long timestamp) throws OperationManagementException;
|
int getActivityCountUpdatedAfter(long timestamp) throws OperationManagementException;
|
||||||
|
|||||||
@ -760,21 +760,6 @@ public class OperationManagerImpl implements OperationManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Activity> getActivitiesUpdatedAfter(long timestamp) throws OperationManagementException {
|
|
||||||
try {
|
|
||||||
OperationManagementDAOFactory.openConnection();
|
|
||||||
return operationDAO.getActivitiesUpdatedAfter(timestamp);
|
|
||||||
} catch (SQLException e) {
|
|
||||||
throw new OperationManagementException("Error occurred while opening a connection to the data source.", e);
|
|
||||||
} catch (OperationManagementDAOException e) {
|
|
||||||
throw new OperationManagementException("Error occurred while getting the activity list changed after a " +
|
|
||||||
"given time.", e);
|
|
||||||
} finally {
|
|
||||||
OperationManagementDAOFactory.closeConnection();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Activity> getActivitiesUpdatedAfter(long timestamp, int limit,
|
public List<Activity> getActivitiesUpdatedAfter(long timestamp, int limit,
|
||||||
int offset) throws OperationManagementException {
|
int offset) throws OperationManagementException {
|
||||||
|
|||||||
@ -566,8 +566,6 @@ public interface DeviceManagementProviderService {
|
|||||||
|
|
||||||
Activity getOperationByActivityIdAndDevice(String activity, DeviceIdentifier deviceId) throws OperationManagementException;
|
Activity getOperationByActivityIdAndDevice(String activity, DeviceIdentifier deviceId) throws OperationManagementException;
|
||||||
|
|
||||||
List<Activity> getActivitiesUpdatedAfter(long timestamp) throws OperationManagementException;
|
|
||||||
|
|
||||||
List<Activity> getActivitiesUpdatedAfter(long timestamp, int limit, int offset) throws OperationManagementException;
|
List<Activity> getActivitiesUpdatedAfter(long timestamp, int limit, int offset) throws OperationManagementException;
|
||||||
|
|
||||||
int getActivityCountUpdatedAfter(long timestamp) throws OperationManagementException;
|
int getActivityCountUpdatedAfter(long timestamp) throws OperationManagementException;
|
||||||
|
|||||||
@ -1458,11 +1458,6 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
|||||||
return DeviceManagementDataHolder.getInstance().getOperationManager().getOperationByActivityIdAndDevice(activity, deviceId);
|
return DeviceManagementDataHolder.getInstance().getOperationManager().getOperationByActivityIdAndDevice(activity, deviceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Activity> getActivitiesUpdatedAfter(long timestamp) throws OperationManagementException {
|
|
||||||
return DeviceManagementDataHolder.getInstance().getOperationManager().getActivitiesUpdatedAfter(timestamp);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Activity> getActivitiesUpdatedAfter(long timestamp, int limit, int offset) throws OperationManagementException {
|
public List<Activity> getActivitiesUpdatedAfter(long timestamp, int limit, int offset) throws OperationManagementException {
|
||||||
limit = DeviceManagerUtil.validateActivityListPageSize(limit);
|
limit = DeviceManagerUtil.validateActivityListPageSize(limit);
|
||||||
|
|||||||
@ -425,22 +425,7 @@ public class OperationManagementTests {
|
|||||||
deviceIds.get(0).getType());
|
deviceIds.get(0).getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dependsOnMethods = "updateOperation")
|
@Test(dependsOnMethods = "getOperationUpdatedAfterWithLimitAndOffset")
|
||||||
public void getActivitiesUpdatedAfter() throws OperationManagementException, ParseException {
|
|
||||||
List<Activity> operations = this.operationMgtService.getActivitiesUpdatedAfter
|
|
||||||
(this.commandActivityBeforeUpdatedTimestamp / 1000);
|
|
||||||
Assert.assertTrue(operations != null && operations.size() == 1,
|
|
||||||
"The operations updated after the created should be 1");
|
|
||||||
Activity operation = operations.get(0);
|
|
||||||
Assert.assertTrue(operation.getActivityStatus() != null && operation.getActivityStatus().size() == 1,
|
|
||||||
"The operation should be having the activity status of atleast one device");
|
|
||||||
Assert.assertEquals(operation.getActivityStatus().get(0).getDeviceIdentifier().getId(),
|
|
||||||
deviceIds.get(0).getId());
|
|
||||||
Assert.assertEquals(operation.getActivityStatus().get(0).getDeviceIdentifier().getType(),
|
|
||||||
deviceIds.get(0).getType());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(dependsOnMethods = "getActivitiesUpdatedAfter")
|
|
||||||
public void getActivityCountUpdatedAfter() throws OperationManagementException, ParseException {
|
public void getActivityCountUpdatedAfter() throws OperationManagementException, ParseException {
|
||||||
int activityCount = this.operationMgtService.getActivityCountUpdatedAfter
|
int activityCount = this.operationMgtService.getActivityCountUpdatedAfter
|
||||||
(this.commandActivityBeforeUpdatedTimestamp / 1000);
|
(this.commandActivityBeforeUpdatedTimestamp / 1000);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user