public void testRedirectPutFailureNonRepeatableStream()

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


    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();
            }
        }