Skip to content
Snippets Groups Projects
Commit 8c60a657 authored by Martin Vogel's avatar Martin Vogel
Browse files

feature(#566): add tests

parent 93965295
No related branches found
No related tags found
1 merge request!7Validierung des Metadaten Schemas
......@@ -11,10 +11,7 @@ import de.fitko.fitconnect.api.domain.model.metadata.data.SubmissionSchema;
import de.fitko.fitconnect.api.domain.model.submission.SubmissionForPickup;
import de.fitko.fitconnect.api.domain.model.submission.SubmitSubmission;
import de.fitko.fitconnect.api.domain.validation.ValidationResult;
import de.fitko.fitconnect.api.exceptions.EncryptionException;
import de.fitko.fitconnect.api.exceptions.KeyNotRetrievedException;
import de.fitko.fitconnect.api.exceptions.RestApiException;
import de.fitko.fitconnect.api.exceptions.SubmissionNotCreatedException;
import de.fitko.fitconnect.api.exceptions.*;
import de.fitko.fitconnect.api.services.Sender;
import io.github.netmikey.logunit.api.LogCapturer;
import org.junit.jupiter.api.BeforeEach;
......@@ -23,6 +20,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
import org.mockito.Mockito;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.util.List;
import java.util.Optional;
......@@ -44,7 +42,7 @@ public class SenderClientTest {
private SenderClient.WithDestination underTest;
@BeforeEach
public void setup() {
public void setup() throws IOException {
senderMock = Mockito.mock(Sender.class);
underTest = SenderClient.build(senderMock, "");
}
......@@ -410,6 +408,24 @@ public class SenderClientTest {
logs.assertContains("Getting encryption key for destination "+ destinationId+" failed");
}
@Test
public void testFailOnInvalidMetadata() throws Exception {
// Given
final var destinationId = setupTestMocks();
when(senderMock.validateMetadata(any(), any())).thenReturn(ValidationResult.error(new ValidationException("invalid metadata")));
// When
final Optional<SubmitSubmission> submission = underTest
.withDestination(destinationId)
.withServiceType("name", "test:key")
.withJsonData("{}")
.submit();
assertTrue(submission.isEmpty());
logs.assertContains("Metadata does not match schema");
}
private UUID setupTestMocks() throws JOSEException {
final var destinationId = UUID.randomUUID();
final var destination = getDestination(destinationId);
......
......@@ -7,13 +7,14 @@ import com.nimbusds.jose.jwk.RSAKey;
import com.nimbusds.jose.jwk.gen.RSAKeyGenerator;
import de.fitko.fitconnect.api.domain.model.destination.Destination;
import de.fitko.fitconnect.api.domain.model.jwk.JWK;
import de.fitko.fitconnect.api.domain.model.metadata.ContentStructure;
import de.fitko.fitconnect.api.domain.model.metadata.Metadata;
import de.fitko.fitconnect.api.domain.model.metadata.PublicServiceType;
import de.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment;
import de.fitko.fitconnect.api.domain.model.metadata.data.*;
import de.fitko.fitconnect.api.domain.model.submission.*;
import de.fitko.fitconnect.api.domain.validation.ValidationResult;
import de.fitko.fitconnect.api.exceptions.EncryptionException;
import de.fitko.fitconnect.api.exceptions.KeyNotRetrievedException;
import de.fitko.fitconnect.api.exceptions.MetadataNotCreatedException;
import de.fitko.fitconnect.api.exceptions.RestApiException;
import de.fitko.fitconnect.api.exceptions.*;
import de.fitko.fitconnect.api.services.Sender;
import de.fitko.fitconnect.api.services.crypto.CryptoService;
import de.fitko.fitconnect.api.services.destination.DestinationService;
......@@ -25,8 +26,10 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.net.URI;
import java.text.ParseException;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import static org.hamcrest.MatcherAssert.assertThat;
......@@ -171,7 +174,7 @@ public class SubmissionSenderTest {
final JWK jwk = new ObjectMapper().readValue(publicKeyJson, JWK.class);
final RSAKey expectedRSAKey = RSAKey.parse(publicKeyJson);
when(destinationServiceMock.getEncryptionKey(any(),any())).thenReturn(jwk);
when(destinationServiceMock.getEncryptionKey(any(), any())).thenReturn(jwk);
// When
final RSAKey key = underTest.getEncryptionKeyForDestination(submissionId, jwk.getKid());
......@@ -184,7 +187,7 @@ public class SubmissionSenderTest {
public void getEncryptionKeyForDestinationFailed() {
// Given
when(destinationServiceMock.getEncryptionKey(any(),any())).thenThrow(RestApiException.class);
when(destinationServiceMock.getEncryptionKey(any(), any())).thenThrow(RestApiException.class);
// Then
assertThrows(
......@@ -278,6 +281,37 @@ public class SubmissionSenderTest {
assertThat(destination, equalTo(expectedDestination));
}
@Test
public void testValidMetadata() {
// Given
final var metadata = new Metadata();
when(validationServiceMock.validateMetadataSchema(any(), any())).thenReturn(ValidationResult.ok());
// When
final ValidationResult validatedMetadata = underTest.validateMetadata(metadata, "metadataSchema");
// Then
assertTrue(validatedMetadata.isValid());
}
@Test
public void testInvalidMetadata() {
// Given
final var invalidMetadata = new Metadata();
final ValidationResult expectedResult = ValidationResult.error(new ValidationException("invalid metadata"));
when(validationServiceMock.validateMetadataSchema(any(), any())).thenReturn(expectedResult);
// When
final ValidationResult validatedMetadata = underTest.validateMetadata(invalidMetadata, "metadataSchema");
// Then
assertTrue(validatedMetadata.hasError());
assertThat(validatedMetadata.getError().getMessage(), equalTo("invalid metadata"));
}
private String getResourceAsString(final String filename) throws IOException {
return new String(SubmissionSenderTest.class.getResourceAsStream(filename).readAllBytes());
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment