summaryrefslogtreecommitdiffstats
path: root/t/perm-default-roles.t
diff options
context:
space:
mode:
Diffstat (limited to 't/perm-default-roles.t')
-rwxr-xr-xt/perm-default-roles.t169
1 files changed, 169 insertions, 0 deletions
diff --git a/t/perm-default-roles.t b/t/perm-default-roles.t
new file mode 100755
index 0000000..c417903
--- /dev/null
+++ b/t/perm-default-roles.t
@@ -0,0 +1,169 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+# this is hardcoded; change it if needed
+use lib "src/lib";
+use Gitolite::Test;
+
+# permissions using role names
+# ----------------------------------------------------------------------
+
+try "plan 33";
+try "DEF POK = !/DENIED/; !/failed to push/";
+
+my $rb = `gitolite query-rc -n GL_REPO_BASE`;
+
+try "pwd";
+my $od = text();
+chomp($od);
+
+my $t;
+
+confreset; confadd '
+ @g1 = u1
+ @g2 = u2
+ @g3 = u3
+ @g4 = u4
+ repo foo/CREATOR/..*
+ C = @g1 @g2
+ RW+ = CREATOR
+ - refs/tags/ = WRITERS
+ RW = WRITERS
+ R = READERS
+
+ repo bar/CREATOR/..*
+ C = @g3 @g4
+ RW+ = CREATOR
+ - refs/tags/ = WRITERS
+ RW = WRITERS
+ R = READERS
+';
+
+try "ADMIN_PUSH set1; !/FATAL/" or die text();
+
+# create repos - 1; no gl-perms files expected
+try "
+
+cd ..
+
+# make foo/u1/u1r1
+glt clone u1 file:///foo/u1/u1r1
+ /Initialized empty Git repository in .*/foo/u1/u1r1.git//
+
+# make bar/u3/u3r1
+glt clone u3 file:///bar/u3/u3r1
+ /Initialized empty Git repository in .*/bar/u3/u3r1.git//
+
+cd u3r1
+";
+
+try "cd $rb; find . -name gl-perms; cd $od"; cmp text(), '';
+
+# enable set-default-roles feature
+try "
+ cat $ENV{HOME}/.gitolite.rc
+ perl s/# 'set-default-roles'/'set-default-roles'/
+ put $ENV{HOME}/.gitolite.rc
+";
+
+# create repos - 2; empty gl-perms files expected
+try "
+
+cd ..
+
+# make foo/u1/u1r2
+glt clone u1 file:///foo/u1/u1r2
+ /Initialized empty Git repository in .*/foo/u1/u1r2.git//
+
+# make bar/u3/u3r2
+glt clone u3 file:///bar/u3/u3r2
+ /Initialized empty Git repository in .*/bar/u3/u3r2.git//
+
+cd u3r2
+";
+
+try "cd $rb; find . -name gl-perms";
+$t = md5sum(sort (lines()));
+cmp $t, 'd41d8cd98f00b204e9800998ecf8427e ./bar/u3/u3r2.git/gl-perms
+d41d8cd98f00b204e9800998ecf8427e ./foo/u1/u1r2.git/gl-perms
+';
+try "cd $od";
+
+# enable per repo default roles
+confadd '
+ repo foo/CREATOR/..*
+ option default.roles-1 = READERS u3
+ option default.roles-2 = WRITERS u4
+
+ repo bar/CREATOR/..*
+ option default.roles-1 = READERS u5
+';
+
+try "ADMIN_PUSH set1; !/FATAL/" or die text();
+
+# create repos - 3; filled gl-perms expected
+try "
+
+cd ..
+
+gitolite access foo/u1/u1r3 u4 W
+ !ok
+ !/refs/../
+ /W any foo/u1/u1r3 u4 DENIED by fallthru/
+
+# make foo/u1/u1r3
+glt clone u1 file:///foo/u1/u1r3
+ /Initialized empty Git repository in .*/foo/u1/u1r3.git//
+
+gitolite access foo/u1/u1r3 u4 W
+ ok
+ /refs/../
+ !/W any foo/u1/u1r3 u4 DENIED by fallthru/
+
+# make bar/u3/u3r3
+glt clone u3 file:///bar/u3/u3r3
+ /Initialized empty Git repository in .*/bar/u3/u3r3.git//
+
+cd u3r3
+";
+
+try "cd $rb; find . -name gl-perms";
+$t = md5sum(sort (lines()));
+cmp $t, 'd41d8cd98f00b204e9800998ecf8427e ./bar/u3/u3r2.git/gl-perms
+b09856c1addc8e46f6ce0d21a666a633 ./bar/u3/u3r3.git/gl-perms
+d41d8cd98f00b204e9800998ecf8427e ./foo/u1/u1r2.git/gl-perms
+1b5af29692fad391318573bbe633b476 ./foo/u1/u1r3.git/gl-perms
+';
+try "cd $od";
+
+# add perms to an old repo
+try "
+echo WRITERS \@h1 | glt perms u1 -c foo/u1/u1r1
+";
+
+try "cd $rb; find . -name gl-perms";
+$t = md5sum(sort (lines()));
+cmp $t, 'd41d8cd98f00b204e9800998ecf8427e ./bar/u3/u3r2.git/gl-perms
+b09856c1addc8e46f6ce0d21a666a633 ./bar/u3/u3r3.git/gl-perms
+f8f0fd8e139ddb64cd5572914b98750a ./foo/u1/u1r1.git/gl-perms
+d41d8cd98f00b204e9800998ecf8427e ./foo/u1/u1r2.git/gl-perms
+1b5af29692fad391318573bbe633b476 ./foo/u1/u1r3.git/gl-perms
+';
+try "cd $od";
+
+# add perms to a new repo
+try "
+echo WRITERS \@h2 | glt perms u1 -c foo/u1/u1r4
+";
+
+try "cd $rb; find . -name gl-perms";
+$t = md5sum(sort (lines()));
+cmp $t, 'd41d8cd98f00b204e9800998ecf8427e ./bar/u3/u3r2.git/gl-perms
+b09856c1addc8e46f6ce0d21a666a633 ./bar/u3/u3r3.git/gl-perms
+f8f0fd8e139ddb64cd5572914b98750a ./foo/u1/u1r1.git/gl-perms
+d41d8cd98f00b204e9800998ecf8427e ./foo/u1/u1r2.git/gl-perms
+1b5af29692fad391318573bbe633b476 ./foo/u1/u1r3.git/gl-perms
+df17cd2d47e4d99642d7c5ce4093d115 ./foo/u1/u1r4.git/gl-perms
+';
+try "cd $od";