Skip to content
Snippets Groups Projects
Commit a3745232 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6751 Validierung zum Grpc Service hinzugefügt.

parent f068a489
No related branches found
No related tags found
No related merge requests found
......@@ -20,9 +20,14 @@
package de.ozgcloud.info.nachricht;
import java.util.Set;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import jakarta.validation.Validator;
import de.ozgcloud.info.common.InvalidNachrichtenListUrlException;
import de.ozgcloud.info.common.NachrichtEvent;
import io.grpc.Status;
import io.grpc.stub.StreamObserver;
import lombok.RequiredArgsConstructor;
......@@ -35,6 +40,7 @@ public class NachrichtGrpcService extends NachrichtServiceGrpc.NachrichtServiceI
private final NachrichtService nachrichtService;
private final NachrichtMapper nachrichtenMapper;
private final Validator validator;
@Override
public void saveNewNachricht(GrpcNewNachrichtRequest request, StreamObserver<GrpcNewNachrichtReply> responseObserver) {
......@@ -49,7 +55,20 @@ public class NachrichtGrpcService extends NachrichtServiceGrpc.NachrichtServiceI
}
private void saveNachricht(GrpcNewNachrichtRequest request) {
nachrichtService.save(nachrichtenMapper.fromGrpcNachricht(request.getNachricht()));
var nachricht = nachrichtenMapper.fromGrpcNachricht(request.getNachricht());
if (isValid(nachricht)) {
nachrichtService.save(nachricht);
}
}
private boolean isValid(NachrichtEvent nachrichtEvent) {
Set<ConstraintViolation<NachrichtEvent>> violations = validator.validate(nachrichtEvent);
if (!violations.isEmpty()) {
throw new ConstraintViolationException(violations);
}
return true;
}
@Override
......
......@@ -30,6 +30,7 @@ import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import de.ozgcloud.info.NachrichtEventTestFactory;
import io.grpc.StatusRuntimeException;
import net.devh.boot.grpc.client.inject.GrpcClient;
@SpringBootTest(properties = {
......@@ -54,6 +55,15 @@ class NachrichtenGrpcServiceITCase {
assertThat(response.getStatus()).isEqualTo(STATUS_OK);
}
@Test
@DirtiesContext
void shouldNotSaveInvalidNewNachricht() {
var nachricht = GrpcNachricht.newBuilder().setNachrichtenListUrl("lala").build();
var request = NachrichtEventTestFactory.createNewNachrichtRequest().toBuilder().setNachricht(nachricht).build();
assertThatExceptionOfType(StatusRuntimeException.class).isThrownBy(() -> service.saveNewNachricht(request));
}
}
@Nested
......
......@@ -24,9 +24,13 @@ package de.ozgcloud.info.nachricht;
import static org.mockito.Mockito.*;
import jakarta.validation.Validator;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration;
import net.devh.boot.grpc.server.autoconfigure.GrpcServerAutoConfiguration;
......@@ -40,7 +44,12 @@ import net.devh.boot.grpc.server.autoconfigure.GrpcServerFactoryAutoConfiguratio
class NachrichtenGrpcTestConfiguration {
@Bean
NachrichtService nachrichtenService() {
return mock(NachrichtService.class);
return new NachrichtService(nachrichtenRepository());
}
@Bean
Validator validator() {
return new LocalValidatorFactoryBean();
}
@Bean
......@@ -50,11 +59,11 @@ class NachrichtenGrpcTestConfiguration {
@Bean
NachrichtMapper nachrichtenMapper() {
return mock(NachrichtMapper.class);
return new NachrichtMapper(mock(Environment.class));
}
@Bean
NachrichtGrpcService nachrichtenGrpcService() {
return new NachrichtGrpcService(nachrichtenService(), nachrichtenMapper());
return new NachrichtGrpcService(nachrichtenService(), nachrichtenMapper(), validator());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment