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 @@ ...@@ -20,9 +20,14 @@
package de.ozgcloud.info.nachricht; package de.ozgcloud.info.nachricht;
import java.util.Set;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException; import jakarta.validation.ConstraintViolationException;
import jakarta.validation.Validator;
import de.ozgcloud.info.common.InvalidNachrichtenListUrlException; import de.ozgcloud.info.common.InvalidNachrichtenListUrlException;
import de.ozgcloud.info.common.NachrichtEvent;
import io.grpc.Status; import io.grpc.Status;
import io.grpc.stub.StreamObserver; import io.grpc.stub.StreamObserver;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -35,6 +40,7 @@ public class NachrichtGrpcService extends NachrichtServiceGrpc.NachrichtServiceI ...@@ -35,6 +40,7 @@ public class NachrichtGrpcService extends NachrichtServiceGrpc.NachrichtServiceI
private final NachrichtService nachrichtService; private final NachrichtService nachrichtService;
private final NachrichtMapper nachrichtenMapper; private final NachrichtMapper nachrichtenMapper;
private final Validator validator;
@Override @Override
public void saveNewNachricht(GrpcNewNachrichtRequest request, StreamObserver<GrpcNewNachrichtReply> responseObserver) { public void saveNewNachricht(GrpcNewNachrichtRequest request, StreamObserver<GrpcNewNachrichtReply> responseObserver) {
...@@ -49,7 +55,20 @@ public class NachrichtGrpcService extends NachrichtServiceGrpc.NachrichtServiceI ...@@ -49,7 +55,20 @@ public class NachrichtGrpcService extends NachrichtServiceGrpc.NachrichtServiceI
} }
private void saveNachricht(GrpcNewNachrichtRequest request) { 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 @Override
......
...@@ -30,6 +30,7 @@ import org.springframework.test.annotation.DirtiesContext; ...@@ -30,6 +30,7 @@ import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import de.ozgcloud.info.NachrichtEventTestFactory; import de.ozgcloud.info.NachrichtEventTestFactory;
import io.grpc.StatusRuntimeException;
import net.devh.boot.grpc.client.inject.GrpcClient; import net.devh.boot.grpc.client.inject.GrpcClient;
@SpringBootTest(properties = { @SpringBootTest(properties = {
...@@ -54,6 +55,15 @@ class NachrichtenGrpcServiceITCase { ...@@ -54,6 +55,15 @@ class NachrichtenGrpcServiceITCase {
assertThat(response.getStatus()).isEqualTo(STATUS_OK); 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 @Nested
......
...@@ -24,9 +24,13 @@ package de.ozgcloud.info.nachricht; ...@@ -24,9 +24,13 @@ package de.ozgcloud.info.nachricht;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import jakarta.validation.Validator;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; 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.client.autoconfigure.GrpcClientAutoConfiguration;
import net.devh.boot.grpc.server.autoconfigure.GrpcServerAutoConfiguration; import net.devh.boot.grpc.server.autoconfigure.GrpcServerAutoConfiguration;
...@@ -40,7 +44,12 @@ import net.devh.boot.grpc.server.autoconfigure.GrpcServerFactoryAutoConfiguratio ...@@ -40,7 +44,12 @@ import net.devh.boot.grpc.server.autoconfigure.GrpcServerFactoryAutoConfiguratio
class NachrichtenGrpcTestConfiguration { class NachrichtenGrpcTestConfiguration {
@Bean @Bean
NachrichtService nachrichtenService() { NachrichtService nachrichtenService() {
return mock(NachrichtService.class); return new NachrichtService(nachrichtenRepository());
}
@Bean
Validator validator() {
return new LocalValidatorFactoryBean();
} }
@Bean @Bean
...@@ -50,11 +59,11 @@ class NachrichtenGrpcTestConfiguration { ...@@ -50,11 +59,11 @@ class NachrichtenGrpcTestConfiguration {
@Bean @Bean
NachrichtMapper nachrichtenMapper() { NachrichtMapper nachrichtenMapper() {
return mock(NachrichtMapper.class); return new NachrichtMapper(mock(Environment.class));
} }
@Bean @Bean
NachrichtGrpcService nachrichtenGrpcService() { 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