diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | testing/03-force-pushing.yarn | 34 |
2 files changed, 35 insertions, 1 deletions
@@ -39,7 +39,7 @@ TESTS := 01-basics 02-commands-as 02-commands-config 02-commands-copy \ 02-commands-keyring \ 02-commands-ls 02-commands-rename 02-commands-rsync \ 02-commands-sshkey 02-commands-user 02-commands-whoami 03-cgit-support \ - 03-shallow-push 03-treedelta-rules + 03-shallow-push 03-treedelta-rules 03-force-pushing MODS := gitano \ diff --git a/testing/03-force-pushing.yarn b/testing/03-force-pushing.yarn new file mode 100644 index 0000000..5d8e98a --- /dev/null +++ b/testing/03-force-pushing.yarn @@ -0,0 +1,34 @@ +<!-- -*- Markdown -*- --> + +Force Pushing +============= + +The default ruleset of Gitano denies force-pushing to everyone except the +`gitano-admin` group by default; requiring that projects explicitly enable it +if they want it. The theory being that it can be permitted for some branches +but not others, and by deny-by-default, it encourages project owners to think +hard before granting force-push. + + SCENARIO alice cannot force-push by default + + GIVEN a standard instance + AND a unix user called alice + AND alice has keys called main + + WHEN testinstance, using adminkey, adds user alice, using alice main + AND testinstance adminkey runs create testrepo alice + AND alice, using main, clones testrepo as testrepo + THEN alice testrepo has no file called FOO + + WHEN alice applies add-a-FOO.patch in testrepo + AND alice, using main, pushes testrepo to testrepo.git + THEN the output contains new branch + + WHEN alice amends testrepo with oh well never mind + AND alice, using main, expecting failure, pushes testrepo to testrepo.git + THEN the output contains non-fast-forward + + WHEN alice, using main, expecting failure, force-pushes testrepo to testrepo.git + THEN stderr contains denied action + + FINALLY the instance is torn down |