diff options
Diffstat (limited to 't/personal-branches.t')
-rwxr-xr-x | t/personal-branches.t | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/t/personal-branches.t b/t/personal-branches.t new file mode 100755 index 0000000..8a08128 --- /dev/null +++ b/t/personal-branches.t @@ -0,0 +1,100 @@ +#!/usr/bin/perl +use strict; +use warnings; + +# this is hardcoded; change it if needed +use lib "src/lib"; +use Gitolite::Test; + +# personal branches +# ---------------------------------------------------------------------- + +try "plan 64"; + +confreset;confadd ' + @admins = admin dev1 + repo gitolite-admin + RW+ = admin + + repo testing + RW+ = @all + + @g1 = t1 + repo @g1 + R = u2 + RW = u3 + RW+ = u4 + RW a/USER/ = @all + RW+ p/USER/ = u1 u6 +'; + +try "ADMIN_PUSH set1; !/FATAL/" or die text(); + +try " + + gitolite access t1 u1; ok; /refs/heads/p/u1//; !/DENIED/ + gitolite access t1 u5; !ok; /\\+ any t1 u5 DENIED by fallthru/ + gitolite access \@g1 u5 W; ok; /refs/heads/a/u5//; !/DENIED/ + + gitolite access t1 u1 W refs/heads/a/user1/foo; !ok; /W refs/heads/a/user1/foo t1 u1 DENIED by fallthru/ + gitolite access \@g1 u1 + refs/heads/a/user1/foo; !ok; /\\+ refs/heads/a/user1/foo \@g1 u1 DENIED by fallthru/ + gitolite access t1 u1 W refs/heads/p/user1/foo; !ok; /W refs/heads/p/user1/foo t1 u1 DENIED by fallthru/ + gitolite access \@g1 u1 + refs/heads/p/user1/foo; !ok; /\\+ refs/heads/p/user1/foo \@g1 u1 DENIED by fallthru/ + + gitolite access \@g1 u1 W refs/heads/a/u1/foo; ok; /refs/heads/a/u1//; !/DENIED/ + gitolite access t1 u1 + refs/heads/a/u1/foo; !ok; /\\+ refs/heads/a/u1/foo t1 u1 DENIED by fallthru/ + gitolite access \@g1 u1 W refs/heads/p/u1/foo; ok; /refs/heads/p/u1//; !/DENIED/ + gitolite access t1 u1 + refs/heads/p/u1/foo; ok; /refs/heads/p/u1//; !/DENIED/ + + gitolite access \@g1 u1 W refs/heads/p/u2/foo; !ok; /W refs/heads/p/u2/foo \@g1 u1 DENIED by fallthru/ + gitolite access t1 u1 + refs/heads/p/u2/foo; !ok; /\\+ refs/heads/p/u2/foo t1 u1 DENIED by fallthru/ +"; + +confreset; confadd ' + @staff = u1 u2 u3 u4 u5 u6 + @gfoo = foo + repo @gfoo + RW+ = u1 u2 + RW+ p/USER/ = u3 u4 + RW temp = u5 u6 +'; + +try "ADMIN_PUSH set1; !/FATAL/" or die text(); + +try " + DEF OK = gitolite access foo %1 %2 refs/heads/%3; ok + DEF NOK = gitolite access foo %1 %2 refs/heads/%3; !ok +"; + +try " + +# u1 and u2 can push + OK u1 W master + OK u2 W master + OK u2 W p/u1/foo + OK u1 W p/u2/foo + OK u1 W p/u3/foo + +# u3 cant push u1/u4 personal branches + NOK u3 W p/u1/foo + NOK u3 W p/u4/doo + +# u4 can push u4 personal branch + OK u4 W p/u4/foo +# u5 push temp + OK u5 W temp + +# u1 and u2 can rewind + OK u1 + master + OK u2 + p/u1/foo + OK u1 + p/u2/foo + OK u1 + p/u3/foo + +# u3 cant rewind u1/u4 personal branches + NOK u3 + p/u1/foo + NOK u3 + p/u4/foo +# u4 can rewind u4 personal branch + OK u4 + p/u4/foo +# u5 cant rewind temp + NOK u5 + temp +"; |