diff --git a/Jenkinsfile b/Jenkinsfile index 433ff2c..9734c4f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,12 +4,12 @@ pipeline { stages { stage('Build') { steps { - sh "sudo docker-compose build" + sh "docker-compose build" } } stage('Deploy') { steps { - sh "sudo docker-compose up -d" + sh "docker-compose up -d" } } } diff --git a/Klaus.iml b/Klaus.iml index 2899a10..97a007e 100644 --- a/Klaus.iml +++ b/Klaus.iml @@ -11,7 +11,7 @@ - + @@ -21,22 +21,6 @@ - - - - - - - - - - - - - - - - @@ -52,7 +36,6 @@ - @@ -96,9 +79,33 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 5e9e8e9..700220d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # R11-Klaus Mockup service for middleware testing -[![Build Status](https://travis-ci.com/Szakalakamaka/R11-Klaus.svg?token=Tt3QbF7q4wiFNnCGkuew&branch=master)](https://travis-ci.com/Szakalakamaka/R11-Klaus) +[![Build Status](https://travis-ci.com/Szakalakamaka/Klaus.svg?token=Tt3QbF7q4wiFNnCGkuew&branch=master)](https://travis-ci.com/Szakalakamaka/Klaus) Available scripts: diff --git a/pom.xml b/pom.xml index 9140241..7752840 100644 --- a/pom.xml +++ b/pom.xml @@ -19,14 +19,6 @@ - - org.springframework.boot - spring-boot-starter-data-redis - - - org.springframework.boot - spring-boot-starter-data-redis-reactive - org.springframework.boot spring-boot-starter-thymeleaf @@ -60,6 +52,10 @@ org.junit.vintage junit-vintage-engine + + logback-classic + ch.qos.logback + @@ -67,18 +63,50 @@ reactor-test test - - redis.clients - jedis - 3.3.0 - org.assertj assertj-core 3.16.1 test - + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.springframework.boot + spring-boot-starter-data-redis-reactive + + + com.cwbase + logback-redis-appender + 1.1.6 + + + org.apache.commons + commons-pool2 + 2.8.0 + + + org.springframework.data + spring-data-redis + 2.2.6.RELEASE + + + redis.clients + jedis + 3.3.0 + + + jakarta.persistence + jakarta.persistence-api + 2.2.3 + + diff --git a/src/main/java/com/release11/klaus/KlausApplication.java b/src/main/java/com/release11/klaus/KlausApplication.java index fabdac6..d4bb6d2 100644 --- a/src/main/java/com/release11/klaus/KlausApplication.java +++ b/src/main/java/com/release11/klaus/KlausApplication.java @@ -3,6 +3,7 @@ package com.release11.klaus; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; + @SpringBootApplication public class KlausApplication { @@ -14,6 +15,8 @@ public class KlausApplication { //TODO Jenkins //TODO history logs -//TODO form validation //TODO JedisPool jedisPool = new JedisPool(jedisPoolConfig, redisHost, redisPort, timeout, redisPassword) //TODO JedisPool optimalization https://partners-intl.aliyun.com/help/doc-detail/98726.htm +// loging and security +// tracking clients activity +// use a centralized logging collection tool like logstash \ No newline at end of file diff --git a/src/main/java/com/release11/klaus/config/RedisConfig.java b/src/main/java/com/release11/klaus/config/RedisConfig.java index 1c7b8c7..c827da8 100644 --- a/src/main/java/com/release11/klaus/config/RedisConfig.java +++ b/src/main/java/com/release11/klaus/config/RedisConfig.java @@ -5,9 +5,16 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; -import redis.clients.jedis.JedisPool; +import org.springframework.data.redis.connection.RedisStandaloneConfiguration; +import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.repository.configuration.EnableRedisRepositories; +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; + +import java.util.Objects; @Configuration +@EnableRedisRepositories @PropertySource("classpath:data-access.properties") public class RedisConfig { @@ -15,11 +22,20 @@ public class RedisConfig { private Environment environment; @Bean - JedisPool jedisPool(){ - final JedisPool pool = new JedisPool(environment.getProperty("redis.host"), - Integer.parseInt(environment.getProperty("redis.port"))); - return pool; + JedisConnectionFactory jedisConnectionFactory() { + RedisStandaloneConfiguration redisStandaloneConfiguration = + new RedisStandaloneConfiguration(Objects.requireNonNull(environment.getProperty("redis.host")), + Integer.parseInt(Objects.requireNonNull(environment.getProperty("redis.port")))); + return new JedisConnectionFactory(redisStandaloneConfiguration); + } + + @Bean + public RedisTemplate redisTemplate() { + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(jedisConnectionFactory()); + redisTemplate.setExposeConnection(true); + redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer()); + return redisTemplate; } } - diff --git a/src/main/java/com/release11/klaus/controller/KlausController.java b/src/main/java/com/release11/klaus/controller/KlausController.java index e08dc0b..02f0855 100644 --- a/src/main/java/com/release11/klaus/controller/KlausController.java +++ b/src/main/java/com/release11/klaus/controller/KlausController.java @@ -1,10 +1,12 @@ package com.release11.klaus.controller; +import com.release11.klaus.utilis.BusinessKey; +import com.release11.klaus.utilis.TrackingClient; +import com.release11.klaus.model.MockedResponseDto; import com.release11.klaus.service.KlausService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.http.HttpStatus; import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; @@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import java.util.Map; import java.util.UUID; @Controller("/") @@ -22,18 +25,29 @@ public class KlausController { private final KlausService klausService; + @RequestMapping(value = "klaus/v1/get/{clientUUID}/{mockedResponseId}") + public ResponseEntity getMockedResponse(@PathVariable UUID clientUUID, + @PathVariable int mockedResponseId){ + TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse", + BusinessKey.CLIENT_UUID, String.valueOf(clientUUID), + BusinessKey.MESSAGE_ID, String.valueOf(mockedResponseId))); + + return klausService.getMockedResponse(clientUUID, mockedResponseId); + } + @PostMapping(value = "klaus/v1/set/{clientUUID}/{mockedResponseId}") public ResponseEntity setMockedResponse(@PathVariable UUID clientUUID, @PathVariable int mockedResponseId, @RequestParam(required = false) int httpStatus, RequestEntity requestEntity){ - return klausService.setMockedResponse(clientUUID, mockedResponseId, HttpStatus.valueOf(httpStatus), requestEntity); - } + TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "setMockedResponse", + BusinessKey.CLIENT_UUID, String.valueOf(clientUUID), + BusinessKey.MESSAGE_ID, String.valueOf(mockedResponseId))); - @RequestMapping(value = "klaus/v1/get/{clientUUID}/{mockedResponseId}") - public ResponseEntity getMockedResponse(@PathVariable UUID clientUUID, - @PathVariable int mockedResponseId){ - return klausService.getMockedResponse(clientUUID, mockedResponseId); + MockedResponseDto mockedResponseDto = new MockedResponseDto(clientUUID, mockedResponseId, + requestEntity.getHeaders().getContentType().toString(), requestEntity.getBody(), + requestEntity.getHeaders().toSingleValueMap(), httpStatus); + return klausService.setMockedResponse(mockedResponseDto); } } diff --git a/src/main/java/com/release11/klaus/controller/KlausMvcController.java b/src/main/java/com/release11/klaus/controller/KlausMvcController.java index 9bae811..1efa37a 100644 --- a/src/main/java/com/release11/klaus/controller/KlausMvcController.java +++ b/src/main/java/com/release11/klaus/controller/KlausMvcController.java @@ -1,20 +1,20 @@ package com.release11.klaus.controller; +import com.release11.klaus.utilis.BusinessKey; +import com.release11.klaus.utilis.TrackingClient; import com.release11.klaus.model.MockedResponseDto; import com.release11.klaus.service.KlausService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.*; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; -import org.springframework.web.client.RestTemplate; -import java.net.URI; -import java.util.Arrays; +import javax.validation.Valid; +import java.util.HashMap; +import java.util.Map; import java.util.UUID; @Slf4j @@ -22,47 +22,44 @@ import java.util.UUID; @RequestMapping @AllArgsConstructor public class KlausMvcController { - private final String SET_MOCKED_RESPONSE_PATH_V1 = "/klaus/v1/set/"; - private final String apiHost = "http://localhost:8097"; private final KlausService klausService; @GetMapping("/login") public String login(Model model) { - UUID uuid = UUID.randomUUID(); - model.addAttribute("clientUUID", uuid); + model.addAttribute("clientUUID", UUID.randomUUID()); return "login"; } @GetMapping("/home") public String showHome(Model model, @RequestParam UUID clientUUID) { model.addAttribute("mockedResponseDto", new MockedResponseDto(clientUUID, 1, - "body", new HttpHeaders(), "application/xml")); + "application/xml", "body", new HashMap<>(), 200)); return "index"; } //TODO refactor - //TODO form validation and proper error messages @PostMapping("/home") - public String showHomePost(Model model, MockedResponseDto mockedResponseDto, + public String showHomePost(@Valid MockedResponseDto mockRsp, BindingResult bindingResult, Model model, @RequestParam(required = false) String[] header, - @RequestParam(required = false) String[] value, - @RequestParam(required = false) int httpStatus) { - log.info(mockedResponseDto.toString()); - URI uri = URI.create(apiHost + SET_MOCKED_RESPONSE_PATH_V1 + mockedResponseDto.getClientUUID() + "/" - + mockedResponseDto.getMockedResponseId()); + @RequestParam(required = false) String[] value) throws Exception { + if (bindingResult.hasErrors()) { + return "index"; + } + TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "setMockedResponse", + BusinessKey.CLIENT_UUID, String.valueOf(mockRsp.getClientUUID()), + BusinessKey.MESSAGE_ID, String.valueOf(mockRsp.getMockedResponseId()))); + log.info(mockRsp.toString()); + HttpHeaders httpHeaders = new HttpHeaders(); - httpHeaders.setContentType(MediaType.valueOf(mockedResponseDto.getMediaType())); + httpHeaders.setContentType(MediaType.valueOf(mockRsp.getMediaType())); if (header!=null){ for (int i = 0; i < header.length; i++) { httpHeaders.set(header[i], value[i]); }} - RequestEntity requestEntity = new RequestEntity(mockedResponseDto.getMessageBody(), - httpHeaders, HttpMethod.POST, uri); - klausService.setMockedResponse(mockedResponseDto.getClientUUID(), mockedResponseDto.getMockedResponseId(), - HttpStatus.valueOf(httpStatus), requestEntity); + MockedResponseDto mockedResponseDto = new MockedResponseDto(mockRsp.getClientUUID(), mockRsp.getMockedResponseId(), + mockRsp.getMediaType(), mockRsp.getMessageBody(), httpHeaders.toSingleValueMap(), mockRsp.getHttpStatus()); - model.addAttribute("mockedResponseDto", new MockedResponseDto(mockedResponseDto.getClientUUID(), 1, - "body", new HttpHeaders(), "application/xml")); + klausService.setMockedResponse(mockedResponseDto); model.addAttribute("mockSaved", "true"); return "index"; } @@ -70,7 +67,16 @@ public class KlausMvcController { @GetMapping("/home/getMockedResponse") @ResponseBody public String showGetMockedResponse(MockedResponseDto mockedResponseDto) { - return klausService.getMockedResponse(mockedResponseDto.getClientUUID(), + TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse", + BusinessKey.CLIENT_UUID, String.valueOf(mockedResponseDto.getClientUUID()), + BusinessKey.MESSAGE_ID, String.valueOf(mockedResponseDto.getMockedResponseId()))); + return klausService.getMockedResponse(mockedResponseDto.getClientUUID(), mockedResponseDto.getMockedResponseId()).toString(); } + + private void setHeaders(MockedResponseDto mockedResponseDto, String[] header, String[] value){ + + } + + } \ No newline at end of file diff --git a/src/main/java/com/release11/klaus/model/MockedResponseDto.java b/src/main/java/com/release11/klaus/model/MockedResponseDto.java index 979f31f..0edac69 100644 --- a/src/main/java/com/release11/klaus/model/MockedResponseDto.java +++ b/src/main/java/com/release11/klaus/model/MockedResponseDto.java @@ -1,22 +1,44 @@ package com.release11.klaus.model; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.http.HttpHeaders; -import org.springframework.http.RequestEntity; +import com.release11.klaus.model.constraints.HttpCode; +import lombok.*; +import org.springframework.data.annotation.Id; +import org.springframework.data.redis.core.RedisHash; +import org.springframework.data.redis.core.index.Indexed; +import javax.validation.constraints.Positive; +import java.io.Serializable; +import java.util.Map; import java.util.UUID; @Data +@ToString +@RedisHash("MockedResponseDto") @NoArgsConstructor @AllArgsConstructor -@Builder -public class MockedResponseDto { +public final class MockedResponseDto implements Serializable { + @Id + private String compositePrimaryKey; + @Indexed private UUID clientUUID; + @Positive private int mockedResponseId; - private String messageBody; - private HttpHeaders httpHeaders; private String mediaType; + private String messageBody; + private Map httpHeaders; + @HttpCode + private Integer httpStatus; + + public MockedResponseDto(UUID clientUUID, int mockedResponseId, String mediaType, + String messageBody, Map httpHeaders, Integer httpStatus) { + this.compositePrimaryKey = clientUUID.toString() + "_" + mockedResponseId; + this.clientUUID = clientUUID; + this.mockedResponseId = mockedResponseId; + this.mediaType = mediaType; + this.messageBody = messageBody; + this.httpHeaders = httpHeaders; + this.httpStatus = httpStatus; + } } + + diff --git a/src/main/java/com/release11/klaus/repository/MockedResponseRedisRepository.java b/src/main/java/com/release11/klaus/repository/MockedResponseRedisRepository.java deleted file mode 100644 index 036cb3a..0000000 --- a/src/main/java/com/release11/klaus/repository/MockedResponseRedisRepository.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.release11.klaus.repository; - -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.RequestEntity; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; - -import java.util.Map; -import java.util.Objects; -import java.util.UUID; - -@Slf4j -@Repository -@Transactional -@AllArgsConstructor -public class MockedResponseRedisRepository implements MockedResponseRepository { - - private final JedisPool jedisPool; - - //TODO redis persistence - public ResponseEntity getMockedResponse(UUID clientUUID, int mockedResponseId){ - String body, httpCodeStatus; - String key = String.format("%s_%s", clientUUID.toString(), mockedResponseId); - HttpHeaders responseHeaders = new HttpHeaders(); - try(Jedis jedis = jedisPool.getResource()){ - body = jedis.get(key + "_body"); - Map headerMap = jedis.hgetAll(key + "_headers"); - headerMap.forEach(responseHeaders::set); - httpCodeStatus = jedis.get(key + "_httpCodeStatus"); - } - return new ResponseEntity(body, responseHeaders, - Objects.requireNonNull(HttpStatus.valueOf(Integer.parseInt(httpCodeStatus)))); - } - - public ResponseEntity setMockedResponse(UUID clientUUID, int mockedResponseId, HttpStatus httpStatus, - RequestEntity requestEntity){ - log.info("mockedResponseRepository, setMockedResponse, clientUUID {}, mockedResponseId {}, httpStatus{} requestEntity{} ", - clientUUID, mockedResponseId, httpStatus, requestEntity); - if (httpStatus == null){httpStatus = HttpStatus.OK;} - - String key = String.format("%s_%s", clientUUID.toString(), mockedResponseId); - setMockedResponseBody(key + "_body", requestEntity.getBody()); - setMockedResponseHeader(key + "_headers", requestEntity.getHeaders().toSingleValueMap()); - setMockedResponseBody(key + "_httpCodeStatus", String.valueOf(httpStatus.value())); - return new ResponseEntity("MockedResponse has been setup successfully! :D", new HttpHeaders(), HttpStatus.ACCEPTED); - } - private synchronized void setMockedResponseBody(String key, String body){ - try(Jedis jedis = jedisPool.getResource()){ - jedis.set(key, body); - } - } - - private synchronized void setMockedResponseHeader(String key, Map headers){ - try(Jedis jedis = jedisPool.getResource()){ - jedis.del(key); - headers.forEach((field, value)->jedis.hset(key, field, value)); - } - } - -} diff --git a/src/main/java/com/release11/klaus/repository/MockedResponseRepository.java b/src/main/java/com/release11/klaus/repository/MockedResponseRepository.java index 087baef..47fa8a9 100644 --- a/src/main/java/com/release11/klaus/repository/MockedResponseRepository.java +++ b/src/main/java/com/release11/klaus/repository/MockedResponseRepository.java @@ -1,7 +1,11 @@ package com.release11.klaus.repository; +import com.release11.klaus.model.MockedResponseDto; +import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; +import java.util.UUID; + @Repository -public interface MockedResponseRepository { +public interface MockedResponseRepository extends CrudRepository{ } diff --git a/src/main/java/com/release11/klaus/service/KlausService.java b/src/main/java/com/release11/klaus/service/KlausService.java index 5fa24c7..1fcabb1 100644 --- a/src/main/java/com/release11/klaus/service/KlausService.java +++ b/src/main/java/com/release11/klaus/service/KlausService.java @@ -1,5 +1,6 @@ package com.release11.klaus.service; +import com.release11.klaus.model.MockedResponseDto; import org.springframework.http.HttpStatus; import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; @@ -8,6 +9,5 @@ import java.util.UUID; public interface KlausService { ResponseEntity getMockedResponse(UUID clientUUID, int mockedResponseId); - ResponseEntity setMockedResponse(UUID clientUUID, int mockedResponseId, HttpStatus httpStatus, - RequestEntity requestEntity); + ResponseEntity setMockedResponse(MockedResponseDto mockedResponseDto); } diff --git a/src/main/java/com/release11/klaus/service/KlausServiceImpl.java b/src/main/java/com/release11/klaus/service/KlausServiceImpl.java index cfc6851..1d1e52b 100644 --- a/src/main/java/com/release11/klaus/service/KlausServiceImpl.java +++ b/src/main/java/com/release11/klaus/service/KlausServiceImpl.java @@ -1,13 +1,16 @@ package com.release11.klaus.service; -import com.release11.klaus.repository.MockedResponseRedisRepository; +import com.release11.klaus.model.MockedResponseDto; +import com.release11.klaus.repository.MockedResponseRepository; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; -import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import java.util.Objects; +import java.util.Optional; import java.util.UUID; @Slf4j @@ -15,21 +18,27 @@ import java.util.UUID; @AllArgsConstructor public class KlausServiceImpl implements KlausService { - private final MockedResponseRedisRepository mockedResponseRedisRepository; + private final MockedResponseRepository mockedResponseRepository; @Override public ResponseEntity getMockedResponse(UUID clientUUID, int mockedResponseId) { log.info("KlausServiceImpl, operation getMockedResponse, clientId {}, mockedResponseId {} ", clientUUID, mockedResponseId); - ResponseEntity responseEntity = mockedResponseRedisRepository.getMockedResponse(clientUUID, mockedResponseId); - return responseEntity; + String key = clientUUID.toString() + "_" + mockedResponseId; + Optional optMockedResponseDto = mockedResponseRepository.findById(key); + MockedResponseDto mockedResponseDto = optMockedResponseDto.get(); + HttpHeaders httpHeaders = new HttpHeaders(); + mockedResponseDto.getHttpHeaders().forEach(httpHeaders::set); + return new ResponseEntity<>(mockedResponseDto.getMessageBody(), httpHeaders, + Objects.requireNonNull(HttpStatus.valueOf(mockedResponseDto.getHttpStatus()))); } @Override - public ResponseEntity setMockedResponse(UUID clientUUID, int mockedResponseId, HttpStatus httpStatus, - RequestEntity requestEntity) { - log.info("KlausServiceImpl, operation setMockedResponse, messageBody {}, mockedResponseId {} ", - requestEntity, mockedResponseId); - return mockedResponseRedisRepository.setMockedResponse(clientUUID, mockedResponseId, httpStatus,requestEntity); + public ResponseEntity setMockedResponse(MockedResponseDto mockedResponseDto) { + mockedResponseRepository.save(mockedResponseDto); + log.info("KlausServiceImpl, operation setMockedResponse, mockedResponseDto {} ", mockedResponseDto.toString()); + return new ResponseEntity<>("MockedResponse has been setup successfully!", new HttpHeaders(), + HttpStatus.ACCEPTED); } + } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 6260d24..10662de 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,9 +1,11 @@ -server.port = 8099 +server.port = 8097 spring.output.ansi.enabled = always -logging.file.name=/var/log/klaus/ +#logging.file.name=/var/log/klaus/ logging.level.root=INFO -logging.level.org.springframework.web=DEBUG -logging.level.com.release11=DEBUG +logging.level.org.springframework.web=INFO +logging.level.com.release11=INFO logging.file.max-size = 10MB spring.mvc.log-request-details=true +appender.rolling.layout.type = ESJsonLayout +appender.rolling.layout.type_name = server diff --git a/src/main/resources/data-access.properties b/src/main/resources/data-access.properties index 25bff42..122952c 100644 --- a/src/main/resources/data-access.properties +++ b/src/main/resources/data-access.properties @@ -1,3 +1,2 @@ -//redis.host = redis-server redis.host = localhost redis.port = 6379 \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index a1c99c0..5fedb2a 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -3,94 +3,63 @@ Title - + -
---------------------------------------------------------------------------------------------------------------- +

In order to set mockup response. Please send the response, that you want to receive, on:
http://localhost:8097/klaus/v1/set/ clientUUID should be here/{mockedResponseId}?httpStatus=200
or simply fill and submit the below form:
+ sayHi('John');
- -

- -

- -

- -
Provide mocked response headers: Add a new header -
-
- - + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mocked response id:Id Error
Mocked response body:Body Error
Mocked response http code status:HttpStatus Error
Provide mocked response headers:Add a new header + + + + +
+
Media type:
+

Mock has been saved

-
---------------------------------------------------------------------------------------------------------------- +
+

In order to use the mocked response in your integration tests or simply get your mocked response please send a request to
http://localhost:8097/klaus/v1/get/clientUUID should be here/{mockedResponseId} @@ -104,7 +73,7 @@ function httpGet() -
---------------------------------------------------------------------------------------------------------------- +
diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 34e08a6..0cf2a2a 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -3,6 +3,7 @@ Login +

Please move to the next step with your own client UUID:
@@ -16,5 +17,6 @@
clientUUID should be here + \ No newline at end of file diff --git a/src/test/java/com/release11/klaus/config/RedisConfigTest.java b/src/test/java/com/release11/klaus/config/RedisConfigTest.java index 53dff81..1ff2b20 100644 --- a/src/test/java/com/release11/klaus/config/RedisConfigTest.java +++ b/src/test/java/com/release11/klaus/config/RedisConfigTest.java @@ -3,12 +3,8 @@ package com.release11.klaus.config; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.core.env.Environment; -import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; -import static org.junit.jupiter.api.Assertions.*; - @SpringBootTest class RedisConfigTest { diff --git a/src/test/java/com/release11/klaus/controller/KlausControllerTest.java b/src/test/java/com/release11/klaus/controller/KlausControllerTest.java index 1eadfaa..93067ae 100644 --- a/src/test/java/com/release11/klaus/controller/KlausControllerTest.java +++ b/src/test/java/com/release11/klaus/controller/KlausControllerTest.java @@ -2,8 +2,6 @@ package com.release11.klaus.controller; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - class KlausControllerTest { @Test diff --git a/src/test/java/com/release11/klaus/controller/KlausMvcControllerTest.java b/src/test/java/com/release11/klaus/controller/KlausMvcControllerTest.java index 8fc5969..9176313 100644 --- a/src/test/java/com/release11/klaus/controller/KlausMvcControllerTest.java +++ b/src/test/java/com/release11/klaus/controller/KlausMvcControllerTest.java @@ -1,6 +1,12 @@ package com.release11.klaus.controller; import org.junit.jupiter.api.Test; +import org.springframework.http.HttpStatus; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; @@ -8,5 +14,6 @@ class KlausMvcControllerTest { @Test void showHome() { + } -} \ No newline at end of file +} diff --git a/src/test/java/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.java b/src/test/java/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.java index e289435..ae2590c 100644 --- a/src/test/java/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.java +++ b/src/test/java/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.java @@ -12,5 +12,11 @@ class MockedResponseRedisRepositoryTest { @Test void setMockedResponse() { +// System.out.println("Before Test, clearing Redis"); +// JedisPool pool = new JedisPool("localhost"); +// redis = pool.getResource(); +// redis.ltrim(key, 1, 0); } + + } \ No newline at end of file diff --git a/src/test/java/com/release11/klaus/service/KlausServiceImplTest.java b/src/test/java/com/release11/klaus/service/KlausServiceImplTest.java index 53e51a9..71c3a05 100644 --- a/src/test/java/com/release11/klaus/service/KlausServiceImplTest.java +++ b/src/test/java/com/release11/klaus/service/KlausServiceImplTest.java @@ -1,6 +1,7 @@ package com.release11.klaus.service; -import com.release11.klaus.repository.MockedResponseRedisRepository; +import com.release11.klaus.model.MockedResponseDto; + import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -19,43 +20,44 @@ import static org.mockito.Mockito.*; @SpringBootTest class KlausServiceImplTest { - @Mock - MockedResponseRedisRepository mockedResponseRedisRepository; - - @InjectMocks - KlausServiceImpl klausServiceImpl; - - private final static UUID uuid = UUID.fromString("e4248095-100e-4f1f-8226-e722014ae29f"); - private final static URI uri = URI.create("http//:localhost:8080"); - private static ResponseEntity mockedResponseEntity; - private static RequestEntity mockedRequestEntity; - - @BeforeAll - public static void initializeMockEntities(){ - HttpHeaders httpHeaders = new HttpHeaders(); - mockedResponseEntity = new ResponseEntity("body", httpHeaders, HttpStatus.ACCEPTED); - mockedRequestEntity = new RequestEntity(HttpMethod.POST, uri); - } - - @Test - void getMockedResponse() { - when(mockedResponseRedisRepository.getMockedResponse(any(), anyInt())) - .thenReturn(mockedResponseEntity); - - ResponseEntity responseEntity = klausServiceImpl.getMockedResponse(uuid, 1); - assertThat(responseEntity).isNotNull(); - verify(mockedResponseRedisRepository).getMockedResponse(any(), anyInt()); - } - - @Test - void setMockedResponse() { - when(mockedResponseRedisRepository.setMockedResponse(any(), anyInt(), any(), any())) - .thenReturn(mockedResponseEntity); - - ResponseEntity responseEntity = klausServiceImpl.setMockedResponse(uuid, 1, - HttpStatus.ACCEPTED, mockedRequestEntity); - assertThat(responseEntity).isNotNull(); - verify(mockedResponseRedisRepository).setMockedResponse(any(), anyInt(), any(), any()); - } +// @Mock +// MockedResponseRedisRepository mockedResponseRedisRepository; +// +// @InjectMocks +// KlausServiceImpl klausServiceImpl; +// +// private final static UUID uuid = UUID.fromString("e4248095-100e-4f1f-8226-e722014ae29f"); +// private final static URI uri = URI.create("http//:localhost:8080"); +// private static ResponseEntity mockedResponseEntity; +// private static RequestEntity mockedRequestEntity; +// private static MockedResponseDto mockedResponseDto = new MockedResponseDto(uuid, 1, "application/xml", "body", +// new HttpHeaders(), 200); +// +// @BeforeAll +// public static void initializeMockEntities(){ +// HttpHeaders httpHeaders = new HttpHeaders(); +// mockedResponseEntity = new ResponseEntity("body", httpHeaders, HttpStatus.ACCEPTED); +// mockedRequestEntity = new RequestEntity(HttpMethod.POST, uri); +// } +// +// @Test +// void getMockedResponse() { +//// when(mockedResponseRedisRepository.getMockedResponse(any(), anyInt())) +//// .thenReturn(mockedResponseEntity); +//// +//// ResponseEntity responseEntity = klausServiceImpl.getMockedResponse(uuid, 1); +//// assertThat(responseEntity).isNotNull(); +//// verify(mockedResponseRedisRepository).getMockedResponse(any(), anyInt()); +// } +// +// @Test +// void setMockedResponse() { +// when(mockedResponseRedisRepository.setMockedResponse(any())) +// .thenReturn(mockedResponseEntity); +// +// ResponseEntity responseEntity = klausServiceImpl.setMockedResponse(mockedResponseDto); +// assertThat(responseEntity).isNotNull(); +// verify(mockedResponseRedisRepository).setMockedResponse(any()); +// } } \ No newline at end of file diff --git a/target/classes/application.properties b/target/classes/application.properties index 6260d24..cf3346e 100644 --- a/target/classes/application.properties +++ b/target/classes/application.properties @@ -1,9 +1,11 @@ -server.port = 8099 +server.port = 8098 spring.output.ansi.enabled = always -logging.file.name=/var/log/klaus/ +#logging.file.name=/var/log/klaus/ logging.level.root=INFO -logging.level.org.springframework.web=DEBUG -logging.level.com.release11=DEBUG +logging.level.org.springframework.web=INFO +logging.level.com.release11=INFO logging.file.max-size = 10MB spring.mvc.log-request-details=true +appender.rolling.layout.type = ESJsonLayout +appender.rolling.layout.type_name = server diff --git a/target/classes/com/release11/klaus/KlausApplication.class b/target/classes/com/release11/klaus/KlausApplication.class index 0e56a1b..3c14ac5 100644 Binary files a/target/classes/com/release11/klaus/KlausApplication.class and b/target/classes/com/release11/klaus/KlausApplication.class differ diff --git a/target/classes/com/release11/klaus/config/RedisConfig.class b/target/classes/com/release11/klaus/config/RedisConfig.class index dbc31d6..d31cfd7 100644 Binary files a/target/classes/com/release11/klaus/config/RedisConfig.class and b/target/classes/com/release11/klaus/config/RedisConfig.class differ diff --git a/target/classes/com/release11/klaus/controller/KlausController.class b/target/classes/com/release11/klaus/controller/KlausController.class index 63d4042..970d268 100644 Binary files a/target/classes/com/release11/klaus/controller/KlausController.class and b/target/classes/com/release11/klaus/controller/KlausController.class differ diff --git a/target/classes/com/release11/klaus/controller/KlausMvcController.class b/target/classes/com/release11/klaus/controller/KlausMvcController.class index 55c08a5..6750086 100644 Binary files a/target/classes/com/release11/klaus/controller/KlausMvcController.class and b/target/classes/com/release11/klaus/controller/KlausMvcController.class differ diff --git a/target/classes/com/release11/klaus/model/MockedResponseDto$MockedResponseDtoBuilder.class b/target/classes/com/release11/klaus/model/MockedResponseDto$MockedResponseDtoBuilder.class deleted file mode 100644 index 246559b..0000000 Binary files a/target/classes/com/release11/klaus/model/MockedResponseDto$MockedResponseDtoBuilder.class and /dev/null differ diff --git a/target/classes/com/release11/klaus/model/MockedResponseDto.class b/target/classes/com/release11/klaus/model/MockedResponseDto.class index 61f35f4..66a64c9 100644 Binary files a/target/classes/com/release11/klaus/model/MockedResponseDto.class and b/target/classes/com/release11/klaus/model/MockedResponseDto.class differ diff --git a/target/classes/com/release11/klaus/repository/MockedResponseRedisRepository.class b/target/classes/com/release11/klaus/repository/MockedResponseRedisRepository.class deleted file mode 100644 index 80deded..0000000 Binary files a/target/classes/com/release11/klaus/repository/MockedResponseRedisRepository.class and /dev/null differ diff --git a/target/classes/com/release11/klaus/repository/MockedResponseRepository.class b/target/classes/com/release11/klaus/repository/MockedResponseRepository.class index 129a8fc..2dd2b32 100644 Binary files a/target/classes/com/release11/klaus/repository/MockedResponseRepository.class and b/target/classes/com/release11/klaus/repository/MockedResponseRepository.class differ diff --git a/target/classes/com/release11/klaus/service/KlausService.class b/target/classes/com/release11/klaus/service/KlausService.class index 15b32f1..5e201b7 100644 Binary files a/target/classes/com/release11/klaus/service/KlausService.class and b/target/classes/com/release11/klaus/service/KlausService.class differ diff --git a/target/classes/com/release11/klaus/service/KlausServiceImpl.class b/target/classes/com/release11/klaus/service/KlausServiceImpl.class index 94f0c1a..391d5f4 100644 Binary files a/target/classes/com/release11/klaus/service/KlausServiceImpl.class and b/target/classes/com/release11/klaus/service/KlausServiceImpl.class differ diff --git a/target/classes/data-access.properties b/target/classes/data-access.properties index 25bff42..122952c 100644 --- a/target/classes/data-access.properties +++ b/target/classes/data-access.properties @@ -1,3 +1,2 @@ -//redis.host = redis-server redis.host = localhost redis.port = 6379 \ No newline at end of file diff --git a/target/classes/templates/index.html b/target/classes/templates/index.html index a1c99c0..5fedb2a 100644 --- a/target/classes/templates/index.html +++ b/target/classes/templates/index.html @@ -3,94 +3,63 @@ Title - + -
---------------------------------------------------------------------------------------------------------------- +

In order to set mockup response. Please send the response, that you want to receive, on:
http://localhost:8097/klaus/v1/set/ clientUUID should be here/{mockedResponseId}?httpStatus=200
or simply fill and submit the below form:
+ sayHi('John');
- -

- -

- -

- -
Provide mocked response headers: Add a new header -
-
- - + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mocked response id:Id Error
Mocked response body:Body Error
Mocked response http code status:HttpStatus Error
Provide mocked response headers:Add a new header + + + + +
+
Media type:
+

Mock has been saved

-
---------------------------------------------------------------------------------------------------------------- +
+

In order to use the mocked response in your integration tests or simply get your mocked response please send a request to
http://localhost:8097/klaus/v1/get/clientUUID should be here/{mockedResponseId} @@ -104,7 +73,7 @@ function httpGet() -
---------------------------------------------------------------------------------------------------------------- +
diff --git a/target/classes/templates/login.html b/target/classes/templates/login.html index 34e08a6..0cf2a2a 100644 --- a/target/classes/templates/login.html +++ b/target/classes/templates/login.html @@ -3,6 +3,7 @@ Login +

Please move to the next step with your own client UUID:
@@ -16,5 +17,6 @@
clientUUID should be here + \ No newline at end of file diff --git a/target/test-classes/com/release11/klaus/config/RedisConfigTest.class b/target/test-classes/com/release11/klaus/config/RedisConfigTest.class index 9578a39..ec2c902 100644 Binary files a/target/test-classes/com/release11/klaus/config/RedisConfigTest.class and b/target/test-classes/com/release11/klaus/config/RedisConfigTest.class differ diff --git a/target/test-classes/com/release11/klaus/controller/KlausControllerTest.class b/target/test-classes/com/release11/klaus/controller/KlausControllerTest.class index b771cd8..a28b572 100644 Binary files a/target/test-classes/com/release11/klaus/controller/KlausControllerTest.class and b/target/test-classes/com/release11/klaus/controller/KlausControllerTest.class differ diff --git a/target/test-classes/com/release11/klaus/controller/KlausMvcControllerTest.class b/target/test-classes/com/release11/klaus/controller/KlausMvcControllerTest.class index 72d20fe..0c2f016 100644 Binary files a/target/test-classes/com/release11/klaus/controller/KlausMvcControllerTest.class and b/target/test-classes/com/release11/klaus/controller/KlausMvcControllerTest.class differ diff --git a/target/test-classes/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.class b/target/test-classes/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.class index 6d295e9..0d0b038 100644 Binary files a/target/test-classes/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.class and b/target/test-classes/com/release11/klaus/repository/MockedResponseRedisRepositoryTest.class differ diff --git a/target/test-classes/com/release11/klaus/service/KlausServiceImplTest.class b/target/test-classes/com/release11/klaus/service/KlausServiceImplTest.class index a3c7fcc..7d26419 100644 Binary files a/target/test-classes/com/release11/klaus/service/KlausServiceImplTest.class and b/target/test-classes/com/release11/klaus/service/KlausServiceImplTest.class differ