-
#end
diff --git a/src/test/java/com/baloise/confluence/digitalsignature/DigitalSignatureMacroTest.java b/src/test/java/com/baloise/confluence/digitalsignature/DigitalSignatureMacroTest.java
index 44bb605..8a0aa02 100644
--- a/src/test/java/com/baloise/confluence/digitalsignature/DigitalSignatureMacroTest.java
+++ b/src/test/java/com/baloise/confluence/digitalsignature/DigitalSignatureMacroTest.java
@@ -1,25 +1,25 @@
package com.baloise.confluence.digitalsignature;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Test;
-
+import com.atlassian.bandana.BandanaManager;
import com.atlassian.confluence.setup.BootstrapManager;
import com.atlassian.sal.api.user.UserProfile;
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.List;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public class DigitalSignatureMacroTest {
-
- private final Signature signature = new Signature(1, "test", "title");
+class DigitalSignatureMacroTest {
+ private final Signature2 signature = new Signature2(1, "test", "title");
private final BootstrapManager bootstrapManager = mock(BootstrapManager.class);
+ private final BandanaManager bandana = mock(BandanaManager.class);
@Test
- public void getMailtoLong() {
- DigitalSignatureMacro macro = new DigitalSignatureMacro(null, null, null, null, null, null, null);
+ void getMailtoLong() {
+ DigitalSignatureMacro macro = new DigitalSignatureMacro(bandana, null, null, null, null, null, null);
List
profiles = new ArrayList<>();
UserProfile profile = mock(UserProfile.class);
when(profile.getFullName()).thenReturn("Heinz Meier");
@@ -27,15 +27,17 @@ public void getMailtoLong() {
for (int i = 0; i < 20; i++) {
profiles.add(profile);
}
+
String mailto = macro.getMailto(profiles, "Subject", true, null);
+
assertEquals("mailto:heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com,heinz.meier@meier.com?Subject=Subject", mailto);
}
@Test
- public void getMailtoVeryLong() {
+ void getMailtoVeryLong() {
when(bootstrapManager.getWebAppContextPath()).thenReturn("nirvana");
- DigitalSignatureMacro macro = new DigitalSignatureMacro(null, null, bootstrapManager, null, null, null, null);
+ DigitalSignatureMacro macro = new DigitalSignatureMacro(bandana, null, bootstrapManager, null, null, null, null);
List profiles = new ArrayList<>();
UserProfile profile = mock(UserProfile.class);
when(profile.getFullName()).thenReturn("Heinz Meier");
@@ -43,19 +45,23 @@ public void getMailtoVeryLong() {
for (int i = 0; i < 200; i++) {
profiles.add(profile);
}
+
String mailto = macro.getMailto(profiles, "Subject", true, signature);
+
assertEquals("nirvana/rest/signature/1.0/emails?key=signature.3224a4d6bba68cd0ece9b64252f8bf5677e24cf6b7c5f543e3176d419d34d517&signed=true", mailto);
}
@Test
- public void getMailtoShort() {
- DigitalSignatureMacro macro = new DigitalSignatureMacro(null, null, null, null, null, null, null);
+ void getMailtoShort() {
+ DigitalSignatureMacro macro = new DigitalSignatureMacro(bandana, null, null, null, null, null, null);
List profiles = new ArrayList<>();
UserProfile profile = mock(UserProfile.class);
when(profile.getFullName()).thenReturn("Heinz Meier");
when(profile.getEmail()).thenReturn("heinz.meier@meier.com");
profiles.add(profile);
+
String mailto = macro.getMailto(profiles, "Subject", true, null);
+
assertEquals("mailto:Heinz Meier?Subject=Subject", mailto);
}
}
diff --git a/src/test/java/com/baloise/confluence/digitalsignature/InheritSignersTest.java b/src/test/java/com/baloise/confluence/digitalsignature/InheritSignersTest.java
index 3d60ce5..9d124bc 100644
--- a/src/test/java/com/baloise/confluence/digitalsignature/InheritSignersTest.java
+++ b/src/test/java/com/baloise/confluence/digitalsignature/InheritSignersTest.java
@@ -1,25 +1,24 @@
package com.baloise.confluence.digitalsignature;
-import org.junit.Test;
-import static com.baloise.confluence.digitalsignature.InheritSigners.NONE;
-import static com.baloise.confluence.digitalsignature.InheritSigners.READERS_ONLY;
-import static com.baloise.confluence.digitalsignature.InheritSigners.ofValue;
-import static org.junit.Assert.assertEquals;
+import org.junit.jupiter.api.Test;
-public class InheritSignersTest {
+import static com.baloise.confluence.digitalsignature.InheritSigners.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class InheritSignersTest {
@Test
- public void testOfValueReadersOnly() {
+ void testOfValueReadersOnly() {
assertEquals(READERS_ONLY, ofValue("readers only"));
}
@Test
- public void testOfValueNoneNull() {
+ void testOfValueNoneNull() {
assertEquals(NONE, ofValue(null));
}
@Test
- public void testOfValueNoneIllegalArgument() {
+ void testOfValueNoneIllegalArgument() {
assertEquals(NONE, ofValue("asdasd"));
}
}
diff --git a/src/test/java/com/baloise/confluence/digitalsignature/MarkdownTest.java b/src/test/java/com/baloise/confluence/digitalsignature/MarkdownTest.java
index e87b7a6..575b2e8 100644
--- a/src/test/java/com/baloise/confluence/digitalsignature/MarkdownTest.java
+++ b/src/test/java/com/baloise/confluence/digitalsignature/MarkdownTest.java
@@ -1,33 +1,36 @@
package com.baloise.confluence.digitalsignature;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.net.URISyntaxException;
import static java.nio.file.Files.readAllLines;
import static java.nio.file.Paths.get;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertAll;
+import static org.junit.jupiter.api.Assertions.assertEquals;
-public class MarkdownTest {
- private Markdown markdown;
+class MarkdownTest {
+ private Markdown markdown;
- @Before
- public void setUp() {
- markdown = new Markdown();
- }
+ @BeforeEach
+ void setUp() {
+ markdown = new Markdown();
+ }
- @Test
- public void testToHTML() throws Exception {
- assertEquals("This is Sparta
\n", markdown.toHTML("This is *Sparta*"));
- assertEquals("Link
\n", markdown.toHTML("[Link](http://a.com)"));
- assertEquals("\n", markdown.toHTML("![Image](http://url/a.png)"));
- assertEquals("<b></b>
\n", markdown.toHTML(""));
- assertEquals(readResource("commonmark.html").trim(), markdown.toHTML(readResource("commonmark.md")).trim());
- }
+ @Test
+ void testToHTML() {
+ assertAll(
+ () -> assertEquals("This is Sparta
\n", markdown.toHTML("This is *Sparta*")),
+ () -> assertEquals("Link
\n", markdown.toHTML("[Link](http://a.com)")),
+ () -> assertEquals("\n", markdown.toHTML("![Image](http://url/a.png)")),
+ () -> assertEquals("<b></b>
\n", markdown.toHTML("")),
+ () -> assertEquals(readResource("commonmark.html").trim(), markdown.toHTML(readResource("commonmark.md")).trim())
+ );
+ }
- private String readResource(String name) throws IOException, URISyntaxException {
- return String.join("\n", readAllLines(get(getClass().getResource("/" + name).toURI())));
- }
+ private String readResource(String name) throws IOException, URISyntaxException {
+ return String.join("\n", readAllLines(get(getClass().getResource("/" + name).toURI())));
+ }
}
diff --git a/src/test/java/com/baloise/confluence/digitalsignature/MessageFormatTest.java b/src/test/java/com/baloise/confluence/digitalsignature/MessageFormatTest.java
index 4d2dde1..5470115 100644
--- a/src/test/java/com/baloise/confluence/digitalsignature/MessageFormatTest.java
+++ b/src/test/java/com/baloise/confluence/digitalsignature/MessageFormatTest.java
@@ -1,19 +1,23 @@
package com.baloise.confluence.digitalsignature;
-import java.text.MessageFormat;
+import org.junit.jupiter.api.Test;
-import org.junit.Test;
+import java.text.MessageFormat;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
-public class MessageFormatTest {
+class MessageFormatTest {
@Test
- public void test() {
+ void testFormat_inOrder() {
String rawTemplate = "Email addresses of users who {0}signed{1} {2}";
String actual = MessageFormat.format(rawTemplate, "", "", "#123");
assertEquals("Email addresses of users who signed #123", actual);
- rawTemplate = "{2} was {0}signed{1}";
- actual = MessageFormat.format(rawTemplate, "", "", "#123");
+ }
+
+ @Test
+ void testFormat_outOfOrder() {
+ String rawTemplate = "{2} was {0}signed{1}";
+ String actual = MessageFormat.format(rawTemplate, "", "", "#123");
assertEquals("#123 was signed", actual);
}
}
diff --git a/src/test/java/com/baloise/confluence/digitalsignature/SignatureSerialisationTest.java b/src/test/java/com/baloise/confluence/digitalsignature/SignatureSerialisationTest.java
index 165ce7f..8fe1be9 100644
--- a/src/test/java/com/baloise/confluence/digitalsignature/SignatureSerialisationTest.java
+++ b/src/test/java/com/baloise/confluence/digitalsignature/SignatureSerialisationTest.java
@@ -1,41 +1,87 @@
package com.baloise.confluence.digitalsignature;
-import org.junit.Test;
+import com.atlassian.bandana.BandanaManager;
+import org.junit.jupiter.api.Test;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.Date;
+import java.util.HashSet;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-public class SignatureSerialisationTest {
- @Test
- public void deserialise() throws IOException, ClassNotFoundException {
- ObjectInputStream in = new ObjectInputStream(getClass().getResourceAsStream("/signature.ser"));
- Signature signature = (Signature) in.readObject();
- in.close();
- assertEquals("signature.a077cdcc5bfcf275fe447ae2c609c1c361331b4e90cb85909582e0d824cbc5b3", signature.getKey());
- assertEquals("[missing1, missing2]", signature.getMissingSignatures().toString());
- assertEquals(1, signature.getSignatures().size());
- assertTrue(signature.getSignatures().containsKey("signed1"));
- assertEquals(9999, signature.getSignatures().get("signed1").getTime());
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+class SignatureSerialisationTest {
+ public static final String SIG_JSON = "{\"key\":\"signature.a077cdcc5bfcf275fe447ae2c609c1c361331b4e90cb85909582e0d824cbc5b3\",\"hash\":\"a077cdcc5bfcf275fe447ae2c609c1c361331b4e90cb85909582e0d824cbc5b3\",\"pageId\":123,\"title\":\"title\",\"body\":\"body\",\"maxSignatures\":-1,\"visibilityLimit\":-1,\"signatures\":{\"signed1\":\"1970-01-01T01:00:09CET\"},\"missingSignatures\":[\"missing1\",\"missing2\"],\"notify\":[\"notify1\"]}";
+
+ @Test
+ void deserialize() throws IOException, ClassNotFoundException {
+ String signatureKey = "signature.a077cdcc5bfcf275fe447ae2c609c1c361331b4e90cb85909582e0d824cbc5b3";
+
+ Signature2 signature;
+ try(ObjectInputStream in = new ObjectInputStream(getClass().getResourceAsStream("/signature.ser"))) {
+
+ HashSet keys = new HashSet<>();
+ keys.add(signatureKey);
+ BandanaManager mgr = mock(BandanaManager.class);
+ when(mgr.getValue(any(), any())).thenReturn(in.readObject());
+ when(mgr.getKeys(any())).thenReturn(keys);
+
+ signature = Signature2.fromBandana(mgr, signatureKey);
}
- @Test
- public void serialise() throws IOException, ClassNotFoundException {
- Signature signature = new Signature(123L, "body", "title");
- signature.getNotify().add("notify1");
- signature.getMissingSignatures().add("missing1");
- signature.getMissingSignatures().add("missing2");
- signature.getSignatures().put("signed1", new Date(9999));
- ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("src/test/resources/signature-test.ser"));
- out.writeObject(signature);
- out.close();
-
- ObjectInputStream in = new ObjectInputStream(this.getClass().getResourceAsStream("/signature.ser"));
- assertEquals(signature, in.readObject());
+ assertNotNull(signature);
+ assertAll(
+ () -> assertEquals(signatureKey, signature.getKey()),
+ () -> assertEquals("[missing1, missing2]", signature.getMissingSignatures().toString()),
+ () -> assertEquals(1, signature.getSignatures().size()),
+ () -> assertTrue(signature.getSignatures().containsKey("signed1")),
+ () -> assertEquals(9999, signature.getSignatures().get("signed1").getTime()),
+
+ // assert we can still read the old gson serialization
+ () -> assertEquals(signature, Signature2.deserialize(SIG_JSON)),
+
+ // assert that deserialization of the serialization results in the original Signature
+ () -> assertEquals(signature, Signature2.deserialize(signature.serialize()))
+ );
+ }
+
+ @Test
+ void serialize() throws IOException, ClassNotFoundException {
+ Signature2 signature = new Signature2(123L, "body", "title");
+ signature.getNotify().add("notify1");
+ signature.getMissingSignatures().add("missing1");
+ signature.getMissingSignatures().add("missing2");
+ signature.getSignatures().put("signed1", new Date(9999));
+
+ Path path = Paths.get("src/test/resources/signature-test.ser");
+ try(ObjectOutputStream out = new ObjectOutputStream(Files.newOutputStream(path))) {
+ out.writeObject(signature);
}
+
+ // assert the serialization we just wrote can be deserialized
+ ObjectInputStream in = new ObjectInputStream(Files.newInputStream(path));
+ assertEquals(signature, in.readObject());
+ }
+
+ @Test
+ void deserializeHistoricalRecord() throws IOException, ClassNotFoundException {
+ Signature signature = new Signature(123L, "body", "title");
+ signature.getNotify().add("notify1");
+ signature.getMissingSignatures().add("missing1");
+ signature.getMissingSignatures().add("missing2");
+ signature.getSignatures().put("signed1", new Date(9999));
+
+ ObjectInputStream in;
+
+ // assert the historically serialized class can still be deserialized
+ in = new ObjectInputStream(this.getClass().getResourceAsStream("/signature.ser"));
+ assertEquals(signature, in.readObject());
+ }
}
diff --git a/src/test/java/com/baloise/confluence/digitalsignature/SignatureTest.java b/src/test/java/com/baloise/confluence/digitalsignature/SignatureTest.java
index fe281d5..84023b7 100644
--- a/src/test/java/com/baloise/confluence/digitalsignature/SignatureTest.java
+++ b/src/test/java/com/baloise/confluence/digitalsignature/SignatureTest.java
@@ -1,19 +1,112 @@
package com.baloise.confluence.digitalsignature;
-import org.junit.Test;
+import com.atlassian.bandana.BandanaManager;
+import com.atlassian.bandana.DefaultBandanaManager;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import java.util.Collections;
-public class SignatureTest {
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.*;
- @Test
- public void testClone() throws Exception {
- Signature signature = new Signature(999, "title", "body");
- signature.getMissingSignatures().add("Hans");
- Signature cloned = signature.clone();
- assertFalse(signature == cloned);
- assertEquals(signature, cloned);
- assertEquals("Hans", cloned.getMissingSignatures().iterator().next());
+class SignatureTest {
+ @Nested
+ class SerializationTest {
+ @Test
+ void serialize_empty() {
+ Signature2 signature = new Signature2();
+
+ String json = signature.serialize();
+
+ assertEquals("{\"key\":\"\",\"hash\":\"\",\"pageId\":0,\"title\":\"\",\"body\":\"\",\"maxSignatures\":-1,\"visibilityLimit\":-1,\"signatures\":{},\"missingSignatures\":[],\"notify\":[]}", json);
+ }
+
+ @Test
+ void serialize_initializedObject() {
+ Signature2 signature = new Signature2(42L, "body text", "title text");
+ signature.sign("max.mustermann");
+ signature.setMissingSignatures(Collections.singleton("max.muster"));
+ signature.setNotify(Collections.singleton("max.meier"));
+
+ String json = signature.serialize();
+
+ assertEquals("{\"key\":\"signature.752b4cc6b4933fc7f0a6efa819c1bcc440c32155457e836d99d1bfe927cc22f5\",\"hash\":\"752b4cc6b4933fc7f0a6efa819c1bcc440c32155457e836d99d1bfe927cc22f5\",\"pageId\":42,\"title\":\"title text\",\"body\":\"body text\",\"maxSignatures\":-1,\"visibilityLimit\":-1,\"signatures\":{},\"missingSignatures\":[\"max.muster\"],\"notify\":[\"max.meier\"]}", json);
+ }
+
+ @Test
+ void deserialize_empty() {
+ assertNull(Signature2.deserialize(null));
+ assertNull(Signature2.deserialize(""));
+ }
+
+ @Test
+ void serializeAndDeserialize() {
+ Signature2 signature = new Signature2(42L, "body text", "title text");
+ signature.sign("max.mustermann");
+ signature.setMissingSignatures(Collections.singleton("max.muster"));
+ signature.setNotify(Collections.singleton("max.meier"));
+
+ String json = signature.serialize();
+
+ Signature2 restoredSignature = Signature2.deserialize(json);
+
+ assertEquals("{\"key\":\"signature.752b4cc6b4933fc7f0a6efa819c1bcc440c32155457e836d99d1bfe927cc22f5\",\"hash\":\"752b4cc6b4933fc7f0a6efa819c1bcc440c32155457e836d99d1bfe927cc22f5\",\"pageId\":42,\"title\":\"title text\",\"body\":\"body text\",\"maxSignatures\":-1,\"visibilityLimit\":-1,\"signatures\":{},\"missingSignatures\":[\"max.muster\"],\"notify\":[\"max.meier\"]}", json);
+ assertEquals(signature, restoredSignature);
+ }
+ }
+
+ @Nested
+ class BandanaWrapperTest {
+ private final BandanaManager bandana = mock(DefaultBandanaManager.class);
+ private final Signature2 signature = new Signature2(1, "test", "title");
+ private final Signature signatureOld = new Signature(1, "test", "title");
+
+ @Test
+ void toBandanaFromBandana_readAsWritten() {
+ ArgumentCaptor stringCapator = ArgumentCaptor.forClass(String.class);
+ ArgumentCaptor