summaryrefslogtreecommitdiffstats
path: root/sliapi
diff options
context:
space:
mode:
authorDan Timoney <dtimoney@att.com>2020-03-11 15:54:10 -0400
committerDan Timoney <dtimoney@att.com>2020-03-12 11:34:33 -0400
commit88f749277195998d150925e14e12021cc2e9292b (patch)
tree8e31b64b8e169cbd126d56d77cb0cb7cb7aef7d6 /sliapi
parentc46ebbb0f011a1587c3fe506c5029ce550b07ed2 (diff)
Add data persistence
Add code to persist MD-SAL data (test-results) Change-Id: I2c6d3e94e9e46ccbfad479c6d89507ec37939496 Issue-ID: CCSDK-2096 Signed-off-by: Dan Timoney <dtimoney@att.com>
Diffstat (limited to 'sliapi')
-rw-r--r--sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java5
-rw-r--r--sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultConfig.java50
-rw-r--r--sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultOperational.java51
-rw-r--r--sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultsConfigRepository.java12
-rw-r--r--sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultsOperationalRepository.java12
-rw-r--r--sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/swagger/RestconfApiController.java191
-rw-r--r--sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/ServletFilters.java4
-rw-r--r--sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java49
-rw-r--r--sliapi/springboot/src/main/resources/application.properties2
-rw-r--r--sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java28
10 files changed, 388 insertions, 16 deletions
diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java
index 67f549145..ed3ee0446 100644
--- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java
+++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java
@@ -22,8 +22,13 @@ package org.onap.ccsdk.sli.core.sliapi.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
+@EnableSwagger2
+@ComponentScan(basePackages = { "org.onap.ccsdk.sli.core.sliapi.springboot.*" })
+
public class App {
public static void main(String[] args) throws Exception {
diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultConfig.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultConfig.java
new file mode 100644
index 000000000..f8ed1b4ce
--- /dev/null
+++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultConfig.java
@@ -0,0 +1,50 @@
+package org.onap.ccsdk.sli.core.sliapi.springboot.controllers.data;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+@Entity
+public class TestResultConfig {
+
+
+ @Id
+ @GeneratedValue(strategy= GenerationType.AUTO)
+ private Long id;
+
+ private String testIdentifier;
+ private String results;
+
+ public TestResultConfig()
+ {
+
+ }
+ public TestResultConfig(String testIdentifier, String results) {
+ this.testIdentifier = testIdentifier;
+ this.results = results;
+ }
+
+ public String getTestIdentifier() {
+ return testIdentifier;
+ }
+
+ public void setTestIdentifier(String testIdentifier) {
+ this.testIdentifier = testIdentifier;
+ }
+
+ public String getResults() {
+ return results;
+ }
+
+ public void setResults(String results) {
+ this.results = results;
+ }
+
+
+
+
+}
diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultOperational.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultOperational.java
new file mode 100644
index 000000000..4c3709e6e
--- /dev/null
+++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultOperational.java
@@ -0,0 +1,51 @@
+package org.onap.ccsdk.sli.core.sliapi.springboot.controllers.data;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+@Entity
+public class TestResultOperational {
+
+
+ @Id
+ @GeneratedValue(strategy= GenerationType.AUTO)
+ private Long id;
+
+ private String testIdentifier;
+ private String results;
+
+ public TestResultOperational()
+ {
+
+ }
+
+ public TestResultOperational(String testIdentifier, String results) {
+ this.testIdentifier = testIdentifier;
+ this.results = results;
+ }
+
+ public String getTestIdentifier() {
+ return testIdentifier;
+ }
+
+ public void setTestIdentifier(String testIdentifier) {
+ this.testIdentifier = testIdentifier;
+ }
+
+ public String getResults() {
+ return results;
+ }
+
+ public void setResults(String results) {
+ this.results = results;
+ }
+
+
+
+
+}
diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultsConfigRepository.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultsConfigRepository.java
new file mode 100644
index 000000000..1a73b3f50
--- /dev/null
+++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultsConfigRepository.java
@@ -0,0 +1,12 @@
+package org.onap.ccsdk.sli.core.sliapi.springboot.controllers.data;
+
+import org.springframework.data.repository.CrudRepository;
+
+import java.util.List;
+
+public interface TestResultsConfigRepository extends CrudRepository<TestResultConfig, Long> {
+
+ List<TestResultConfig> findByTestIdentifier(String testIdentifier);
+
+
+}
diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultsOperationalRepository.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultsOperationalRepository.java
new file mode 100644
index 000000000..d81c02b23
--- /dev/null
+++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/data/TestResultsOperationalRepository.java
@@ -0,0 +1,12 @@
+package org.onap.ccsdk.sli.core.sliapi.springboot.controllers.data;
+
+import org.springframework.data.repository.CrudRepository;
+
+import java.util.List;
+
+public interface TestResultsOperationalRepository extends CrudRepository<TestResultOperational, Long> {
+
+ List<TestResultOperational> findByTestIdentifier(String testIdentifier);
+
+
+}
diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/swagger/RestconfApiController.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/swagger/RestconfApiController.java
index 2972cd791..aa9a9d7e8 100644
--- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/swagger/RestconfApiController.java
+++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/controllers/swagger/RestconfApiController.java
@@ -20,38 +20,53 @@
package org.onap.ccsdk.sli.core.sliapi.springboot.controllers.swagger;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Properties;
-import javax.servlet.http.HttpServletRequest;
-import javax.validation.Valid;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
import org.onap.ccsdk.sli.core.sli.SvcLogicException;
import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicServiceBase;
import org.onap.ccsdk.sli.core.sliapi.model.ExecuteGraphInput;
import org.onap.ccsdk.sli.core.sliapi.model.ResponseFields;
-import org.onap.ccsdk.sli.core.sliapi.springboot.controllers.swagger.RestconfApi;
+import org.onap.ccsdk.sli.core.sliapi.model.TestResult;
+import org.onap.ccsdk.sli.core.sliapi.model.TestResults;
+import org.onap.ccsdk.sli.core.sliapi.springboot.controllers.data.TestResultConfig;
+import org.onap.ccsdk.sli.core.sliapi.springboot.controllers.data.TestResultsConfigRepository;
+import org.onap.ccsdk.sli.core.sliapi.springboot.controllers.data.TestResultsOperationalRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.annotation.ComponentScan;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.util.*;
@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2020-02-20T12:50:11.207-05:00")
@Controller
+@ComponentScan(basePackages = {"org.onap.ccsdk.sli.core.sliapi.springboot.*"})
+@EntityScan("org.onap.ccsdk.sli.core.sliapi.springboot.*")
public class RestconfApiController implements RestconfApi {
private final ObjectMapper objectMapper;
private final HttpServletRequest request;
- @Autowired
- protected SvcLogicServiceBase svc;
+ @Autowired
+ protected SvcLogicServiceBase svc;
+
+ @Autowired
+ private TestResultsConfigRepository testResultsConfigRepository;
+
+ @Autowired
+ private TestResultsOperationalRepository testResultsOperationalRepository;
+
private static final Logger log = LoggerFactory.getLogger(RestconfApiController.class);
@org.springframework.beans.factory.annotation.Autowired
@@ -175,6 +190,158 @@ public class RestconfApiController implements RestconfApi {
}
}
+ @Override
+ public ResponseEntity<Void> deleteTestResult(String testIdentifier) {
+
+ List<TestResultConfig> testResultConfigs = testResultsConfigRepository.findByTestIdentifier(testIdentifier);
+
+ if (testResultConfigs != null) {
+ Iterator<TestResultConfig> testResultConfigIterator = testResultConfigs.iterator();
+ while (testResultConfigIterator.hasNext()) {
+ testResultsConfigRepository.delete(testResultConfigIterator.next());
+ }
+ }
+
+ return (new ResponseEntity<>(HttpStatus.OK));
+ }
+
+ @Override
+ public ResponseEntity<Void> deleteTestResults() {
+
+ testResultsConfigRepository.deleteAll();
+
+ return (new ResponseEntity<>(HttpStatus.OK));
+ }
+
+ @Override
+ public ResponseEntity<TestResults> gETTestResults() {
+
+ TestResults results = new TestResults();
+
+ testResultsOperationalRepository.findAll().forEach(testResult -> {
+ TestResult item = null;
+ try {
+ item = objectMapper.readValue(testResult.getResults(), TestResult.class);
+ results.addTestResultsItem(item);
+ } catch (JsonProcessingException e) {
+ log.error("Could not convert testResult", e);
+ }
+ });
+
+
+ return new ResponseEntity<>(results, HttpStatus.OK);
+ }
+
+ @Override
+ public ResponseEntity<TestResult> getTestResult(String testIdentifier) {
+ List<TestResultConfig> testResultConfigs = testResultsConfigRepository.findByTestIdentifier(testIdentifier);
+
+ if ((testResultConfigs == null) || (testResultConfigs.size() == 0)) {
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ } else {
+ TestResultConfig testResultConfig = testResultConfigs.get(0);
+ TestResult testResult = null;
+ try {
+ testResult = objectMapper.readValue(testResultConfig.getResults(), TestResult.class);
+ } catch (JsonProcessingException e) {
+ log.error("Cannot convert test result", e);
+ return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+
+ return new ResponseEntity<>(testResult, HttpStatus.OK);
+ }
+ }
+
+ @Override
+ public ResponseEntity<TestResults> getTestResults() {
+ if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
+ } else {
+ log.warn("ObjectMapper or HttpServletRequest not configured in default RestconfApi interface so no example is generated");
+ }
+
+ TestResults results = new TestResults();
+
+ testResultsConfigRepository.findAll().forEach(testResult -> {
+ TestResult item = null;
+ try {
+ item = objectMapper.readValue(testResult.getResults(), TestResult.class);
+ results.addTestResultsItem(item);
+ } catch (JsonProcessingException e) {
+ log.error("Could not convert testResult", e);
+ }
+ });
+
+
+ return new ResponseEntity<>(results, HttpStatus.OK);
+ }
+
+ @Override
+ public ResponseEntity<TestResult> pUTTestResult(String testIdentifier, @Valid TestResult testResult) {
+ if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
+ } else {
+ log.warn("ObjectMapper or HttpServletRequest not configured in default RestconfApi interface so no example is generated");
+ }
+
+ List<TestResultConfig> testResultConfigs = testResultsConfigRepository.findByTestIdentifier(testIdentifier);
+ Iterator<TestResultConfig> testResultIter = testResultConfigs.iterator();
+ while (testResultIter.hasNext()) {
+ testResultsConfigRepository.delete(testResultIter.next());
+ }
+
+ TestResultConfig testResultConfig = null;
+ try {
+ testResultConfig = new TestResultConfig(testResult.getTestIdentifier(), objectMapper.writeValueAsString(testResult));
+ testResultsConfigRepository.save(testResultConfig);
+ } catch (JsonProcessingException e) {
+ log.error("Could not save test result", e);
+ return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ return new ResponseEntity<>(testResult, HttpStatus.OK);
+ }
+
+ @Override
+ public ResponseEntity<TestResults> postTestResults(@Valid TestResults testResults) {
+ List<TestResult> resultList = testResults.getTestResults();
+
+ Iterator<TestResult> resultIterator = resultList.iterator();
+
+ while (resultIterator.hasNext()) {
+ TestResult curResult = resultIterator.next();
+ try {
+ testResultsConfigRepository.save(new TestResultConfig(curResult.getTestIdentifier(), objectMapper.writeValueAsString(curResult)));
+ } catch (JsonProcessingException e) {
+ log.error("Could not save test result", e);
+ return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ return new ResponseEntity<>(testResults, HttpStatus.OK);
+ }
+
+ @Override
+ public ResponseEntity<TestResults> putTestResults(@Valid TestResults testResults) {
+ testResultsConfigRepository.deleteAll();
+
+ List<TestResult> resultList = testResults.getTestResults();
+
+ Iterator<TestResult> resultIterator = resultList.iterator();
+
+
+ while (resultIterator.hasNext()) {
+ TestResult curResult = resultIterator.next();
+ try {
+ testResultsConfigRepository.save(new TestResultConfig(curResult.getTestIdentifier(), objectMapper.writeValueAsString(curResult)));
+ } catch (JsonProcessingException e) {
+ log.error("Could not save test result", e);
+ return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+ }
+
+ return new ResponseEntity<>(testResults, HttpStatus.OK);
+ }
+
public static String propsToJson(Properties props, String root)
{
StringBuffer sbuff = new StringBuffer();
diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/ServletFilters.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/ServletFilters.java
index c56cf3bf1..bfec1c935 100644
--- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/ServletFilters.java
+++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/ServletFilters.java
@@ -30,7 +30,7 @@ import org.springframework.context.annotation.Configuration;
@Configuration
public class ServletFilters {
- @Bean
+/* @Bean
public FilterRegistrationBean<PayloadLoggingServletFilter> payloadFilterRegistration() throws ServletException {
FilterRegistrationBean<PayloadLoggingServletFilter> registration = new FilterRegistrationBean<PayloadLoggingServletFilter>();
registration.setFilter(new PayloadLoggingServletFilter());
@@ -38,5 +38,5 @@ public class ServletFilters {
registration.setName("payloadFilter");
registration.setOrder(0);
return registration;
- }
+ }*/
} \ No newline at end of file
diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java
index fb4fe0858..41d3791b4 100644
--- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java
+++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/core/WebConfig.java
@@ -21,23 +21,70 @@
package org.onap.ccsdk.sli.core.sliapi.springboot.core;
import org.onap.logging.filter.spring.LoggingInterceptor;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
+import org.springframework.orm.jpa.JpaTransactionManager;
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
+import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
+
@EnableWebMvc
@Configuration
+@EnableJpaRepositories("org.onap.ccsdk.sli.core.sliapi.springboot.*")
+@ComponentScan(basePackages = {"org.onap.ccsdk.sli.core.sliapi.springboot.*"})
+@EntityScan("org.onap.ccsdk.sli.core.sliapi.springboot.*")
+@EnableTransactionManagement
public class WebConfig implements WebMvcConfigurer {
- @Bean
+/* @Bean
LoggingInterceptor loggingInterceptor() {
return new LoggingInterceptor();
}
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loggingInterceptor()); // handles audit log entries
+ }*/
+
+ @Bean
+ public DataSource dataSource() {
+
+ EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
+ builder.setName("sdnctl");
+ return builder.setType(EmbeddedDatabaseType.DERBY).build();
+ }
+
+ @Bean
+ public EntityManagerFactory entityManagerFactory() {
+
+ HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
+ vendorAdapter.setGenerateDdl(true);
+
+ LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
+ factory.setJpaVendorAdapter(vendorAdapter);
+ factory.setPackagesToScan("org.onap.ccsdk.sli.core.sliapi.springboot.*");
+ factory.setDataSource(dataSource());
+ factory.afterPropertiesSet();
+
+ return factory.getObject();
}
+ @Bean
+ public PlatformTransactionManager transactionManager() {
+
+ JpaTransactionManager txManager = new JpaTransactionManager();
+ txManager.setEntityManagerFactory(entityManagerFactory());
+ return txManager;
+ }
} \ No newline at end of file
diff --git a/sliapi/springboot/src/main/resources/application.properties b/sliapi/springboot/src/main/resources/application.properties
index 851488b9a..6a4acc7e9 100644
--- a/sliapi/springboot/src/main/resources/application.properties
+++ b/sliapi/springboot/src/main/resources/application.properties
@@ -3,7 +3,7 @@ server.contextPath=/restconf
server.port=8080
spring.jackson.date-format=org.onap.ccsdk.sli.core.sliapi.springboot.controllers.swagger.RFC3339DateFormat
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
-spring.datasource.url=jdbc:derby:sdnctl;create=true
+spring.datasource.url=jdbc:derby:memory:datasource
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DerbyTenSevenDialect
spring.jpa.hibernate.ddl-auto=update
logging.level.com.att=TRACE
diff --git a/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java b/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java
index a61a470ed..b4c629097 100644
--- a/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java
+++ b/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/RestconfApiControllerTest.java
@@ -118,6 +118,34 @@ public class RestconfApiControllerTest {
}
+ @Test
+ public void testTestResultAdd() throws Exception {
+ String url = "/restconf/config/SLI-API:test-results";
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(url)).andReturn();
+
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ String jsonString = "{\n" +
+ " \"test-results\" : [\n" +
+ " {\n" +
+ " \"test-identifier\" : \"test-1\",\n" +
+ " \"results\" : [\"test result 1\"]\n" +
+ " }\n" +
+ " ]\n" +
+ "}";
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(url).contentType(MediaType.APPLICATION_JSON_VALUE).content(jsonString))
+ .andReturn();
+
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(url)).andReturn();
+
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ assertEquals(jsonString.replaceAll("\\s+",""), mvcResult.getResponse().getContentAsString().replaceAll("\\s+",""));
+ }
+
private String mapToJson(Object obj) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(obj);