X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fquelaton%2FDefaultFcpClientTest.java;fp=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fquelaton%2FDefaultFcpClientTest.java;h=61a7d0a484f5f95a174f1d34ea95ea84b85a96b2;hb=63b09b59276e7f5d469df8085e85b0ee79c9d680;hp=0a39451b89990c0becdb8a76b217f15db789daf5;hpb=6090cca7d3eedfc2c8e41c8ff162f4705519705c;p=jFCPlib.git diff --git a/src/test/java/net/pterodactylus/fcp/quelaton/DefaultFcpClientTest.java b/src/test/java/net/pterodactylus/fcp/quelaton/DefaultFcpClientTest.java index 0a39451..61a7d0a 100644 --- a/src/test/java/net/pterodactylus/fcp/quelaton/DefaultFcpClientTest.java +++ b/src/test/java/net/pterodactylus/fcp/quelaton/DefaultFcpClientTest.java @@ -1299,6 +1299,30 @@ public class DefaultFcpClientTest { connectAndAssert(() -> matchesFcpMessage("ClientGet", "URI=KSK@foo.txt", "Global=true")); } + @Test + public void clientGetFollowsRedirect() throws InterruptedException, ExecutionException, IOException { + Future> data = fcpClient.clientGet().uri("USK@foo/bar").execute(); + connectAndAssert(() -> matchesFcpMessage("ClientGet", "URI=USK@foo/bar")); + replyWithRedirect("USK@foo/baz"); + readMessage(() -> matchesFcpMessage("ClientGet", "URI=USK@foo/baz")); + replyWithAllData(identifier, "Hello", "text/plain;charset=utf-8"); + verifyData(data.get()); + } + + @Test + public void clientGetNotifiesListenersOnRedirect() throws IOException, ExecutionException, InterruptedException { + List redirects = new ArrayList<>(); + Future> data = fcpClient.clientGet().onRedirect(redirects::add).uri("USK@foo/bar").execute(); + connectAndAssert(() -> matchesFcpMessage("ClientGet", "URI=USK@foo/bar")); + replyWithRedirect("USK@foo/baz"); + readMessage(() -> matchesFcpMessage("ClientGet", "URI=USK@foo/baz")); + replyWithRedirect("USK@foo/quux"); + readMessage(() -> matchesFcpMessage("ClientGet", "URI=USK@foo/quux")); + replyWithAllData(identifier, "Hello", "text/plain;charset=utf-8"); + verifyData(data.get()); + assertThat(redirects, contains("USK@foo/baz", "USK@foo/quux")); + } + private void replyWithGetFailed(String identifier) throws IOException { fcpServer.writeLine( "GetFailed", @@ -1308,6 +1332,16 @@ public class DefaultFcpClientTest { ); } + private void replyWithRedirect(String newUri) throws IOException { + fcpServer.writeLine( + "GetFailed", + "Identifier=" + identifier, + "Code=27", + "RedirectURI=" + newUri, + "EndMessage" + ); + } + private void replyWithAllData(String identifier, String text, String contentType) throws IOException { fcpServer.writeLine( "AllData",