forked from community/device-mgt-core
New Activity Info Provider API resource which accept an array of activity IDs to get activity information (#1161)
* New Activity Info Provider API resource which accept an array of activity IDs to get activity information * Modifications to the new activity info provider api * Add acceptable activity list count validation * Modifications to the new activity provider API resource * Added license header to the test class * Modifications to the new activity provider apirevert-70aa11f8
parent
15bea25074
commit
e56fb5f4de
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.wso2.carbon.device.mgt.jaxrs.common;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ActivityIdList {
|
||||||
|
|
||||||
|
private String ids;
|
||||||
|
private List<String> idList;
|
||||||
|
|
||||||
|
public ActivityIdList(String ids) {
|
||||||
|
this.ids = ids;
|
||||||
|
if (ids != null) {
|
||||||
|
String[] splits = ids.split(",");
|
||||||
|
if (splits.length > 0 && splits.length < 11 && splits[0] != null && !splits[0].isEmpty()) {
|
||||||
|
idList = Arrays.asList(splits);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getIdList() {
|
||||||
|
return idList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIds() {
|
||||||
|
return ids;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,245 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.wso2.carbon.device.mgt.jaxrs.service.impl;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.powermock.api.mockito.PowerMockito;
|
||||||
|
import org.powermock.core.classloader.annotations.PowerMockIgnore;
|
||||||
|
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||||
|
import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.IObjectFactory;
|
||||||
|
import org.testng.annotations.BeforeClass;
|
||||||
|
import org.testng.annotations.ObjectFactory;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
|
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService;
|
||||||
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||||
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.core.authorization.DeviceAccessAuthorizationServiceImpl;
|
||||||
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.common.ActivityIdList;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.ActivityInfoProviderService;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
|
import org.wso2.carbon.policy.mgt.core.util.PolicyManagerUtil;
|
||||||
|
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.mockito.MockitoAnnotations.initMocks;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a test class for {@link ActivityProviderServiceImpl}.
|
||||||
|
*/
|
||||||
|
@PowerMockIgnore("javax.ws.rs.*")
|
||||||
|
@SuppressStaticInitializationFor({ "org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils",
|
||||||
|
"org.wso2.carbon.context.CarbonContext", "org.wso2.carbon.context.PrivilegedCarbonContext" })
|
||||||
|
@PrepareForTest({ DeviceMgtAPIUtils.class, PolicyManagerUtil.class, PrivilegedCarbonContext.class })
|
||||||
|
public class ActivityProviderServiceImplTest {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(ActivityProviderServiceImplTest.class);
|
||||||
|
private static final String TEST_ACTIVITY_ID = "ACTIVITY_1";
|
||||||
|
private static final String IF_MODIFIED_SINCE = "01Aug2018";
|
||||||
|
private static final String DEVICE_TYPE = "android";
|
||||||
|
private static final String DEVICE_ID = "1234567";
|
||||||
|
private static final String OPERATION_CODE = "111222";
|
||||||
|
private static final int OFFSET = 0;
|
||||||
|
private static final int LIMIT = 5;
|
||||||
|
private static final String TEST_ACTIVITY_ID_LIST = "ACTIVITY_1,ACTIVITY_2";
|
||||||
|
private static final List<String> idList = new ArrayList();
|
||||||
|
private static final List<Activity> activities = new ArrayList<>();
|
||||||
|
private static final ActivityIdList activityList = new ActivityIdList(TEST_ACTIVITY_ID_LIST);
|
||||||
|
private static final ActivityIdList activityListEmpty = new ActivityIdList("");
|
||||||
|
|
||||||
|
private List<String> idList1;
|
||||||
|
private Activity activity;
|
||||||
|
private List<Activity> activities1;
|
||||||
|
|
||||||
|
private DeviceManagementService deviceManagementService;
|
||||||
|
private DeviceAccessAuthorizationService deviceAccessAuthorizationService;
|
||||||
|
private DeviceManagementProviderService deviceManagementProviderService;
|
||||||
|
private ActivityInfoProviderService activityInfoProviderService;
|
||||||
|
private DeviceIdentifier deviceIdentifier;
|
||||||
|
|
||||||
|
@ObjectFactory
|
||||||
|
public IObjectFactory getObjectFactory() {
|
||||||
|
return new org.powermock.modules.testng.PowerMockObjectFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public void init() {
|
||||||
|
log.info("Initializing ActivityProviderServiceImplTest tests");
|
||||||
|
initMocks(this);
|
||||||
|
this.deviceManagementProviderService = Mockito.mock(DeviceManagementProviderServiceImpl.class,
|
||||||
|
Mockito.RETURNS_MOCKS);
|
||||||
|
this.deviceIdentifier = new DeviceIdentifier();
|
||||||
|
this.deviceManagementService = new DeviceManagementServiceImpl();
|
||||||
|
this.activityInfoProviderService = new ActivityProviderServiceImpl();
|
||||||
|
this.deviceAccessAuthorizationService = Mockito.mock(DeviceAccessAuthorizationServiceImpl.class);
|
||||||
|
idList.add("ACTIVITY_1");
|
||||||
|
idList.add("ACTIVITY_2");
|
||||||
|
this.activity = new Activity();
|
||||||
|
Activity activity1 = new Activity();
|
||||||
|
Activity activity2 = new Activity();
|
||||||
|
activity1.setActivityId("ACTIVITY_1");
|
||||||
|
activity2.setActivityId("ACTIVITY_2");
|
||||||
|
activities.add(activity1);
|
||||||
|
activities.add(activity2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description =
|
||||||
|
"This method tests getting details of an activity with an admin user with an existing"
|
||||||
|
+ " activity Id")
|
||||||
|
public void testGetActivitiesWithValidAdminUserWithValidId() throws OperationManagementException {
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "isAdmin")).toReturn(true);
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "getDeviceManagementService"))
|
||||||
|
.toReturn(this.deviceManagementProviderService);
|
||||||
|
Mockito.when(this.deviceManagementProviderService.getOperationByActivityId(TEST_ACTIVITY_ID))
|
||||||
|
.thenReturn(activity);
|
||||||
|
Response response = this.activityInfoProviderService.getActivity(TEST_ACTIVITY_ID, IF_MODIFIED_SINCE);
|
||||||
|
Assert.assertNotNull(response);
|
||||||
|
Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
|
||||||
|
Mockito.reset(this.deviceManagementProviderService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This method tests getting details of an activity with an invalid admin user")
|
||||||
|
public void testGetActivitiesWithInvalidAdminUserWithValidId() throws OperationManagementException {
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "isAdmin")).toReturn(false);
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "getDeviceManagementService"))
|
||||||
|
.toReturn(this.deviceManagementProviderService);
|
||||||
|
Mockito.when(this.deviceManagementProviderService.getOperationByActivityId(TEST_ACTIVITY_ID))
|
||||||
|
.thenReturn(activity);
|
||||||
|
Response response = this.activityInfoProviderService.getActivity(TEST_ACTIVITY_ID, IF_MODIFIED_SINCE);
|
||||||
|
Assert.assertNotNull(response);
|
||||||
|
Assert.assertEquals(response.getStatus(), Response.Status.UNAUTHORIZED.getStatusCode());
|
||||||
|
Mockito.reset(this.deviceManagementProviderService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This method tests getting details of an activity which does not exists")
|
||||||
|
public void testGetActivitiesWithNonExistingActivityID() throws OperationManagementException {
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "isAdmin")).toReturn(true);
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "getDeviceManagementService"))
|
||||||
|
.toReturn(this.deviceManagementProviderService);
|
||||||
|
Mockito.when(this.deviceManagementProviderService.getOperationByActivityId(TEST_ACTIVITY_ID))
|
||||||
|
.thenReturn(null);
|
||||||
|
Response response = this.activityInfoProviderService.getActivity(TEST_ACTIVITY_ID, IF_MODIFIED_SINCE);
|
||||||
|
Assert.assertNotNull(response);
|
||||||
|
Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
|
||||||
|
Mockito.reset(this.deviceManagementProviderService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This method tests the getActivity method under negative conditions.")
|
||||||
|
public void testGetActivitiesWithOperationManagementException() throws OperationManagementException {
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "isAdmin")).toReturn(true);
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "getDeviceManagementService"))
|
||||||
|
.toReturn(this.deviceManagementProviderService);
|
||||||
|
Mockito.when(this.deviceManagementProviderService.getOperationByActivityId(Mockito.any())).thenThrow(
|
||||||
|
new OperationManagementException());
|
||||||
|
Response response = this.activityInfoProviderService.getActivity(TEST_ACTIVITY_ID, IF_MODIFIED_SINCE);
|
||||||
|
Assert.assertNotNull(response);
|
||||||
|
Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode());
|
||||||
|
Mockito.reset(this.deviceManagementProviderService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This method tests getting details of list of given activity IDs")
|
||||||
|
public void testGetActivitiesWithActivityIdList() throws OperationManagementException {
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "isAdmin")).toReturn(true);
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "getDeviceManagementService"))
|
||||||
|
.toReturn(this.deviceManagementProviderService);
|
||||||
|
Mockito.when(this.deviceManagementProviderService.getOperationByActivityIds(idList)).thenReturn(
|
||||||
|
activities);
|
||||||
|
Response response = this.activityInfoProviderService.getActivities(activityList);
|
||||||
|
Assert.assertNotNull(response);
|
||||||
|
Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
|
||||||
|
Mockito.reset(this.deviceManagementProviderService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This method tests trying to get details activity IDs when call with empty list")
|
||||||
|
public void testGetActivitiesWithEmptyActivityIdList() throws OperationManagementException {
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "isAdmin")).toReturn(true);
|
||||||
|
Response response = this.activityInfoProviderService.getActivities(activityListEmpty);
|
||||||
|
Assert.assertNotNull(response);
|
||||||
|
Assert.assertEquals(response.getStatus(), Response.Status.BAD_REQUEST.getStatusCode());
|
||||||
|
Mockito.reset(this.deviceManagementProviderService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This method tests trying to get details of a list activity IDs which does not exists")
|
||||||
|
public void testGetActivitiesWithNonExistingActivityIdList() throws OperationManagementException {
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "isAdmin")).toReturn(true);
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "getDeviceManagementService"))
|
||||||
|
.toReturn(this.deviceManagementProviderService);
|
||||||
|
Mockito.when(this.deviceManagementProviderService.getOperationByActivityIds(idList1)).thenReturn(
|
||||||
|
activities1);
|
||||||
|
Response response = this.activityInfoProviderService.getActivities(activityList);
|
||||||
|
Assert.assertNotNull(response);
|
||||||
|
Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
|
||||||
|
Mockito.reset(this.deviceManagementProviderService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This method tests getting details of an activity for a given device")
|
||||||
|
public void testGetActivitiesByDevice() throws OperationManagementException {
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "getDeviceManagementService"))
|
||||||
|
.toReturn(this.deviceManagementProviderService);
|
||||||
|
Mockito.when(this.deviceManagementProviderService
|
||||||
|
.getOperationByActivityIdAndDevice(TEST_ACTIVITY_ID, deviceIdentifier)).thenReturn(activity);
|
||||||
|
Response response = this.activityInfoProviderService.getActivityByDevice(TEST_ACTIVITY_ID,
|
||||||
|
DEVICE_TYPE, DEVICE_ID, IF_MODIFIED_SINCE);
|
||||||
|
Assert.assertNotNull(response);
|
||||||
|
Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
|
||||||
|
Mockito.reset(this.deviceManagementProviderService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This method tests getting details of an activity for a given device")
|
||||||
|
public void testGetActivities() throws OperationManagementException {
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "isAdmin")).toReturn(true);
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "getDeviceManagementService"))
|
||||||
|
.toReturn(this.deviceManagementProviderService);
|
||||||
|
Mockito.when(
|
||||||
|
this.deviceManagementProviderService.getFilteredActivities(OPERATION_CODE, OFFSET, LIMIT))
|
||||||
|
.thenReturn(activities);
|
||||||
|
Response response = this.activityInfoProviderService.getActivities(OPERATION_CODE, OFFSET, LIMIT);
|
||||||
|
Assert.assertNotNull(response);
|
||||||
|
Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
|
||||||
|
Mockito.reset(this.deviceManagementProviderService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This method tests getting details of an activity for a given device")
|
||||||
|
public void testGetActivitiesForInvalidUser() throws OperationManagementException {
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "isAdmin")).toReturn(false);
|
||||||
|
PowerMockito.stub(PowerMockito.method(RequestValidationUtil.class, "validateActivityId"));
|
||||||
|
PowerMockito.stub(PowerMockito.method(DeviceMgtAPIUtils.class, "getDeviceManagementService"))
|
||||||
|
.toReturn(this.deviceManagementProviderService);
|
||||||
|
Mockito.when(
|
||||||
|
this.deviceManagementProviderService.getFilteredActivities(OPERATION_CODE, OFFSET, LIMIT))
|
||||||
|
.thenReturn(activities);
|
||||||
|
Response response = this.activityInfoProviderService.getActivities(OPERATION_CODE, OFFSET, LIMIT);
|
||||||
|
Assert.assertNotNull(response);
|
||||||
|
Assert.assertEquals(response.getStatus(), Response.Status.UNAUTHORIZED.getStatusCode());
|
||||||
|
Mockito.reset(this.deviceManagementProviderService);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in new issue