diff --git a/clearing-parent/account-service/pom.xml b/clearing-parent/account-service/pom.xml
index aa06e621d..f2bfdaf25 100644
--- a/clearing-parent/account-service/pom.xml
+++ b/clearing-parent/account-service/pom.xml
@@ -60,6 +60,11 @@
assertj-core
test
+
+ org.springframework.boot
+ spring-boot-test
+ test
+
diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java
index 44982dd03..8a98e4b6f 100644
--- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java
+++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java
@@ -10,7 +10,6 @@ import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.BankAccount;
import ru.clearing.classes.statics.data.company.relation.Relation;
-import ru.spcex.clearing.account.errors.AccountError;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts;
@@ -41,7 +40,7 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
private final Imdg relationMap;
private final IMessageResolver messageResolver;
-// private final Imdg userImdg;
+ // private final Imdg userImdg;
// private final Imdg userRoleSessionImdg;
private final Function bankAccountNewRequestValidator;
@@ -108,16 +107,16 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
log.debug("BankAccountNewRequest received");
BankAccount bankAccount = new BankAccount();
- bankAccount.setBankIdentificationCode(req.getBankIdentificationCode());
- bankAccount.setBankName(req.getBankName());
- bankAccount.setCorrespondentAccount(req.getCorrespondentAccount());
- bankAccount.setCorrespondentAccountName(req.getCorrespondentAccountName());
- bankAccount.setCurrency(req.getCurrency());
- bankAccount.setDestination(req.getDestination());
- bankAccount.setTaxpayerIdentificationNumber(req.getTaxpayerIdentificationNumber());
- bankAccount.setTaxRegistrationReasonCode(req.getTaxRegistrationReasonCode());
- bankAccount.setAccount(req.getAccount());
- bankAccount.setCompanyId(req.getCompanyId());
+ bankAccount.setBankIdentificationCode(req.getBankIdentificationCode());//
+ bankAccount.setBankName(req.getBankName());//
+ bankAccount.setCorrespondentAccount(req.getCorrespondentAccount());//--
+ bankAccount.setCorrespondentAccountName(req.getCorrespondentAccountName());//--
+ bankAccount.setCurrency(req.getCurrency());//--/
+ bankAccount.setDestination(req.getDestination());//
+ bankAccount.setTaxpayerIdentificationNumber(req.getTaxpayerIdentificationNumber());//--
+ bankAccount.setTaxRegistrationReasonCode(req.getTaxRegistrationReasonCode());//--
+ bankAccount.setAccount(req.getAccount());//
+ bankAccount.setCompanyId(req.getCompanyId());//
Account account = new Account();
account.setAccount(req.account);
diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/config/HazelcastServiceTestConfiguration.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/config/HazelcastServiceTestConfiguration.java
index 826001db9..7ee4bc8fa 100644
--- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/config/HazelcastServiceTestConfiguration.java
+++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/config/HazelcastServiceTestConfiguration.java
@@ -42,7 +42,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/account-service/src/test/java/ru/spcex/clearing/account/config/KafkaConfigTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/config/KafkaConfigTest.java
index 78c210602..fac49db45 100644
--- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/config/KafkaConfigTest.java
+++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/config/KafkaConfigTest.java
@@ -3,15 +3,14 @@ package ru.spcex.clearing.account.config;
import org.apache.kafka.clients.consumer.MockConsumer;
import org.apache.kafka.clients.consumer.OffsetResetStrategy;
-import org.apache.kafka.clients.producer.MockProducer;
import org.apache.kafka.clients.producer.Producer;
-import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Scope;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
-import ru.spcex.clearing.platform.messaging.serialization.JsonSerializer;
import ru.spcex.clearing.platform.messaging.service.RequestInfo;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.imdg.api.Imdg;
@@ -23,7 +22,7 @@ public class KafkaConfigTest {
@Autowired
@Bean(name = "kafkaSenderTest")
- public KafkaSender kafkaSender(@Qualifier("mockProducerTest") Producer kafkaProducer, @Qualifier("hazelcastServiceTest") ImdgProvider imdgProvider) {
+ public KafkaSender kafkaSender(Producer kafkaProducer, @Qualifier("hazelcastServiceTest") ImdgProvider imdgProvider) {
ImdgId imdgIdGenerator = imdgProvider.getImdgIdGenerator();
return KafkaSender
.setup()
@@ -36,13 +35,10 @@ public class KafkaConfigTest {
.build();
}
+ @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Bean(name = "mockConsumerTest")
public MockConsumer createConsumer() {
return new MockConsumer<>(OffsetResetStrategy.EARLIEST);
}
- @Bean(name = "mockProducerTest")
- public MockProducer createProducer() {
- return new MockProducer<>(true, new StringSerializer(), new JsonSerializer());
- }
}
diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountServiceTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountServiceTest.java
index 3cd2088b4..ae7587ca5 100644
--- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountServiceTest.java
+++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountServiceTest.java
@@ -2,20 +2,21 @@ package ru.spcex.clearing.account.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.hazelcast.core.IMap;
-import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.MockConsumer;
-import org.apache.kafka.common.TopicPartition;
+import org.apache.kafka.clients.producer.MockProducer;
+import org.apache.kafka.clients.producer.ProducerRecord;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import ru.clearing.classes.statics.data.account.Account;
import ru.spcex.clearing.account.config.HazelcastServiceTestConfiguration;
import ru.spcex.clearing.account.config.KafkaConfigTest;
-import ru.spcex.clearing.account.utils.ImapEvent;
import ru.spcex.clearing.account.utils.MatcherFactory;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
@@ -27,18 +28,22 @@ import ru.spcex.clearing.platform.messaging.domain.cud.balance.AccountSdfToState
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
import ru.spcex.clearing.platform.messaging.service.RequestInfo;
import ru.spcex.clearing.platform.messaging.service.Status;
-import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
+import ru.spcex.platform.imdg.iml.hazelcast.adapter.ImdgHazelcast;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
import static ru.spcex.clearing.account.config.HazelcastServiceTestConfiguration.currentID;
import static ru.spcex.clearing.account.utils.MatcherFactory.usingIgnoringFieldsComparator;
+import static ru.spcex.clearing.account.utils.MockKafkaUtils.addRecordToKafka;
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {
+ AccountService.class,
HazelcastServiceTestConfiguration.class,
KafkaConfigTest.class})
class AccountServiceTest {
@@ -46,18 +51,17 @@ class AccountServiceTest {
public static final MatcherFactory.Matcher REQUEST_INFO_MATCHER_MATCHER = usingIgnoringFieldsComparator("created");
private static final int PARTITION = 0;
private static final String TOPIC_ACCOUNT_NEW = Consts.ACCOUNT_NEW;
-
+ private static final String account = "123456789123";
+ @Autowired
+ AccountService accountService;
@Autowired
@Qualifier("hazelcastServiceTest")
private HazelcastService hazelcastServiceTest;
- @Autowired
- @Qualifier("kafkaSenderTest")
- private KafkaSender kafkaSender;
-
- @Autowired
- @Qualifier("mockConsumerTest")
- private MockConsumer mockConsumer;
+ @Captor
+ private ArgumentCaptor producerRecord;
+ @SpyBean
+ private MockProducer producer;
/**
* {@link AccountService#accountNew(BaseRequest)}
@@ -71,12 +75,12 @@ class AccountServiceTest {
*/
@Test
void accountNew() throws InterruptedException {
- //arrange
+ //ARRANGE
Long firstID = currentID.getAndIncrement();
Long secondID = currentID.getAndIncrement();
AccountSdfRequestPart accountSdfRequestPart = new AccountSdfRequestPart();
accountSdfRequestPart.setSdfId(firstID);
- accountSdfRequestPart.setAccount("123456789123");
+ accountSdfRequestPart.setAccount(account);
accountSdfRequestPart.setCompanyId(firstID);
AccountSdf01Request accountSdf01Request = new AccountSdf01Request();
accountSdf01Request.setGroupingSdf01Id(firstID);
@@ -109,41 +113,33 @@ class AccountServiceTest {
baseRequest.setRequestPayload(statementRequest);
Account predictableAccount = new Account();
- predictableAccount.setAccount("123456789123");
+ predictableAccount.setAccount(account);
predictableAccount.setId(firstID);
+ predictableAccount.setCompanyId(firstID);
RequestInfo predictableRequestInfo = new RequestInfo();
predictableRequestInfo.setId(secondID);
predictableRequestInfo.setStatus(Status.Processing);
-
//ACT
-
hazelcastServiceTest.waitTillReadyState();
- //service set up
- AccountService accountService = new AccountService(mockConsumer, hazelcastServiceTest, kafkaSender);
- //callbacks set up
- accountService.afterPropertiesSet();
//KAFKA
- mockConsumer.schedulePollTask(() -> {
- mockConsumer.rebalance(Collections.singletonList(new TopicPartition(TOPIC_ACCOUNT_NEW, PARTITION)));
- mockConsumer.addRecord(new ConsumerRecord<>(TOPIC_ACCOUNT_NEW, PARTITION, 0, "key", jsonBaseNewRequest));
- });
- HashMap startOffsets = new HashMap<>();
- TopicPartition tp = new TopicPartition(TOPIC_ACCOUNT_NEW, PARTITION);
- startOffsets.put(tp, 0L);
- mockConsumer.updateBeginningOffsets(startOffsets);
+ addRecordToKafka((MockConsumer) accountService.getConsumer(), TOPIC_ACCOUNT_NEW, PARTITION, 0, jsonBaseNewRequest);
- IMap accountIMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_Account);
- IMap requestInfoIMap = hazelcastServiceTest.getHazelcast().getMap(IMDGDistributedNames.Map_RequestInfo);
+ //waiting for kafka producer send message (finale event)
+ verify(producer, timeout(30_000L).times(1))
+ .send(producerRecord.capture());
+ BaseRequest