The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -wT

use Test::Most tests => 14;

BEGIN {
	require_ok('CGI::Untaint::Twitter');
	# use_ok('CGI::Untaint::Twitter', { consumer_key => 'xxxx' etc. });
}

TWITTER: {
	# Check regular expression checker
	my $regex = CGI::Untaint::Twitter::_untaint_re();
	ok('nigelhorne' =~ $regex, 'valid Twitter ID');
	ok('@nigelhorne' =~ $regex, 'valid Twitter ID');
	ok('%%*%' !~ $regex, 'invalid Twitter ID');

	use_ok('CGI::Untaint');
	SKIP: {
		skip 'Twitter API1.1 needs authentication', 9;

		my $vars = {
		    twitter1 => 'nigelhorne',
		    twitter2 => '@nigelhorne',
		    twitter3 => ' @nigelhorne',
		    twitter4 => '  @nigelhorne ',
		    twitter5 => 'shf#*)',
		    twitter6 => ' ',
		    twitter7 => '@',
		    twitter8 => '@EcclestonBrass',
		};

		my $untainter = new_ok('CGI::Untaint' => [ $vars ]);
		my $c = $untainter->extract(-as_Twitter => 'twitter1');
		is($c, 'nigelhorne', 'nigelhorne');

		$c = $untainter->extract(-as_Twitter => 'twitter2');
		is($c, 'nigelhorne', '@nigelhorne');

		$c = $untainter->extract(-as_Twitter => 'twitter3');
		is($c, 'nigelhorne', '@nigelhorne');

		$c = $untainter->extract(-as_Twitter => 'twitter4');
		is($c, 'nigelhorne', '@nigelhorne');

		$c = $untainter->extract(-as_Twitter => 'twitter5');
		is($c, undef, 'Junk');

		# and what about empty fields?
		$c = $untainter->extract(-as_Twitter => 'twitter6');
		is($c, undef, 'Empty');

		$c = $untainter->extract(-as_Twitter => 'twitter7');
		is($c, undef, 'At sign');

		$c = $untainter->extract(-as_Twitter => 'twitter8');
		is($c, 'EcclestonBrass', 'EcclestonBrass');
	}
}