summaryrefslogtreecommitdiffstats
path: root/debian/perl-framework/t/modules/usertrack.t
diff options
context:
space:
mode:
Diffstat (limited to 'debian/perl-framework/t/modules/usertrack.t')
-rw-r--r--debian/perl-framework/t/modules/usertrack.t74
1 files changed, 74 insertions, 0 deletions
diff --git a/debian/perl-framework/t/modules/usertrack.t b/debian/perl-framework/t/modules/usertrack.t
new file mode 100644
index 0000000..d9f62da
--- /dev/null
+++ b/debian/perl-framework/t/modules/usertrack.t
@@ -0,0 +1,74 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+use Apache::TestRequest;
+
+my @testcases = (
+ ['/modules/usertrack/foo.html'],
+ ['/modules/usertrack/bar.html'],
+ ['/modules/usertrack/foo.html'],
+ ['/modules/usertrack/bar.html'],
+);
+
+my $iters = 100;
+my %cookiex = ();
+
+plan tests => (scalar (@testcases) * 2 + 2) * $iters + 1 + 3, need 'mod_usertrack';
+
+foreach (1..$iters) {
+ my $nb_req = 1;
+ my $cookie = "";
+
+ foreach my $t (@testcases) {
+ ##
+ my $r = GET($t->[0], "Cookie" => $cookie);
+
+ # Checking for return code
+ ok t_cmp($r->code, 200, "Checking return code is '200'");
+
+ # Checking for content
+ my $setcookie = $r->header('Set-Cookie');
+
+ # Only the first and third requests of an iteration must have a Set-Cookie
+ if ((($nb_req == 1) || ($nb_req == 3)) && (defined $setcookie)) {
+ ok defined $setcookie;
+
+ print "Set-Cookie: " . $setcookie . "\n";
+ # Copy the cookie in order to send it back in the next requests
+ $cookie = substr($setcookie, 0, index($setcookie, ";") );
+ print "Cookie: " . $cookie . "\n";
+
+ # This cookie must not have been already seen
+ ok !exists($cookiex{$cookie});
+ $cookiex{$cookie} = 1;
+ }
+ else {
+ ok !(defined $setcookie);
+ }
+
+ # After the 2nd request, we lie and send a modified cookie.
+ # So the 3rd request whould receive a new cookie
+ if ($nb_req == 2) {
+ $cookie = "X" . $cookie;
+ }
+
+ $nb_req++;
+ }
+}
+
+# Check the overall number of cookies generated
+ok ((scalar (keys %cookiex)) == ($iters * 2));
+
+# Check that opt-in flags aren't set
+my $r = GET("/modules/usertrack/foo.html");
+ok t_cmp($r->code, 200, "Checking return code is '200'");
+# Checking for content
+my $setcookie = $r->header('Set-Cookie');
+t_debug("$setcookie");
+ok defined $setcookie;
+$setcookie =~ m/(Secure|HTTPonly|SameSite)/i;
+ok t_cmp($1, undef);
+
+