blob: 962109090a249821ee0d52fdebd2c6fcfca466e4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2016 Orange.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*******************************************************************************/
package org.eclipse.om2m.das.testsuite.ae;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.eclipse.om2m.commons.constants.MimeMediaType;
import org.eclipse.om2m.commons.constants.Operation;
import org.eclipse.om2m.commons.constants.ResourceType;
import org.eclipse.om2m.commons.constants.ResponseStatusCode;
import org.eclipse.om2m.commons.resource.CustomAttribute;
import org.eclipse.om2m.commons.resource.DynamicAuthorizationConsultation;
import org.eclipse.om2m.commons.resource.FlexContainer;
import org.eclipse.om2m.commons.resource.RequestPrimitive;
import org.eclipse.om2m.commons.resource.ResponsePrimitive;
import org.eclipse.om2m.core.service.CseService;
import org.eclipse.om2m.interworking.service.InterworkingService;
import org.osgi.framework.ServiceRegistration;
public class DASServiceTest_FlexContainer extends AbstractDASServiceTest {
/**
* To be used by activator
*
* @param pCseService
*/
public DASServiceTest_FlexContainer(CseService pCseService) {
super("DasServiceTest_FlexContainer", pCseService);
}
@Override
public void performTest() {
// create DAC
DynamicAuthorizationConsultation dac = createDAS(getDasAE().getResourceID());
if (dac == null) {
setState(State.KO);
setMessage("unable to create dac");
return;
}
// set number of expected call
setExpectedNumberOfCall(1);
// register this as a InterworkingService
ServiceRegistration<InterworkingService> interworkingServiceRegistration = registerInterworkingService(
this);
// create flexContainer (with DynamicAuthorizationConsultationIDs)
List<String> dacis = new ArrayList<>();
dacis.add(dac.getResourceID());
FlexContainer createdFlexContainer = createFlexContainer(dacis);
if (createdFlexContainer == null) {
setState(State.KO);
setMessage("unable to create FlexContainer");
return;
}
// retrieve flexContainer ==> DASS must be called
ResponsePrimitive response = retrieveEntity(createdFlexContainer.getResourceID(), "nom:password");
if (!ResponseStatusCode.OK.equals(response.getResponseStatusCode())) {
setState(State.KO);
setMessage("unable to retrieve FlexContainer, expecting " + ResponseStatusCode.OK + ", found ="
+ response.getResponseStatusCode());
return;
}
if (!checkCall(0, createdFlexContainer.getResourceID(), "nom:password", Operation.RETRIEVE)) {
// KO
return;
}
// clear calls
clearCalls();
// update FlexContainer
FlexContainer toBeUpdated = new FlexContainer();
CustomAttribute customAttribute = new CustomAttribute();
customAttribute.setShortName("test");
customAttribute.setValue("value");
createdFlexContainer.getCustomAttributes().add(customAttribute);
// prepare update request
RequestPrimitive updateRequest = new RequestPrimitive();
updateRequest.setFrom("nom:prenom");
updateRequest.setTo(createdFlexContainer.getResourceID());
updateRequest.setOperation(Operation.UPDATE);
updateRequest.setRequestContentType(MimeMediaType.OBJ);
updateRequest.setReturnContentType(MimeMediaType.OBJ);
updateRequest.setContent(toBeUpdated);
// execute update request
ResponsePrimitive updateResponse = getCseService().doRequest(updateRequest);
if (updateResponse == null) {
setState(State.KO);
setMessage("updateFlexContainer response is null");
return;
}
if (!ResponseStatusCode.UPDATED.equals(updateResponse.getResponseStatusCode())) {
setState(State.KO);
setMessage("unable to update FlexContainer, expecting " + ResponseStatusCode.UPDATED + ", found "
+ updateResponse.getResponseStatusCode());
return;
}
// check call
if (!checkCall(0, createdFlexContainer.getResourceID(), "nom:prenom", Operation.UPDATE)) {
// KO
return;
}
// clear calls
clearCalls();
// create a new childFlexContainer
FlexContainer flexContainerChildToBeCreated = new FlexContainer();
flexContainerChildToBeCreated.setContainerDefinition("tototto");
flexContainerChildToBeCreated.setName("FlexContainer_" + UUID.randomUUID());
// prepare child creation request
RequestPrimitive createChildRequest = new RequestPrimitive();
createChildRequest.setContent(flexContainerChildToBeCreated);
createChildRequest.setRequestContentType(MimeMediaType.OBJ);
createChildRequest.setReturnContentType(MimeMediaType.OBJ);
createChildRequest.setResourceType(ResourceType.FLEXCONTAINER);
createChildRequest.setFrom("nana:nono");
createChildRequest.setTo(createdFlexContainer.getResourceID());
createChildRequest.setOperation(Operation.CREATE);
// execute createChildRequest
ResponsePrimitive createChildResponse = getCseService().doRequest(createChildRequest);
if (createChildResponse == null) {
setState(State.KO);
setMessage("create child response is null");
return;
}
if (!ResponseStatusCode.CREATED.equals(createChildResponse.getResponseStatusCode())) {
setState(State.KO);
setMessage("unable to create a child FlexContainer, expecting " + ResponseStatusCode.CREATED + ", found "
+ createChildResponse.getResponseStatusCode());
return;
}
// check call
if (!checkCall(0, createdFlexContainer.getResourceID(), "nana:nono", Operation.CREATE)) {
// KO
return;
}
// clear calls
clearCalls();
// delete FlexContainer
RequestPrimitive deleteRequest = new RequestPrimitive();
deleteRequest.setTo(createdFlexContainer.getResourceID());
deleteRequest.setFrom("toto:tata");
deleteRequest.setOperation(Operation.DELETE);
// execute delete request
ResponsePrimitive deleteResponse = getCseService().doRequest(deleteRequest);
if (deleteResponse == null) {
setState(State.KO);
setMessage("deleteFlexContainer response is null");
return;
}
if (!ResponseStatusCode.DELETED.equals(deleteResponse.getResponseStatusCode())) {
setState(State.KO);
setMessage("unable to delete FlexContainer, expecting " + ResponseStatusCode.DELETED + ", found "
+ deleteResponse.getResponseStatusCode());
return;
}
// check call
if (!checkCall(0, createdFlexContainer.getResourceID(), "toto:tata", Operation.DELETE)) {
// KO
return;
}
// unregister InterworkingService
unregisterInterworkingService(interworkingServiceRegistration);
setState(State.OK);
}
}