Поправил существующий серис, тест для laucnher.
This commit is contained in:
parent
6b2acb66e7
commit
45ca3d9b56
2 changed files with 109 additions and 1 deletions
|
|
@ -7,6 +7,7 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.scheduler.Launcher;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
|
|
@ -14,6 +15,9 @@ import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.scheduler.error.ValidationError;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.platform.enumeration.Task;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
|
@ -27,12 +31,16 @@ public class LauncherService extends QueueConsumer implements InitializingBean {
|
|||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final Imdg<Launcher> launcherMap;
|
||||
private final Producer<String, Object> kafkaProducer;
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
|
||||
|
||||
@Autowired
|
||||
public LauncherService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||
@Qualifier("userRoleVerificationBean") UserRoleVerification userRoleVerification,
|
||||
ImdgProvider imdgProvider) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
super(kafkaQueue, null);
|
||||
this.kafkaProducer = kafkaProducer;
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.launcherMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Launcher, Launcher.class);
|
||||
}
|
||||
|
||||
|
|
@ -47,6 +55,14 @@ public class LauncherService extends QueueConsumer implements InitializingBean {
|
|||
private void newLauncher(BaseRequest<LauncherCommandRequest> userRequest) {
|
||||
LauncherCommandRequest req = userRequest.getRequestPayload();
|
||||
log.debug("LauncherCommandRequest received");
|
||||
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) throw new IllegalStateException(ValidationError.UserVerifyDenial.name());
|
||||
|
||||
if (req.getUserId() == null || !req.getUserId().equals(userRequest.getUserId())) {
|
||||
throw new IllegalStateException(String.format("User id in request must match: baseRequest.userId = %s, launcherCommandRequest.userId = %s", userRequest.getUserId(), req.getUserId()));
|
||||
}
|
||||
|
||||
Instant created = Instant.now();
|
||||
Launcher launcher = new Launcher();
|
||||
if (getEnumByKey(Task.class, req.getTaskName()) == null) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,92 @@
|
|||
package ru.specx.clearing.scheduler.service;
|
||||
|
||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import ru.clearing.classes.statics.data.scheduler.Launcher;
|
||||
import ru.clearing.classes.statics.data.scheduler.Planner;
|
||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||
import ru.spcex.clearing.scheduler.service.LauncherService;
|
||||
import ru.spcex.clearing.test.MatcherFactory;
|
||||
import ru.specx.clearing.scheduler.AbstractServiceTest;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
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.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.*;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.defaultAdminId;
|
||||
import static ru.spcex.platform.enumeration.Task.accountBlock;
|
||||
|
||||
class LauncherServiceTest extends AbstractServiceTest {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
protected static final MatcherFactory.Matcher<Launcher> LAUNCHER_MATCHER = usingIgnoringFieldsComparator("created", "updated");
|
||||
private static final int PARTITION = 0;
|
||||
private static final String TOPIC_LAUNCHER_NEW = Consts.LAUNCHER_NEW;
|
||||
private static final Long ID = currentID.getAndIncrement();
|
||||
|
||||
@Autowired
|
||||
private LauncherService launcherService;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
super.init();
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
public void prepare() {
|
||||
clearAllInImdg(plannerAllTodayImdg);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link LauncherService#newLauncher(BaseRequest)}(BaseRequest)}<br>
|
||||
* Тест проверяет создание сущности {@link Planner} в Hazelcast при передаче из Apache Kafka.<br>
|
||||
* Входной запрос {@link LauncherCommandRequest}:<br>
|
||||
*/
|
||||
@Test
|
||||
public void newPlanner() {
|
||||
//ARRANGE
|
||||
Launcher launcher = new Launcher();
|
||||
launcher.setSenderId(defaultAdminId);
|
||||
launcher.setTask(accountBlock.getKey());
|
||||
|
||||
LauncherCommandRequest launcherCommandRequest = new LauncherCommandRequest();
|
||||
launcherCommandRequest.setTaskName(launcher.getTask());
|
||||
launcherCommandRequest.setUserId(launcher.getSenderId());
|
||||
launcherCommandRequest.setCompanyId(newCompanyId);
|
||||
launcherCommandRequest.setSecurityId(testSecurityId);
|
||||
|
||||
BaseRequest<Object> predictableBaseRequest = new BaseRequest<>();
|
||||
predictableBaseRequest.setRequestPayload(launcherCommandRequest);
|
||||
predictableBaseRequest.setId(ID);
|
||||
predictableBaseRequest.setUserId(launcher.getSenderId());
|
||||
predictableBaseRequest.setActionType(ActionType.NEW);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForNew(launcherCommandRequest, ID);
|
||||
addRecordToKafka((MockConsumer) launcherService.getConsumer(), TOPIC_LAUNCHER_NEW, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
verify(mockProducer, timeout(30_000L).times(1))
|
||||
.send(producerRecord.capture());
|
||||
|
||||
BaseRequest<Object> baseRequestResult = (BaseRequest<Object>) producerRecord.getValue().value();
|
||||
assertEquals("launcher-" + launcher.getTask(), producerRecord.getValue().topic());
|
||||
BASE_REQUEST_MATCHER.assertMatch(baseRequestResult, predictableBaseRequest);
|
||||
|
||||
|
||||
Launcher launcherReq = launcherMap.getSingleObjectBySQL(String.format("senderId = %s", launcher.getSenderId()));
|
||||
launcher.setId(launcherReq.getId());
|
||||
LAUNCHER_MATCHER.assertMatch(launcherReq, launcher);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue