Skip to content
Snippets Groups Projects
Commit 123e9bad authored by trantzas's avatar trantzas
Browse files

Merge branch...

Merge branch '24-introduce-a-check-in-service-order-posting-for-the-requested-service-specification' into 'develop'

Implemented check for existence of Service Specifications for a Service Order

See merge request !22
parents 445ec2c9 25560732
No related branches found
No related tags found
2 merge requests!36Merging 2024Q2_RC into main, creating 2024Q2 Release,!22Implemented check for existence of Service Specifications for a Service Order
Pipeline #5735 passed
......@@ -143,6 +143,9 @@ public class ServiceOrderApiController implements ServiceOrderApi {
return new ResponseEntity<ServiceOrder>(c, HttpStatus.OK);
} catch (NotFoundException e) {
log.error("Couldn't create Service Order. ", e);
return new ResponseEntity<ServiceOrder>(HttpStatus.BAD_REQUEST);
} catch (Exception e) {
log.error("Couldn't serialize response for content type application/json", e);
return new ResponseEntity<ServiceOrder>(HttpStatus.INTERNAL_SERVER_ERROR);
......
......@@ -25,14 +25,7 @@ import java.nio.charset.StandardCharsets;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import com.fasterxml.jackson.core.JsonProcessingException;
......@@ -45,30 +38,16 @@ import org.apache.commons.logging.LogFactory;
import org.etsi.osl.tmf.common.model.Any;
import org.etsi.osl.tmf.common.model.EValueType;
import org.etsi.osl.tmf.common.model.UserPartRoleType;
import org.etsi.osl.tmf.common.model.service.Characteristic;
import org.etsi.osl.tmf.common.model.service.Note;
import org.etsi.osl.tmf.common.model.service.ResourceRef;
import org.etsi.osl.tmf.common.model.service.ServiceRef;
import org.etsi.osl.tmf.common.model.service.*;
import org.etsi.osl.tmf.prm669.model.RelatedParty;
import org.etsi.osl.tmf.scm633.model.ServiceSpecCharacteristic;
import org.etsi.osl.tmf.scm633.model.ServiceSpecCharacteristicValue;
import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
import org.etsi.osl.tmf.scm633.reposervices.ServiceSpecificationRepoService;
import org.etsi.osl.tmf.sim638.service.ServiceRepoService;
import org.etsi.osl.tmf.so641.api.NotFoundException;
import org.etsi.osl.tmf.so641.api.ServiceOrderApiRouteBuilderEvents;
import org.etsi.osl.tmf.so641.model.ServiceOrder;
import org.etsi.osl.tmf.so641.model.ServiceOrderActionType;
import org.etsi.osl.tmf.so641.model.ServiceOrderAttributeValueChangeEvent;
import org.etsi.osl.tmf.so641.model.ServiceOrderAttributeValueChangeNotification;
import org.etsi.osl.tmf.so641.model.ServiceOrderCreate;
import org.etsi.osl.tmf.so641.model.ServiceOrderCreateEvent;
import org.etsi.osl.tmf.so641.model.ServiceOrderCreateNotification;
import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
import org.etsi.osl.tmf.so641.model.ServiceOrderRelationship;
import org.etsi.osl.tmf.so641.model.ServiceOrderStateChangeEvent;
import org.etsi.osl.tmf.so641.model.ServiceOrderStateChangeNotification;
import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate;
import org.etsi.osl.tmf.so641.model.*;
import org.etsi.osl.tmf.so641.repo.ServiceOrderRepository;
import org.etsi.osl.tmf.util.KrokiClient;
import org.hibernate.Hibernate;
......@@ -319,7 +298,20 @@ public class ServiceOrderRepoService {
}
@Transactional
public ServiceOrder addServiceOrder(@Valid ServiceOrderCreate serviceOrderCreate) {
public ServiceOrder addServiceOrder(@Valid ServiceOrderCreate serviceOrderCreate) throws NotFoundException {
// Ensure that all Services Specifications exist
List <ServiceOrderItem> serviceOrderItemList = serviceOrderCreate.getOrderItem();
for (ServiceOrderItem serviceOrderItem: serviceOrderItemList) {
ServiceRestriction serviceRestriction = serviceOrderItem.getService();
ServiceSpecificationRef serviceSpecificationRef = serviceRestriction.getServiceSpecification();
String serviceSpecificationId = serviceSpecificationRef.getId();
ServiceSpecification serviceSpecification = serviceSpecRepoService.findByUuid(serviceSpecificationId);
if (serviceSpecification == null)
throw new NotFoundException(400, "There is no Service Specification with Id: " + serviceSpecificationId);
}
ServiceOrder so = new ServiceOrder();
so.setOrderDate(OffsetDateTime.now(ZoneOffset.UTC));
so.setCategory(serviceOrderCreate.getCategory());
......@@ -837,12 +829,15 @@ public class ServiceOrderRepoService {
}
public String addServiceOrderReturnEager(@Valid ServiceOrderCreate serviceOrderCreate) {
ServiceOrder so = this.addServiceOrder(serviceOrderCreate);
try {
ServiceOrder so = this.addServiceOrder(serviceOrderCreate);
return this.getServiceOrderEagerAsString( so.getUuid());
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
......
......@@ -89,6 +89,15 @@ public class ServiceOrderApiControllerTest {
}
@WithMockUser(username="osadmin", roles = {"ADMIN","USER"})
@Test
public void testCreateServiceOrderWithNonExistingServiceSpecification() throws Exception {
createServiceOrderWithNonExistingServiceSpecification();
assertThat( serviceOrderRepoService.findAll().size() ).isEqualTo( FIXED_BOOTSTRAPS_SPECS );
}
@WithMockUser(username="osadmin", roles = {"ADMIN","USER"})
@Test
public void testDeleteServiceOrder() throws Exception {
......@@ -278,4 +287,35 @@ public class ServiceOrderApiControllerTest {
return responsesSpec;
}
}
private void createServiceOrderWithNonExistingServiceSpecification() throws Exception {
assertThat( serviceOrderRepoService.findAll().size() ).isEqualTo( FIXED_BOOTSTRAPS_SPECS);
ServiceOrderCreate serviceOrder = new ServiceOrderCreate();
serviceOrder.setCategory("Test Category");
serviceOrder.setDescription("A Test Service Order");
serviceOrder.setRequestedStartDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
serviceOrder.setRequestedCompletionDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
ServiceOrderItem soi = new ServiceOrderItem();
serviceOrder.getOrderItem().add(soi);
soi.setState(ServiceOrderStateType.ACKNOWLEDGED);
ServiceRestriction serviceRestriction = new ServiceRestriction();
ServiceSpecificationRef aServiceSpecificationRef = new ServiceSpecificationRef();
aServiceSpecificationRef.setId("A random non-existing Id");
aServiceSpecificationRef.setName("A random non-existing name");
serviceRestriction.setServiceSpecification(aServiceSpecificationRef);
serviceRestriction.setName("aServiceRestriction");
soi.setService(serviceRestriction);
mvc
.perform(MockMvcRequestBuilders.post("/serviceOrdering/v4/serviceOrder")
.with( SecurityMockMvcRequestPostProcessors.csrf())
.contentType(MediaType.APPLICATION_JSON).content(JsonUtils.toJson(serviceOrder)))
.andExpect(status().isBadRequest()).andReturn().getResponse().getContentAsString();
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment