The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl Net-FTPSSL.t'

#########################

# change 'tests => 1' to 'tests => last_test_to_print';
use strict;
use Test::More;

plan tests => 8;

BEGIN { use_ok('Net::FTPSSL') }

diag( "\nYou can also perform a deeper test." );
diag( "Some informations will be required for this test:" );
diag( "A secure ftp server address, a user, a password and a directory" );
diag( "where the user has permissions to read and write." );
my $more_test = ask_yesno("Do you want to make a deeper test");

SKIP: {
	skip "Deeper test skipped for some reason...", 8 unless $more_test;

	my( $address, $server, $port, $user, $pass, $mode, $dir ); 

	$address = ask("Server address ( host[:port] )");

	$mode = ask("\tConnection mode (I)mplicit or (E)xplicit. (default 'E')");

	$user = ask("\tUser (default 'anonymous')");

	$pass = ask("\tPassword (default 'user\@localhost')");
	
	$dir = ask("\tDirectory (default \/)");

	( $server, $port ) = split( /:/, $address );
	$port = 21 unless $port;
	$mode = EXP_CRYPT unless $mode =~ /(I|E)/;
	$user = 'anonymous' unless $user;
	$pass = 'user@localhost' unless $pass;

  my $ftp =
    Net::FTPSSL->new( $server, Port => $port, Encryption => $mode )
    or die "Can't open $server:$port";

  isa_ok( $ftp, 'Net::FTPSSL', 'Net::FTP object creation' );

  ok( $ftp->login( $user, $pass ), 'Login' );

	ok( $ftp->cwd( $dir ), "Changed the dir to $dir" );

  ok( scalar $ftp->list() != 0, 'list() command' );

	ok( $ftp->put( './t/test_file.tar.gz' ), 'puting a test file on $dir' );
	ok( $ftp->rename('test_file.tar.gz', 'test_file_new.tar.gz'), 'renaming it' );
	ok( $ftp->get('test_file_new.tar.gz', './t/test_file_new.tar.gz'), 'getting the renamed file' );
	ok( $ftp->delete('test_file_new.tar.gz'), 'deleting the test file' );

  $ftp->quit();
}

sub ask {
  my $question = shift;
  diag("\n$question ? ");

  my $answer = <STDIN>;
  chomp $answer;
  return $answer;
}

sub ask_yesno {

  my $question = shift;
  diag("\n$question ? [y/N]");

  my $answer = <STDIN>;
  chomp $answer;
  return $answer =~ /^y(es)*$/i ? 1 : 0;
}

# vim:ft=perl: