Adding test for user, utilities, securities and simple refactoring.

This commit is contained in:
psemenkov 2023-02-21 18:24:44 +03:00
parent 4817f8644f
commit 3acebda42b
12 changed files with 558 additions and 66 deletions

View file

@ -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 <T extends SpcexObjectBase> void checkUpdatingWithIdVolidationByRestApi(String imdgDistributedNames, T existsObj, String REST_URL, IAction action, Long existsId) throws Exception {
Class<T> clazz = (Class<T>) existsObj.getClass();
Imdg<T> 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 <T extends SpcexObjectBase> void checkDeletingWithIdVolidationByRestApi(String imdgDistributedNames, T existsObj, String REST_URL, Long existsId) throws Exception {
Class<T> clazz = (Class<T>) existsObj.getClass();
Imdg<T> inDocumentJournalImdg = hazelcastServiceTest.getImdg(imdgDistributedNames, clazz);
inDocumentJournalImdg.insert(existsObj);
checkDeletingByRestApi(REST_URL, existsId);
}
protected <T extends SpcexObjectBase> void checkGettingAllFromRestApi(String imdgDistributedNames, T existsObj, String restUrl) throws Exception {
Class<T> clazz = (Class<T>) existsObj.getClass();
Imdg<T> 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 <T extends SpcexObjectBase> void clearAll(String imdgDistributedNames, Class<T> clazz) {
Imdg<T> inDocumentJournalImdg = hazelcastServiceTest.getImdg(imdgDistributedNames, clazz);
Collection<T> 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;
}
}

View file

@ -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<Long, BankAccount> iMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_BankAccount);
iMap.put(existBankAccount.getId(), existBankAccount);
Imdg<BankAccount> inDocumentJournalImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_BankAccount, BankAccount.class);
inDocumentJournalImdg.insert(existBankAccount);
BankAccountBackendGetById expected = new BankAccountBackendGetById();
BankAccountBackendGetFields payload = new BankAccountBackendGetFields();
payload.setBankName("ooo tinkoff");

View file

@ -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<Relation> 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);
}

View file

@ -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);
}
}

View file

@ -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)} <br>
* Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.<br>
* Входной запрос /securities/money-securities/{@link Long}: - 0L<br>
*/
@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;
}
}

View file

@ -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()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /securities/information-accounts/ <br>
* Ответ CommonGetAllResponse <br>
*/
@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);
}
}

View file

@ -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()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /securities/ <br>
* Ответ CommonGetAllResponse <br>
*/
@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);
}
}

View file

@ -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()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /users/ <br>
* Ответ CommonGetAllResponse <br>
*/
@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()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /users/get-my-id/ <br>
* Ответ CommonGetAllResponse <br>
*/
@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<String> roles = List.of(UserRole.Admin.getKey());
userAuthAction.setRoles(roles);
setUserNameInMockSecurityContextAndMapUser(identifier, id);
checkUpdatingWithoutIdByRestApi(REST_URL, userAuthAction);
checkSendedMessegeFromKafka(Consts.USER_UPDATE, userAuthAction);
}
}

View file

@ -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()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /user-role-sessions/ <br>
* Ответ CommonGetAllResponse <br>
*/
@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);
}
}

View file

@ -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)} <br>
* Тест проверяет получение сущности {@link KeyRateNewAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link KeyRateNewAction}:<br>
*/
@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)} <br>
* Тест проверяет получение сущности {@link KeyRateNewAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link KeyRateNewAction}:<br>
*/
@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)} <br>
* Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.<br>
* Входной запрос /securities/bank-accounts/{@link Long}: - 0L<br>
*/
@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()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /utilities/key-rates/ <br>
* Ответ CommonGetAllResponse <br>
*/
@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);
}
}

View file

@ -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()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /utilities/key-rates/ <br>
* Ответ CommonGetAllResponse <br>
*/
@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)} <br>
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.<br>
* Входной запрос /statements/{@link Long}: - 0L <br>
* Ответ BankAccountBackendGetById <br>
*/
@Test
void getById() throws Exception {
//ARRANGE
Statement existStatement = getStatment(currentId.get());
Imdg<Statement> serviceTestImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
serviceTestImdg.insert(existStatement);
CommonGetByIdResponse response = new CommonGetByIdResponse();
Map<String, Object> 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;
}
}

View file

@ -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()} <br>
* Тест проверяет получение запроса по REST API.<br>
* Входной запрос /utilities/user-settings/ <br>
* Ответ CommonGetAllResponse <br>
*/
@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)} <br>
* Тест проверяет получение сущности {@link UserSettingsUpdateAction} по REST API и отправку в Apache Kafka.<br>
* Входной запрос {@link UserSettingsUpdateAction}:<br>
*/
@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);
}
}