From 3acebda42b9a912d458d05183107343b2b467dbc Mon Sep 17 00:00:00 2001 From: psemenkov Date: Tue, 21 Feb 2023 18:24:44 +0300 Subject: [PATCH] Adding test for user, utilities, securities and simple refactoring. --- .../queue/AbstractControllerTest.java | 99 ++++++++++++++++++- .../account/BankAccountControllerTest.java | 8 +- .../queue/company/RelationControllerTest.java | 6 +- .../scheduler/LauncherControllerTest.java | 35 ------- .../CudMoneyMarketSecurityControllerTest.java | 64 ++++++++---- .../InformationAccountControllerTest.java | 29 ++++++ .../securities/SecurityControllerTest.java | 35 +++++++ .../queue/user/UserControllerTest.java | 81 +++++++++++++++ .../user/UserRoleSessionControllerTest.java | 31 ++++++ .../utilities/CudKeyRateControllerTest.java | 95 ++++++++++++++++++ .../utilities/StatementControllerTest.java | 89 +++++++++++++++++ .../utilities/UserSettingsControllerTest.java | 52 ++++++++++ 12 files changed, 558 insertions(+), 66 deletions(-) create mode 100644 clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/InformationAccountControllerTest.java create mode 100644 clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityControllerTest.java create mode 100644 clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserControllerTest.java create mode 100644 clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserRoleSessionControllerTest.java create mode 100644 clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/CudKeyRateControllerTest.java create mode 100644 clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementControllerTest.java create mode 100644 clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/UserSettingsControllerTest.java diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java index e8e2ebe3d..0e04e9aad 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java @@ -3,6 +3,11 @@ package ru.spcex.clearing.backendapi.controller.queue; import org.apache.kafka.clients.producer.MockProducer; import org.apache.kafka.clients.producer.ProducerRecord; import org.junit.jupiter.api.extension.ExtendWith; +import org.keycloak.KeycloakPrincipal; +import org.keycloak.KeycloakSecurityContext; +import org.keycloak.adapters.spi.KeycloakAccount; +import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; +import org.keycloak.representations.AccessToken; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.springframework.beans.factory.annotation.Autowired; @@ -10,6 +15,7 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.MockMvc; @@ -37,6 +43,13 @@ import ru.spcex.clearing.backendapi.controller.queue.payment.PaymentInstructionC import ru.spcex.clearing.backendapi.controller.queue.register.*; import ru.spcex.clearing.backendapi.controller.queue.scheduler.*; import ru.spcex.clearing.backendapi.controller.queue.securities.CudMoneyMarketSecurityController; +import ru.spcex.clearing.backendapi.controller.queue.securities.InformationAccountController; +import ru.spcex.clearing.backendapi.controller.queue.securities.SecurityController; +import ru.spcex.clearing.backendapi.controller.queue.user.UserController; +import ru.spcex.clearing.backendapi.controller.queue.user.UserRoleSessionController; +import ru.spcex.clearing.backendapi.controller.queue.utilities.CudKeyRateController; +import ru.spcex.clearing.backendapi.controller.queue.utilities.StatementController; +import ru.spcex.clearing.backendapi.controller.queue.utilities.UserSettingsController; import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction; import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse; import ru.spcex.clearing.backendapi.controller.response.cud.CudResponseTest; @@ -63,8 +76,7 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicLong; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.*; 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; @@ -123,6 +135,15 @@ import static ru.spcex.clearing.backendapi.controller.utils.MatcherFactory.using PlannerTemplateController.class, //securities CudMoneyMarketSecurityController.class, + InformationAccountController.class, + SecurityController.class, + //user + UserController.class, + UserRoleSessionController.class, + //utilities + CudKeyRateController.class, + StatementController.class, + UserSettingsController.class, //******* common configs ******* WebTestConfig.class, IOperatorTest.class, @@ -235,6 +256,34 @@ public abstract class AbstractControllerTest { CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); } + protected void checkUpdatingWithIdVolidationByRestApi(String imdgDistributedNames, T existsObj, String REST_URL, IAction action, Long existsId) throws Exception { + Class clazz = (Class) existsObj.getClass(); + Imdg inDocumentJournalImdg = hazelcastServiceTest.getImdg(imdgDistributedNames, clazz); + inDocumentJournalImdg.insert(existsObj); + checkUpdatingByRestApi(REST_URL, action, existsId); + } + + protected void checkUpdatingWithoutIdByRestApi(String REST_URL, IAction action) throws Exception { + CudResponse expected = new CudResponse(); + expected.setCode(0L); + expected.setMessage("success"); + expected.setPayload(new QueueSuccessResponse(ActionType.UPDATE, currentId.getAndIncrement())); + + //ACT + MvcResult mvcResult = perform(MockMvcRequestBuilders.put(REST_URL) + .contentType(MediaType.APPLICATION_JSON) + .content(writeValue(action))) + .andDo(print())//output to the log request and response + //ASSERT + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + //.andExpect(content().json(writeValue(expected))); + .andReturn(); + CudResponseTest cudResponseTest = readValue(mvcResult.getResponse().getContentAsString(), CudResponseTest.class); + expected.setPayload(new QueueSuccessResponse(ActionType.UPDATE, cudResponseTest.getPayload().getId())); + CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); + } + protected void checkDeletingByRestApi(String REST_URL, Long existsId) throws Exception { CudResponse expected = new CudResponse(); expected.setCode(0L); @@ -256,6 +305,13 @@ public abstract class AbstractControllerTest { CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); } + protected void checkDeletingWithIdVolidationByRestApi(String imdgDistributedNames, T existsObj, String REST_URL, Long existsId) throws Exception { + Class clazz = (Class) existsObj.getClass(); + Imdg inDocumentJournalImdg = hazelcastServiceTest.getImdg(imdgDistributedNames, clazz); + inDocumentJournalImdg.insert(existsObj); + checkDeletingByRestApi(REST_URL, existsId); + } + protected void checkGettingAllFromRestApi(String imdgDistributedNames, T existsObj, String restUrl) throws Exception { Class clazz = (Class) existsObj.getClass(); Imdg inDocumentJournalImdg = hazelcastServiceTest.getImdg(imdgDistributedNames, clazz); @@ -274,4 +330,43 @@ public abstract class AbstractControllerTest { .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) .andExpect(content().json(writeValue(expected))); } + + protected void clearAll(String imdgDistributedNames, Class clazz) { + Imdg inDocumentJournalImdg = hazelcastServiceTest.getImdg(imdgDistributedNames, clazz); + Collection values = inDocumentJournalImdg.getAllValues(); + values.forEach(inDocumentJournalImdg::delete); + } + + protected void setUserNameInMockSecurityContextAndMapUser(String username, long id) { + User user = getTestUser(id, username); + userImdg.insert(user); + + AccessToken accessToken = mock(AccessToken.class); + when(accessToken.getPreferredUsername()).thenReturn(username); + + KeycloakSecurityContext keycloakSecurityContext = mock(KeycloakSecurityContext.class); + when(keycloakSecurityContext.getToken()).thenReturn(accessToken); + + KeycloakPrincipal keycloakPrincipal = mock(KeycloakPrincipal.class); + when(keycloakPrincipal.getKeycloakSecurityContext()).thenReturn(keycloakSecurityContext); + + KeycloakAccount details = mock(KeycloakAccount.class); + when(details.getPrincipal()).thenReturn(keycloakPrincipal); + + KeycloakAuthenticationToken authentication = mock(KeycloakAuthenticationToken.class); + when(authentication.getDetails()).thenReturn(details); + SecurityContextHolder.getContext().setAuthentication(authentication); + } + + protected User getTestUser(Long id, String identifier) { + User user = new User(); + user.setId(id); + user.setIdentifier(identifier); + user.setName("some name"); + user.setFirstName("some string"); + user.setLastName("some string"); + user.setMiddleName("some string"); + user.setEmail("some string"); + return user; + } } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java index 6f341f732..91351d88d 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java @@ -1,6 +1,5 @@ package ru.spcex.clearing.backendapi.controller.queue.account; -import com.hazelcast.core.IMap; import org.junit.jupiter.api.Test; import org.springframework.core.NestedExceptionUtils; import org.springframework.http.MediaType; @@ -17,6 +16,7 @@ import ru.spcex.clearing.backendapi.errors.ActionValidationException; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.account.BankAccountNewRequest; +import ru.spcex.platform.imdg.api.Imdg; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; @@ -157,9 +157,9 @@ class BankAccountControllerTest extends AbstractControllerTest { existBankAccount.setTaxRegistrationReasonCode("886886"); existBankAccount.setId(currentId.get()); - IMap iMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_BankAccount); - iMap.put(existBankAccount.getId(), existBankAccount); - + Imdg inDocumentJournalImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_BankAccount, BankAccount.class); + inDocumentJournalImdg.insert(existBankAccount); + BankAccountBackendGetById expected = new BankAccountBackendGetById(); BankAccountBackendGetFields payload = new BankAccountBackendGetFields(); payload.setBankName("ooo tinkoff"); diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationControllerTest.java index 89f88ce87..af83388aa 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationControllerTest.java @@ -12,7 +12,6 @@ import ru.spcex.clearing.backendapi.domain.actions.IAction; import ru.spcex.clearing.backendapi.errors.ActionValidationException; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.platform.imdg.api.Imdg; import static org.junit.jupiter.api.Assertions.assertThrows; import static ru.spcex.clearing.backendapi.controller.utils.JsonUtil.writeValue; @@ -37,11 +36,10 @@ class RelationControllerTest extends AbstractControllerTest { Relation relation = new Relation(); relation.setId(existsId); - Imdg relationImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); - relationImdg.insert(relation); //ACT and ASSERT - checkUpdatingByRestApi(REST_URL, relationUpdateAction, existsId); + checkUpdatingWithIdVolidationByRestApi(IMDGDistributedNames.Map_Relation, relation, + REST_URL, relationUpdateAction, existsId); checkSendedMessegeFromKafka(Consts.DESTINATION_RELATION_UPDATE, relationUpdateAction); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherControllerTest.java index beb6dc6d2..85ac5f57b 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherControllerTest.java @@ -2,17 +2,10 @@ package ru.spcex.clearing.backendapi.controller.queue.scheduler; import com.hazelcast.core.IMap; import org.junit.jupiter.api.Test; -import org.keycloak.KeycloakPrincipal; -import org.keycloak.KeycloakSecurityContext; -import org.keycloak.adapters.spi.KeycloakAccount; -import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; -import org.keycloak.representations.AccessToken; import org.springframework.http.MediaType; -import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import ru.clearing.classes.statics.data.scheduler.Launcher; -import ru.clearing.classes.statics.data.user.User; import ru.clearing.platform.dictionary.AbstractDictionary; import ru.clearing.platform.dictionary.TaskDictionary; import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest; @@ -33,8 +26,6 @@ import ru.spcex.platform.utils.enumeration.EnumMessage; import java.util.Collection; import java.util.Map; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; 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; @@ -214,30 +205,4 @@ class LauncherControllerTest extends AbstractControllerTest { .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) .andExpect(content().json(writeValue(response))); } - - private void setUserNameInMockSecurityContextAndMapUser(String username, long id) { - User user = new User(); - user.setIdentifier(username); - user.setId(id); - - userImdg.insert(user); - - AccessToken accessToken = mock(AccessToken.class); - when(accessToken.getPreferredUsername()).thenReturn(username); - - KeycloakSecurityContext keycloakSecurityContext = mock(KeycloakSecurityContext.class); - when(keycloakSecurityContext.getToken()).thenReturn(accessToken); - - KeycloakPrincipal keycloakPrincipal = mock(KeycloakPrincipal.class); - when(keycloakPrincipal.getKeycloakSecurityContext()).thenReturn(keycloakSecurityContext); - - KeycloakAccount details = mock(KeycloakAccount.class); - when(details.getPrincipal()).thenReturn(keycloakPrincipal); - - KeycloakAuthenticationToken authentication = mock(KeycloakAuthenticationToken.class); - when(authentication.getDetails()).thenReturn(details); - SecurityContextHolder.getContext().setAuthentication(authentication); - } - - } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityControllerTest.java index 29f8cc59a..4c9656656 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/CudMoneyMarketSecurityControllerTest.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.backendapi.controller.queue.securities; import org.junit.jupiter.api.Test; import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity; import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest; +import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction; import ru.spcex.clearing.backendapi.controller.request.cud.schedule.PlannerTemplateNewAction; import ru.spcex.clearing.backendapi.controller.request.cud.securities.MoneyMarketSecurityNewAction; import ru.spcex.clearing.backendapi.controller.request.cud.securities.MoneyMarketSecurityUpdateAction; @@ -46,25 +47,42 @@ class CudMoneyMarketSecurityControllerTest extends AbstractControllerTest { */ @Test void update() throws Exception { -// //ARRANGE -// long id = currentId.getAndIncrement(); -// MoneyMarketSecurityUpdateAction moneyMarketSecurityUpdateAction = new MoneyMarketSecurityUpdateAction(); -// moneyMarketSecurityUpdateAction.setId(id); -// moneyMarketSecurityUpdateAction.setStartDate(LocalDate.now()); -// moneyMarketSecurityUpdateAction.setEndDate(LocalDate.now()); -// moneyMarketSecurityUpdateAction.setNominalValue(2D); -// moneyMarketSecurityUpdateAction.setNominalCurrency("nominal"); -// moneyMarketSecurityUpdateAction.setInstrumentType("status"); -// moneyMarketSecurityUpdateAction.setFullName("fname"); -// moneyMarketSecurityUpdateAction.setLotSize(3D); -// -// //ACT and ASSERT -// checkUpdatingByRestApi(REST_URL, moneyMarketSecurityUpdateAction, id); -// checkSendedMessegeFromKafka(Consts.DESTINATION_MONEY_MARKET_SECURITY_UPDATE, moneyMarketSecurityUpdateAction); + //ARRANGE + long id = currentId.getAndIncrement(); + MoneyMarketSecurityUpdateAction moneyMarketSecurityUpdateAction = new MoneyMarketSecurityUpdateAction(); + moneyMarketSecurityUpdateAction.setId(id); + moneyMarketSecurityUpdateAction.setStartDate(LocalDate.now()); + moneyMarketSecurityUpdateAction.setEndDate(LocalDate.now()); + moneyMarketSecurityUpdateAction.setNominalValue(2D); + moneyMarketSecurityUpdateAction.setNominalCurrency("nominal"); + moneyMarketSecurityUpdateAction.setInstrumentType("status"); + moneyMarketSecurityUpdateAction.setFullName("fname"); + moneyMarketSecurityUpdateAction.setLotSize(3D); + MoneyMarketSecurity moneyMarketSecurity = getMoneyMarketSecurity(id); + + //ACT and ASSERT + checkUpdatingWithIdVolidationByRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, moneyMarketSecurity, + REST_URL, moneyMarketSecurityUpdateAction, id); + checkSendedMessegeFromKafka(Consts.DESTINATION_MONEY_MARKET_SECURITY_UPDATE, moneyMarketSecurityUpdateAction); } + /** + * {@link CudMoneyMarketSecurityController#delete(Long)}
+ * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
+ * Входной запрос /securities/money-securities/{@link Long}: - 0L
+ */ @Test - void delete() { + void delete() throws Exception { + //ARRANGE + long id = currentId.getAndIncrement(); + CommonDeleteAction deleteAction = new CommonDeleteAction(); + deleteAction.setId(id); + MoneyMarketSecurity moneyMarketSecurity = getMoneyMarketSecurity(id); + + //ACT and ASSERT + checkDeletingWithIdVolidationByRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, moneyMarketSecurity, + REST_URL, id); + checkSendedMessegeFromKafka(Consts.DESTINATION_MONEY_MARKET_SECURITY_DELETE, deleteAction); } /** @@ -76,8 +94,15 @@ class CudMoneyMarketSecurityControllerTest extends AbstractControllerTest { @Test void getAll() throws Exception { //ARRANGE + MoneyMarketSecurity moneyMarketSecurity = getMoneyMarketSecurity(currentId.get()); + + //ACT and ASSERT + checkGettingAllFromRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, moneyMarketSecurity, REST_URL); + } + + private MoneyMarketSecurity getMoneyMarketSecurity(Long id) { MoneyMarketSecurity moneyMarketSecurity = new MoneyMarketSecurity(); - moneyMarketSecurity.setId(currentId.get()); + moneyMarketSecurity.setId(id); moneyMarketSecurity.setSecurityId(currentId.get()); moneyMarketSecurity.setDescription("desc"); moneyMarketSecurity.setStartDate(LocalDate.now()); @@ -87,9 +112,6 @@ class CudMoneyMarketSecurityControllerTest extends AbstractControllerTest { moneyMarketSecurity.setTermType("status"); moneyMarketSecurity.setWorkflowStatus(Status.Active.getKey()); moneyMarketSecurity.setFullName("name"); - - //ACT and ASSERT - checkGettingAllFromRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, moneyMarketSecurity, REST_URL); + return moneyMarketSecurity; } - } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/InformationAccountControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/InformationAccountControllerTest.java new file mode 100644 index 000000000..00bbd1b10 --- /dev/null +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/InformationAccountControllerTest.java @@ -0,0 +1,29 @@ +package ru.spcex.clearing.backendapi.controller.queue.securities; + +import org.junit.jupiter.api.Test; +import ru.clearing.classes.statics.data.account.InformationAccount; +import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest; +import ru.spcex.clearing.imdg.IMDGDistributedNames; + +class InformationAccountControllerTest extends AbstractControllerTest { + public static final String REST_URL = "/securities/information-accounts/"; + + /** + * {@link InformationAccountController#getAll()}
+ * Тест проверяет получение запроса по REST API.
+ * Входной запрос /securities/information-accounts/
+ * Ответ CommonGetAllResponse
+ */ + @Test + void getAll() throws Exception { + //ARRANGE + InformationAccount informationAccount = new InformationAccount(); + informationAccount.setId(currentId.get()); + informationAccount.setCompanyId(currentId.get()); + informationAccount.setClearingAccountId(currentId.get()); + informationAccount.setAccountId(currentId.get()); + + //ACT and ASSERT + checkGettingAllFromRestApi(IMDGDistributedNames.Map_InformationAccount, informationAccount, REST_URL); + } +} \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityControllerTest.java new file mode 100644 index 000000000..0af66e804 --- /dev/null +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityControllerTest.java @@ -0,0 +1,35 @@ +package ru.spcex.clearing.backendapi.controller.queue.securities; + +import org.junit.jupiter.api.Test; +import ru.clearing.classes.statics.data.security.Security; +import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest; +import ru.spcex.clearing.imdg.IMDGDistributedNames; + +class SecurityControllerTest extends AbstractControllerTest { + public static final String REST_URL = "/securities/"; + + /** + * {@link SecurityController#getAll()}
+ * Тест проверяет получение запроса по REST API.
+ * Входной запрос /securities/
+ * Ответ CommonGetAllResponse
+ */ + @Test + void getAll() throws Exception { + //ARRANGE + Security security = new Security(); + security.setId(currentId.get()); + security.setInstrumentType("name"); + security.setIssuerId(currentId.get()); + security.setShortName("name"); + security.setFullName("name"); + security.setShortNameEng("name"); + security.setFullNameEng("name"); + security.setSecuritySymbol("name"); + security.setWorkflowStatus("name"); + clearAll(IMDGDistributedNames.Map_MoneyMarketSecurity, Security.class); + + //ACT and ASSERT + checkGettingAllFromRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, security, REST_URL); + } +} \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserControllerTest.java new file mode 100644 index 000000000..96f1290c0 --- /dev/null +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserControllerTest.java @@ -0,0 +1,81 @@ +package ru.spcex.clearing.backendapi.controller.queue.user; + +import org.junit.jupiter.api.Test; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import ru.clearing.classes.statics.data.user.User; +import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest; +import ru.spcex.clearing.backendapi.controller.request.cud.utilities.UserAuthAction; +import ru.spcex.clearing.backendapi.controller.response.entity.user.UserIdResponse; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.platform.enumeration.UserRole; + +import java.util.List; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +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.utils.JsonUtil.readValue; + +class UserControllerTest extends AbstractControllerTest { + public static final String REST_URL = "/users/"; + + /** + * {@link UserController#getAll()}
+ * Тест проверяет получение запроса по REST API.
+ * Входной запрос /users/
+ * Ответ CommonGetAllResponse
+ */ + @Test + void getAll() throws Exception { + //ARRANGE + User user = getTestUser(currentId.getAndIncrement(), "some name"); + + //ACT and ASSERT + checkGettingAllFromRestApi(IMDGDistributedNames.Map_User, user, REST_URL); + } + + /** + * {@link UserController#getId()}
+ * Тест проверяет получение запроса по REST API.
+ * Входной запрос /users/get-my-id/
+ * Ответ CommonGetAllResponse
+ */ + @Test + void getId() throws Exception { + //ARRANGE + Long id = currentId.getAndIncrement(); + String identifier = "usersIdentifier"; + + setUserNameInMockSecurityContextAndMapUser(identifier, id); + + //ACT + MvcResult mvcResult = perform(MockMvcRequestBuilders.get(REST_URL + "get-my-id")) + .andDo(print())//output to the log request and response + //ASSERT + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); + UserIdResponse userIdResponse = readValue(mvcResult.getResponse().getContentAsString(), UserIdResponse.class); + assertThat(userIdResponse.getPayload().getId()).isEqualTo(id); + } + + @Test + void update() throws Exception { + //ARRANGE + Long id = currentId.getAndIncrement(); + String identifier = "identifier"; + + UserAuthAction userAuthAction = new UserAuthAction(); + userAuthAction.setUsername(identifier); + List roles = List.of(UserRole.Admin.getKey()); + userAuthAction.setRoles(roles); + + setUserNameInMockSecurityContextAndMapUser(identifier, id); + checkUpdatingWithoutIdByRestApi(REST_URL, userAuthAction); + checkSendedMessegeFromKafka(Consts.USER_UPDATE, userAuthAction); + } +} \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserRoleSessionControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserRoleSessionControllerTest.java new file mode 100644 index 000000000..4c4702db5 --- /dev/null +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserRoleSessionControllerTest.java @@ -0,0 +1,31 @@ +package ru.spcex.clearing.backendapi.controller.queue.user; + +import org.junit.jupiter.api.Test; +import ru.clearing.classes.statics.data.user.UserRoleSession; +import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest; +import ru.spcex.clearing.imdg.IMDGDistributedNames; + +class UserRoleSessionControllerTest extends AbstractControllerTest { + public static final String REST_URL = "/user-role-sessions/"; + + /** + * {@link UserRoleSessionController#getAll()}
+ * Тест проверяет получение запроса по REST API.
+ * Входной запрос /user-role-sessions/
+ * Ответ CommonGetAllResponse
+ */ + @Test + void getAll() throws Exception { + //ARRANGE + UserRoleSession userRoleSession = new UserRoleSession(); + userRoleSession.setId(currentId.getAndIncrement()); + userRoleSession.setUserRole("identifier"); + userRoleSession.setStatus("some name"); + userRoleSession.setCompanyId(currentId.get()); + userRoleSession.setUserId(currentId.get()); + + //ACT and ASSERT + checkGettingAllFromRestApi(IMDGDistributedNames.Map_UserRoleSession, userRoleSession, REST_URL); + } + +} \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/CudKeyRateControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/CudKeyRateControllerTest.java new file mode 100644 index 000000000..2d402727e --- /dev/null +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/CudKeyRateControllerTest.java @@ -0,0 +1,95 @@ +package ru.spcex.clearing.backendapi.controller.queue.utilities; + +import org.junit.jupiter.api.Test; +import ru.clearing.classes.statics.data.misc.KeyRate; +import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest; +import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction; +import ru.spcex.clearing.backendapi.controller.request.cud.utilities.KeyRateNewAction; +import ru.spcex.clearing.backendapi.controller.request.cud.utilities.KeyRateUpdateAction; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.Consts; + +import java.math.BigDecimal; +import java.time.LocalDate; + +class CudKeyRateControllerTest extends AbstractControllerTest { + public static final String REST_URL = "/utilities/key-rates/"; + + /** + * {@link CudKeyRateController#add(KeyRateNewAction)}
+ * Тест проверяет получение сущности {@link KeyRateNewAction} по REST API и отправку в Apache Kafka.
+ * Входной запрос {@link KeyRateNewAction}:
+ */ + @Test + void add() throws Exception { + //ARRANGE + KeyRateNewAction keyRateUpdateAction = new KeyRateNewAction(); +// keyRateUpdateAction.setId(currentId.get()); + keyRateUpdateAction.setRate(new BigDecimal(0)); + keyRateUpdateAction.setStartDate(LocalDate.now()); + keyRateUpdateAction.setEndDate(LocalDate.now()); + keyRateUpdateAction.setDocument("name"); + + //ACT and ASSERT + checkAddingByRestApi(REST_URL, keyRateUpdateAction); + checkSendedMessegeFromKafka(Consts.DESTINATION_KEY_RATE_NEW, keyRateUpdateAction); + } + + /** + * {@link CudKeyRateController#update(Long, KeyRateUpdateAction)}
+ * Тест проверяет получение сущности {@link KeyRateNewAction} по REST API и отправку в Apache Kafka.
+ * Входной запрос {@link KeyRateNewAction}:
+ */ + @Test + void update() throws Exception { + //ARRANGE + long id = currentId.get(); + KeyRateUpdateAction keyRateUpdateAction = new KeyRateUpdateAction(); + keyRateUpdateAction.setId(id); + keyRateUpdateAction.setRate(new BigDecimal(0)); + keyRateUpdateAction.setStartDate(LocalDate.now()); + keyRateUpdateAction.setEndDate(LocalDate.now()); + keyRateUpdateAction.setDocument("name"); + + //ACT and ASSERT + checkUpdatingByRestApi(REST_URL, keyRateUpdateAction, id); + checkSendedMessegeFromKafka(Consts.DESTINATION_KEY_RATE_UPDATE, keyRateUpdateAction); + } + + /** + * {@link CudKeyRateController#delete(Long)}
+ * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
+ * Входной запрос /securities/bank-accounts/{@link Long}: - 0L
+ */ + @Test + void delete() throws Exception { + //ARRANGE + long id = currentId.getAndIncrement(); + CommonDeleteAction deleteAction = new CommonDeleteAction(); + deleteAction.setId(id); + //ACT and ASSERT + checkDeletingByRestApi(REST_URL, id); + checkSendedMessegeFromKafka(Consts.DESTINATION_KEY_RATE_DELETE, deleteAction); + } + + /** + * {@link CudKeyRateController#getAll()}
+ * Тест проверяет получение запроса по REST API.
+ * Входной запрос /utilities/key-rates/
+ * Ответ CommonGetAllResponse
+ */ + @Test + void getAll() throws Exception { + //ARRANGE + KeyRate keyRate = new KeyRate(); + keyRate.setId(currentId.get()); + keyRate.setRate(new BigDecimal(0)); + keyRate.setStartDate(LocalDate.now()); + keyRate.setEndDate(LocalDate.now()); + keyRate.setDocument("name"); + keyRate.setWorkflowStatus("name"); + + //ACT and ASSERT + checkGettingAllFromRestApi(IMDGDistributedNames.Map_KeyRate, keyRate, REST_URL); + } +} \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementControllerTest.java new file mode 100644 index 000000000..8c6fd458b --- /dev/null +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementControllerTest.java @@ -0,0 +1,89 @@ +package ru.spcex.clearing.backendapi.controller.queue.utilities; + +import org.junit.jupiter.api.Test; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import ru.clearing.classes.statics.data.statement.Statement; +import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest; +import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetByIdResponse; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.platform.imdg.api.Imdg; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Map; + +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.utils.JsonUtil.writeValue; + +class StatementControllerTest extends AbstractControllerTest { + public static final String REST_URL = "/statements/"; + + /** + * {@link StatementController#getAll()}
+ * Тест проверяет получение запроса по REST API.
+ * Входной запрос /utilities/key-rates/
+ * Ответ CommonGetAllResponse
+ */ + @Test + void getAll() throws Exception { + //ARRANGE + Statement statement = getStatment(currentId.get()); + + //ACT and ASSERT + checkGettingAllFromRestApi(IMDGDistributedNames.Map_Statement, statement, REST_URL); + } + + /** + * {@link StatementController#getById(Long)}
+ * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.
+ * Входной запрос /statements/{@link Long}: - 0L
+ * Ответ BankAccountBackendGetById
+ */ + @Test + void getById() throws Exception { + //ARRANGE + Statement existStatement = getStatment(currentId.get()); + + Imdg serviceTestImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); + serviceTestImdg.insert(existStatement); + + CommonGetByIdResponse response = new CommonGetByIdResponse(); + Map extractedByMeta = responseFactory.responseFromObject(existStatement); + response.fromEntity(extractedByMeta); + + //ACT + perform(MockMvcRequestBuilders.get(REST_URL + existStatement.getId()) + .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(response))); + } + + private Statement getStatment(Long id) { + Statement statement = new Statement(); + statement.setId(id); + statement.setAddresseeId(currentId.get()); + statement.setSenderId(currentId.get()); + statement.setClearingDate(LocalDate.now()); + statement.setStatementType("name"); + statement.setComment("comment"); + statement.setAccountId(currentId.get()); + statement.setAccount("acc"); + statement.setInOutDirection("direction"); + statement.setSettlementDate(LocalDate.now()); + statement.setAmount(new BigDecimal(0)); + statement.setCashMovementCurrencyCode("cash"); + statement.setOperationStatus("status"); + statement.setErrorCode("error"); + statement.setErrorText("name"); + statement.setInSDfId(currentId.get()); + statement.setOutSDfId(currentId.get()); + statement.setInOutSDfType("type"); + return statement; + } +} \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/UserSettingsControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/UserSettingsControllerTest.java new file mode 100644 index 000000000..c8ad5827f --- /dev/null +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/UserSettingsControllerTest.java @@ -0,0 +1,52 @@ +package ru.spcex.clearing.backendapi.controller.queue.utilities; + +import org.junit.jupiter.api.Test; +import ru.clearing.classes.statics.data.user.UserSettings; +import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest; +import ru.spcex.clearing.backendapi.controller.request.cud.utilities.UserSettingsUpdateAction; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.Consts; + +class UserSettingsControllerTest extends AbstractControllerTest { + public static final String REST_URL = "/utilities/user-settings/"; + + /** + * {@link UserSettingsController#getAll()}
+ * Тест проверяет получение запроса по REST API.
+ * Входной запрос /utilities/user-settings/
+ * Ответ CommonGetAllResponse
+ */ + @Test + void getAll() throws Exception { + //ARRANGE + UserSettings userSettings = new UserSettings(); + userSettings.setId(currentId.get()); + userSettings.setUserId(currentId.get()); + userSettings.setJson("json"); + userSettings.setVersion("version"); + + //ACT and ASSERT + checkGettingAllFromRestApi(IMDGDistributedNames.Map_UserSettings, userSettings, REST_URL); + } + + /** + * {@link UserSettingsController#update(UserSettingsUpdateAction)}
+ * Тест проверяет получение сущности {@link UserSettingsUpdateAction} по REST API и отправку в Apache Kafka.
+ * Входной запрос {@link UserSettingsUpdateAction}:
+ */ + @Test + void update() throws Exception { + //ARRANGE + long id = currentId.get(); + String identifier = "identifierUserSettings"; + UserSettingsUpdateAction userSettingsUpdateAction = new UserSettingsUpdateAction(); + userSettingsUpdateAction.setUserId(id); + userSettingsUpdateAction.setVersion("name"); + + //ACT and ASSERT + setUserNameInMockSecurityContextAndMapUser(identifier, id); + checkUpdatingWithoutIdByRestApi(REST_URL, userSettingsUpdateAction); + userSettingsUpdateAction.json = "null"; + checkSendedMessegeFromKafka(Consts.USER_SETTINGS_UPDATE, userSettingsUpdateAction); + } +} \ No newline at end of file