Skip to content

Commit 0a67dfe

Browse files
committed
Fix crash for clients without global sender
1 parent 3459d97 commit 0a67dfe

File tree

3 files changed

+42
-8
lines changed

3 files changed

+42
-8
lines changed

src/main/java/no/digipost/signature/client/asice/CreateASiCE.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import no.digipost.signature.client.core.Sender;
99
import no.digipost.signature.client.core.SignatureJob;
1010
import no.digipost.signature.client.core.exceptions.RuntimeIOException;
11+
import no.digipost.signature.client.core.internal.ActualSender;
1112
import no.digipost.signature.client.security.KeyStoreConfig;
1213

1314
import java.io.ByteArrayInputStream;
@@ -16,8 +17,6 @@
1617
import java.util.List;
1718
import java.util.Optional;
1819

19-
import static no.digipost.signature.client.core.exceptions.SenderNotSpecifiedException.SENDER_NOT_SPECIFIED;
20-
2120
public class CreateASiCE<JOB extends SignatureJob> {
2221

2322
private final CreateZip createZip = new CreateZip();
@@ -37,10 +36,7 @@ public CreateASiCE(ManifestCreator<JOB> manifestCreator, ASiCEConfiguration clie
3736
}
3837

3938
public DocumentBundle createASiCE(JOB job) {
40-
Sender sender = job.getSender()
41-
.orElse(globalSender
42-
.orElseThrow(SENDER_NOT_SPECIFIED));
43-
39+
Sender sender = ActualSender.getActualSender(job.getSender(), globalSender);
4440
Manifest manifest = manifestCreator.createManifest(job, sender);
4541

4642
List<ASiCEAttachable> files = new ArrayList<>();

src/main/java/no/digipost/signature/client/core/internal/ActualSender.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66

77
import static no.digipost.signature.client.core.exceptions.SenderNotSpecifiedException.SENDER_NOT_SPECIFIED;
88

9-
public class ActualSender {
9+
public final class ActualSender {
1010
public static Sender getActualSender(Optional<Sender> messageSpecificSender, Optional<Sender> globalSender) {
11-
return messageSpecificSender.orElse(globalSender.orElseThrow(SENDER_NOT_SPECIFIED));
11+
return messageSpecificSender.orElseGet(() -> globalSender.orElseThrow(SENDER_NOT_SPECIFIED));
12+
}
13+
14+
private ActualSender() {
1215
}
1316
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package no.digipost.signature.client.core.internal;
2+
3+
import no.digipost.signature.client.core.Sender;
4+
import no.digipost.signature.client.core.exceptions.SenderNotSpecifiedException;
5+
import org.junit.jupiter.api.Test;
6+
7+
import java.util.Optional;
8+
9+
import static org.hamcrest.MatcherAssert.assertThat;
10+
import static org.hamcrest.Matchers.sameInstance;
11+
import static org.junit.jupiter.api.Assertions.assertThrows;
12+
13+
class ActualSenderTest {
14+
15+
@Test
16+
void throwsIfNoSenderIsAvailable() {
17+
assertThrows(SenderNotSpecifiedException.class, () -> ActualSender.getActualSender(Optional.empty(), Optional.empty()));
18+
}
19+
20+
@Test
21+
void prioritizesSenderOnJob() {
22+
Sender senderOnJob = new Sender("123456789");
23+
Sender actualSender = ActualSender.getActualSender(Optional.of(senderOnJob), Optional.empty());
24+
assertThat(actualSender, sameInstance(senderOnJob));
25+
}
26+
27+
@Test
28+
void fallsBackToGlobalSender() {
29+
Sender globalSender = new Sender("123456789");
30+
Sender actualSender = ActualSender.getActualSender(Optional.empty(), Optional.of(globalSender));
31+
assertThat(actualSender, sameInstance(globalSender));
32+
}
33+
34+
35+
}

0 commit comments

Comments
 (0)