summaryrefslogtreecommitdiff
path: root/testing/03-force-pushing.yarn
blob: 5d8e98a6c60bdff16ce015fe6334640281a184bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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