public void testRedirectPutFromStreamWithFullUrl()

in wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java [658:725]


    public void testRedirectPutFromStreamWithFullUrl() throws Exception {
        Server realServer = new Server();

        addConnector(realServer);

        File repositoryDirectory = getRepositoryDirectory();
        FileUtils.deleteDirectory(repositoryDirectory);
        repositoryDirectory.mkdirs();

        PutHandler putHandler = new PutHandler(repositoryDirectory);

        realServer.setHandler(putHandler);

        realServer.start();

        Server redirectServer = new Server();

        addConnector(redirectServer);

        String protocol = getProtocol();

        // protocol is wagon protocol but in fact dav is http(s)
        if (protocol.equals("dav")) {
            protocol = "http";
        }

        if (protocol.equals("davs")) {
            protocol = "https";
        }

        String redirectUrl = protocol + "://localhost:" + getLocalPort(realServer);

        RedirectHandler redirectHandler =
                new RedirectHandler("See Other", HttpServletResponse.SC_SEE_OTHER, redirectUrl, repositoryDirectory);

        redirectServer.setHandler(redirectHandler);

        redirectServer.start();

        try {
            StreamingWagon wagon = (StreamingWagon) getWagon();
            Repository repository = new Repository("foo", getRepositoryUrl(redirectServer));
            wagon.connect(repository);

            File sourceFile = new File(repositoryDirectory, "test-secured-put-resource");
            sourceFile.delete();
            assertFalse(sourceFile.exists());

            File tempFile = File.createTempFile("wagon", "tmp");
            tempFile.deleteOnExit();
            String content = "put top secret";
            FileUtils.fileWrite(tempFile.getAbsolutePath(), content);

            try (FileInputStream fileInputStream = new FileInputStream(tempFile)) {
                wagon.putFromStream(fileInputStream, "test-secured-put-resource", content.length(), -1);
                assertEquals(content, FileUtils.fileRead(sourceFile.getAbsolutePath()));

                checkRequestResponseForRedirectPutWithFullUrl(redirectHandler, putHandler);
            } finally {
                wagon.disconnect();
                tempFile.delete();
            }

        } finally {
            realServer.stop();
            redirectServer.stop();
        }
    }