CGI-Info

 view release on metacpan or  search on metacpan

t/is_robot.t  view on Meta::CPAN


		CHI->import;
	};
	my $cache;

	if($@) {
		diag('CHI not installed');
	} else {
		diag("Using CHI $CHI::VERSION");
		$cache = CHI->new(driver => 'RawMemory', global => 1);
		$cache->on_set_error('die');
		$cache->on_get_error('die');
	}

	$ENV{'REMOTE_ADDR'} = '74.92.149.57';
	$ENV{'HTTP_USER_AGENT'} = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.7; en-US; rv:1.9.2.20) Gecko/20110803 Firefox/3.6.20';

	$i = new_ok('CGI::Info' => [{
		cache => $cache,
		logger => \@messages
	}]);
	ok($i->is_robot() == 0);
	SKIP: {
		skip 'Test requires CHI access', 2 unless($cache);
		cmp_ok($cache->get("74.92.149.57/$ENV{HTTP_USER_AGENT}"), 'eq', 'unknown', 'cache sets unknown');
		ok(!defined($cache->get("74.92.149.58/$ENV{HTTP_USER_AGENT}")));
	}
	$ENV{'REMOTE_ADDR'} = '66.249.83.131';
	$ENV{'HTTP_USER_AGENT'} = 'Mozilla/5.0 (Linux; Android 4.4.4; SAMSUNG-SGH-I337 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36';
	$i = new_ok('CGI::Info' => [
		logger => \@messages,
	]);
	ok($i->is_robot() == 0);

	$ENV{'HTTP_REFERER'} = 'http://free-video-tool.com';
	$i = new_ok('CGI::Info' => [
		logger => \@messages,
	]);
	$i->cache($cache);
	$i->set_logger(logger => MyLogger->new());
	ok($i->is_robot() == 1);
	SKIP: {
		skip 'Test requires CHI access', 2 unless($cache);
		cmp_ok($cache->get("66.249.83.131/$ENV{HTTP_USER_AGENT}"), 'eq', 'robot', 'cache sets robot');
		ok(!defined($cache->get("74.92.149.58/$ENV{HTTP_USER_AGENT}")));
	}

	$ENV{'HTTP_REFERER'} = 'http://0.tqn.com/d/d/spae.gif)';
	$i = new_ok('CGI::Info' => [
		logger => \@messages,
	]);
	$i->cache($cache);
	$i->set_logger(MyLogger->new());
	ok($i->is_robot() == 1);
	cmp_ok($i->status(), '==', 200, 'Default HTTP status is 200');

	$ENV{'HTTP_USER_AGENT'} = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh) AppleWebKit/522.11.3 (KHTML, like Gecko) Version/3.0 Safari/522.11.3\") OR EXTRACTVALUE(2534,CONCAT(0x5c,0x7170767871,(SELECT (ELT(2534=2534,1))),0x716b627171)) AND (\"OqXr\"=\"...
	delete $ENV{'HTTP_REFERER'};
	$i = new_ok('CGI::Info');
	ok($i->is_robot());
	cmp_ok($i->status(), '==', 403, 'Check HTTP_USER_AGENT SQL Injection is blocked');
}



( run in 1.584 second using v1.01-cache-2.11-cpan-5735350b133 )