✨ Add SendURI message
authorDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Mon, 6 Jan 2025 09:06:44 +0000 (10:06 +0100)
committerDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Mon, 6 Jan 2025 09:06:44 +0000 (10:06 +0100)
src/main/java/net/pterodactylus/fcp/SendUri.java [new file with mode: 0644]
src/test/java/net/pterodactylus/fcp/SendUriTest.java [new file with mode: 0644]

diff --git a/src/main/java/net/pterodactylus/fcp/SendUri.java b/src/main/java/net/pterodactylus/fcp/SendUri.java
new file mode 100644 (file)
index 0000000..a127e4b
--- /dev/null
@@ -0,0 +1,22 @@
+package net.pterodactylus.fcp;
+
+import java.io.ByteArrayInputStream;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+public class SendUri extends FcpMessage {
+
+       public SendUri(String identifier, String nodeIdentifier, String uri) {
+               super("SendURI");
+               setField("Identifier", identifier);
+               setField("NodeIdentifier", nodeIdentifier);
+               setField("URI", uri);
+       }
+
+       public void setDescription(String description) {
+               byte[] encodedDescription = description.getBytes(UTF_8);
+               setField("DataLength", String.valueOf(encodedDescription.length));
+               setPayloadInputStream(new ByteArrayInputStream(encodedDescription));
+       }
+
+}
diff --git a/src/test/java/net/pterodactylus/fcp/SendUriTest.java b/src/test/java/net/pterodactylus/fcp/SendUriTest.java
new file mode 100644 (file)
index 0000000..2a73df7
--- /dev/null
@@ -0,0 +1,57 @@
+package net.pterodactylus.fcp;
+
+import org.junit.Test;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static net.pterodactylus.fcp.test.InputStreamMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.nullValue;
+
+public class SendUriTest {
+
+       @Test
+       public void sendUriMessageHasCorrectName() {
+               assertThat(sendUri.getName(), equalTo("SendURI"));
+       }
+
+       @Test
+       public void sendUriMessageSetsIdentifierFieldCorrectly() {
+               assertThat(sendUri.getField("Identifier"), equalTo("identifier"));
+       }
+
+       @Test
+       public void sendUriMessageSetsNodeIdentifierFieldCorrectly() {
+               assertThat(sendUri.getField("NodeIdentifier"), equalTo("node-identifier"));
+       }
+
+       @Test
+       public void sendUriMessageSetsUriFieldCorrectly() {
+               assertThat(sendUri.getField("URI"), equalTo("uri"));
+       }
+
+       @Test
+       public void sendUriMessageWithoutDescriptionDoesNotHaveADataLengthField() {
+               assertThat(sendUri.getField("DataLength"), nullValue());
+       }
+
+       @Test
+       public void sendUriMessageWithoutDescriptionDoesNotHaveAPayloadInputStream() {
+               assertThat(sendUri.getPayloadInputStream(), nullValue());
+       }
+
+       @Test
+       public void sendUriMessageWithDescriptionHasADataLengthField() {
+               sendUri.setDescription("Hällo Wőrld");
+               assertThat(sendUri.getField("DataLength"), equalTo("13"));
+       }
+
+       @Test
+       public void sendUriMessageWithDescriptionHasPayload() {
+               sendUri.setDescription("Hällo Wőrld");
+               assertThat(sendUri.getPayloadInputStream(), equalTo("Hällo Wőrld".getBytes(UTF_8)));
+       }
+
+       private final SendUri sendUri = new SendUri("identifier", "node-identifier", "uri");
+
+}