public void testRedirectPutFileRelativeUrl()

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


    public void testRedirectPutFileRelativeUrl()
        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 );

        RedirectHandler redirectHandler =
            new RedirectHandler( "See Other", HttpServletResponse.SC_SEE_OTHER, "/redirectRequest/foo",
                                 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, "/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
            {
                wagon.put( tempFile, "test-secured-put-resource" );
                assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) );

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

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