diff --git a/clearing-parent/backend-api/pom.xml b/clearing-parent/backend-api/pom.xml
index 0f9f3f647..1eb563bed 100644
--- a/clearing-parent/backend-api/pom.xml
+++ b/clearing-parent/backend-api/pom.xml
@@ -116,6 +116,24 @@
${project.artifactId}
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.21.0
+
+
+ org.junit.platform
+ junit-platform-surefire-provider
+ 1.2.0-M1
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.2.0-M1
+
+
+
\ No newline at end of file
diff --git a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java
new file mode 100644
index 000000000..79903c50f
--- /dev/null
+++ b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java
@@ -0,0 +1,53 @@
+package ru.spcex.clearing.backendapi.controller.queue;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.ResultActions;
+import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.filter.CharacterEncodingFilter;
+import ru.spcex.clearing.backendapi.config.WebConfig;
+import ru.spcex.clearing.backendapi.controller.queue.company.DeleteCompanyController;
+import ru.spcex.clearing.backendapi.controller.queue.config.*;
+
+import javax.annotation.PostConstruct;
+import java.util.concurrent.atomic.AtomicLong;
+
+
+@SpringJUnitWebConfig(classes = {
+ WebConfig.class,
+ IOperator.class,
+ DeleteCompanyController.class,
+ BankAccountControllerConfig.class,
+ KafkaConfig.class,
+ HazelcastServiceTestConfiguration.class,
+ Jackson2HttpConverterConfig.class})
+public abstract class AbstractControllerTest {
+ protected static final AtomicLong currentId = new AtomicLong();
+ private static final CharacterEncodingFilter CHARACTER_ENCODING_FILTER = new CharacterEncodingFilter();
+
+ static {
+ CHARACTER_ENCODING_FILTER.setEncoding("UTF-8");
+ CHARACTER_ENCODING_FILTER.setForceEncoding(true);
+ }
+
+ private MockMvc mockMvc;
+
+ @Autowired
+ private WebApplicationContext webApplicationContext;
+
+ @PostConstruct
+ private void postConstruct() {
+ mockMvc = MockMvcBuilders
+ .webAppContextSetup(webApplicationContext)
+ .addFilter(CHARACTER_ENCODING_FILTER)
+// .apply(springSecurity())
+ .build();
+ }
+
+ protected ResultActions perform(MockHttpServletRequestBuilder builder) throws Exception {
+ return mockMvc.perform(builder);
+ }
+}
diff --git a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java
index e0705f548..80aff6387 100644
--- a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java
+++ b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java
@@ -1,18 +1,13 @@
package ru.spcex.clearing.backendapi.controller.queue.account;
import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.NestedExceptionUtils;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig;
-import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.filter.CharacterEncodingFilter;
import ru.spcex.clearing.backendapi.config.WebConfig;
+import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
import ru.spcex.clearing.backendapi.controller.queue.config.*;
-import ru.spcex.clearing.backendapi.controller.queue.utils.MatcherFactory;
import ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.account.BankAccountUpdateAction;
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
@@ -22,9 +17,6 @@ import ru.spcex.clearing.backendapi.errors.ActionValidationException;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.account.BankAccountNewRequest;
-import javax.annotation.PostConstruct;
-import java.util.concurrent.atomic.AtomicLong;
-
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
@@ -38,31 +30,8 @@ import static ru.spcex.clearing.backendapi.controller.queue.utils.JsonUtil.write
KafkaConfig.class,
HazelcastServiceTestConfiguration.class,
Jackson2HttpConverterConfig.class})
-class BankAccountControllerTest {
-
- public static final MatcherFactory.Matcher CUD_RESPONSE_MATCHER = MatcherFactory.usingIgnoringFieldsComparator(CudResponse.class);
+class BankAccountControllerTest extends AbstractControllerTest {
private static final String REST_URL = "/securities/bank-accounts/";
- private static final CharacterEncodingFilter CHARACTER_ENCODING_FILTER = new CharacterEncodingFilter();
- private static final AtomicLong currentId = new AtomicLong();
-
- static {
- CHARACTER_ENCODING_FILTER.setEncoding("UTF-8");
- CHARACTER_ENCODING_FILTER.setForceEncoding(true);
- }
-
- private MockMvc mockMvc;
-
- @Autowired
- private WebApplicationContext webApplicationContext;
-
- @PostConstruct
- private void postConstruct() {
- mockMvc = MockMvcBuilders
- .webAppContextSetup(webApplicationContext)
- .addFilter(CHARACTER_ENCODING_FILTER)
-// .apply(springSecurity())
- .build();
- }
/**
* {@link BankAccountController#add(BankAccountNewAction)}
@@ -97,9 +66,9 @@ class BankAccountControllerTest {
extended.setMessage("success");
extended.setPayload(new QueueSuccessResponse(ActionType.NEW, currentId.getAndIncrement()));
//ACT
- mockMvc.perform(MockMvcRequestBuilders.post(REST_URL)
- .contentType(MediaType.APPLICATION_JSON)
- .content(writeValue(bankAccountNewAction)))
+ perform(MockMvcRequestBuilders.post(REST_URL)
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(writeValue(bankAccountNewAction)))
.andDo(print())//output to the log request and response
// ASSERT
.andExpect(status().isOk())
@@ -167,9 +136,9 @@ class BankAccountControllerTest {
extended.setMessage("success");
extended.setPayload(new QueueSuccessResponse(ActionType.UPDATE, currentId.getAndIncrement()));
//ACT
- mockMvc.perform(MockMvcRequestBuilders.put(REST_URL + "0")
- .contentType(MediaType.APPLICATION_JSON)
- .content(writeValue(bankAccountNewAction)))
+ perform(MockMvcRequestBuilders.put(REST_URL + "0")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(writeValue(bankAccountNewAction)))
.andDo(print())//output to the log request and response
// ASSERT
.andExpect(status().isOk())
@@ -191,8 +160,8 @@ class BankAccountControllerTest {
extended.setMessage("success");
extended.setPayload(new QueueSuccessResponse(ActionType.DELETE, currentId.getAndIncrement()));
//ACT
- mockMvc.perform(MockMvcRequestBuilders.delete(REST_URL + "0")
- .contentType(MediaType.APPLICATION_JSON))
+ perform(MockMvcRequestBuilders.delete(REST_URL + "0")
+ .contentType(MediaType.APPLICATION_JSON))
.andDo(print())//output to the log request and response
// ASSERT
.andExpect(status().isOk())
@@ -203,7 +172,7 @@ class BankAccountControllerTest {
private void assertThrowsFor(IAction> iAction) {
assertThrows(ActionValidationException.class, () -> {
try {
- mockMvc.perform(MockMvcRequestBuilders.post(REST_URL).contentType(MediaType.APPLICATION_JSON).content(writeValue(iAction)));
+ perform(MockMvcRequestBuilders.post(REST_URL).contentType(MediaType.APPLICATION_JSON).content(writeValue(iAction)));
} catch (Exception e) {
Throwable rootCause = NestedExceptionUtils.getRootCause(e);
throw rootCause != null ? rootCause : e;
diff --git a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/company/DeleteCompanyControllerTest.java b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/company/DeleteCompanyControllerTest.java
new file mode 100644
index 000000000..1673abc9d
--- /dev/null
+++ b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/company/DeleteCompanyControllerTest.java
@@ -0,0 +1,40 @@
+package ru.spcex.clearing.backendapi.controller.queue.company;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
+import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
+import ru.spcex.clearing.backendapi.controller.response.cud.QueueSuccessResponse;
+import ru.spcex.clearing.platform.messaging.domain.ActionType;
+
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static ru.spcex.clearing.backendapi.controller.queue.utils.JsonUtil.writeValue;
+
+class DeleteCompanyControllerTest extends AbstractControllerTest {
+ private static final String REST_URL = "/companies/";
+
+ /**
+ * {@link DeleteCompanyController#delete(Long)}
+ * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
+ * Входной запрос {@link Long}: - 0L
+ */
+ @Test
+ void delete() throws Exception {
+ //ARRANGE
+ CudResponse extended = new CudResponse();
+ extended.setCode(0L);
+ extended.setMessage("success");
+ extended.setPayload(new QueueSuccessResponse(ActionType.DELETE, currentId.getAndIncrement()));
+ //ACT
+ perform(MockMvcRequestBuilders.delete(REST_URL + "0")
+ .contentType(MediaType.APPLICATION_JSON))
+ .andDo(print())//output to the log request and response
+// ASSERT
+ .andExpect(status().isOk())
+ .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
+ .andExpect(content().json(writeValue(extended)));
+ }
+}
\ No newline at end of file
diff --git a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/BankAccountControllerConfig.java b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/BankAccountControllerConfig.java
index 2f832f51b..8b79bff37 100644
--- a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/BankAccountControllerConfig.java
+++ b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/BankAccountControllerConfig.java
@@ -1,6 +1,7 @@
package ru.spcex.clearing.backendapi.controller.queue.config;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.spcex.clearing.backendapi.controller.queue.account.BankAccountController;
@@ -10,9 +11,11 @@ import ru.spcex.clearing.backendapi.service.IOperator;
public class BankAccountControllerConfig {
@Autowired
+ @Qualifier("iOperator")
+ private IOperator operator;
+
@Bean
- public BankAccountController createBankAccountController(IOperator operator) {
+ public BankAccountController createBankAccountController() {
return new BankAccountController(operator);
}
-
}
diff --git a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/DeleteCompanyControllerConfig.java b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/DeleteCompanyControllerConfig.java
new file mode 100644
index 000000000..71a592793
--- /dev/null
+++ b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/DeleteCompanyControllerConfig.java
@@ -0,0 +1,20 @@
+package ru.spcex.clearing.backendapi.controller.queue.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import ru.spcex.clearing.backendapi.controller.queue.company.DeleteCompanyController;
+import ru.spcex.clearing.backendapi.service.IOperator;
+
+@Configuration
+public class DeleteCompanyControllerConfig {
+ @Autowired
+ @Qualifier("iOperator")
+ private IOperator operator;
+
+ @Bean
+ public DeleteCompanyController createDeleteCompanyController() {
+ return new DeleteCompanyController(operator);
+ }
+}
diff --git a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/HazelcastServiceTestConfiguration.java b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/HazelcastServiceTestConfiguration.java
index 04e64990d..c25659999 100644
--- a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/HazelcastServiceTestConfiguration.java
+++ b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/HazelcastServiceTestConfiguration.java
@@ -40,7 +40,7 @@ public class HazelcastServiceTestConfiguration {
joinConfig.setTcpIpConfig(new TcpIpConfig().setEnabled(true).setMembers(List.of("127.0.0.1")));
networkConfig.setJoin(joinConfig);
cfg.setNetworkConfig(networkConfig);
- hazelcastInstance = Hazelcast.newHazelcastInstance(cfg);
+ hazelcastInstance = Hazelcast.getOrCreateHazelcastInstance(cfg);
HazelcastHelper.otcSystem_setStorageState(true, hazelcastInstance);
return new HazelcastService(taskExecutorHazelcastClientInitializer, taskExecutorIdGeneratorAwaiter, params);
}
diff --git a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/IOperator.java b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/IOperator.java
index 065785269..5837d3b4a 100644
--- a/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/IOperator.java
+++ b/clearing-parent/backend-api/src/test/ru/spcex/clearing/backendapi/controller/queue/config/IOperator.java
@@ -16,9 +16,8 @@ public class IOperator {
private HazelcastService hazelcastServiceTest;
@Autowired
- @Bean
+ @Bean(name = "iOperator")
public OperatorImpl createIOperator(Producer kafka) {
return new OperatorImpl(kafka, hazelcastServiceTest);
}
-
}