From: David ‘Bombe’ Roden Date: Mon, 6 Jan 2025 09:06:44 +0000 (+0100) Subject: ✨ Add SendURI message X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=906171ca97b7fcb11cac4df29214cd97305ef7f6;p=jFCPlib.git ✨ Add SendURI message --- diff --git a/src/main/java/net/pterodactylus/fcp/SendUri.java b/src/main/java/net/pterodactylus/fcp/SendUri.java new file mode 100644 index 0000000..a127e4b --- /dev/null +++ b/src/main/java/net/pterodactylus/fcp/SendUri.java @@ -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 index 0000000..2a73df7 --- /dev/null +++ b/src/test/java/net/pterodactylus/fcp/SendUriTest.java @@ -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"); + +}