public void testRedirectPutFailureNonRepeatableStream()

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


    public void testRedirectPutFailureNonRepeatableStream() throws Exception {
        File repositoryDirectory = getRepositoryDirectory();
        FileUtils.deleteDirectory(repositoryDirectory);
        repositoryDirectory.mkdirs();

        Server redirectServer = new Server();

        addConnector(redirectServer);

        RedirectHandler redirectHandler =
                new RedirectHandler("See Other", HttpServletResponse.SC_SEE_OTHER, "/redirectRequest/foo", null);

        redirectServer.setHandler(redirectHandler);

        redirectServer.start();

        try {
            StreamingWagon wagon = (StreamingWagon) getWagon();

            Properties params = new Properties();
            params.put("http.protocol.expect-continue", "%b,false");
            setHttpConfiguration(wagon, new Properties(), params);
            Repository repository = new Repository("foo", getRepositoryUrl(redirectServer));
            wagon.connect(repository);

            File sourceFile = new File(repositoryDirectory, "/redirectRequest/foo/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);
                // This does not behave as expected because LightweightWagon does buffering by default
                if (wagon.getClass().getName().contains("Lightweight")) {
                    assertTrue(true);
                } else {
                    fail();
                }
            } catch (TransferFailedException e) {
                assertTrue(true);
            } finally {
                wagon.disconnect();
                tempFile.delete();
            }

        } finally {
            redirectServer.stop();
        }
    }