diff options
author | Daniel Silverstone <daniel.silverstone@codethink.co.uk> | 2017-05-13 15:14:47 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2017-07-02 11:56:43 +0100 |
commit | aedd1964a467e4f9aaca49ca5fa2bb40a81e1ca8 (patch) | |
tree | 14891672f6f66442bfcbf72b1d33144d428c53bb /testing | |
parent | 015aebc6b6227f9103977aa2824e5234fd25093f (diff) | |
download | gitano-aedd1964a467e4f9aaca49ca5fa2bb40a81e1ca8.tar.gz |
Add hook testsdsilvers/hooks
Basic hook tests which verify preauth commandline and post receive hooks.
Diffstat (limited to 'testing')
-rw-r--r-- | testing/01-hooks.yarn | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/testing/01-hooks.yarn b/testing/01-hooks.yarn new file mode 100644 index 0000000..b3e4413 --- /dev/null +++ b/testing/01-hooks.yarn @@ -0,0 +1,73 @@ +<!-- -*- markdown -*- --> +Basic hook support tests +======================== + +In these tests we verify the various hooks function at some basic level. + +For example, we check that we can abort some of the hooks and that we can +alter behaviour or add behaviour to certain hooks which might commonly be +used for the sorts of things plugins want. + +Preauthorization commandline hook +--------------------------------- + +The preauth_cmdline hook is used to allow plugins to adjust (or reject) the +parsed command line before Gitano even looks up what command it might be for. +This could be used to add aliases for certain commands, or just stop things +from happening... + + SCENARIO preauth_cmdline can be manipulated + GIVEN a standard instance + + WHEN testinstance adminkey runs ls + THEN stdout contains gitano-admin + + GIVEN HOOK_ABORT is in the environment set to PREAUTH_CMDLINE + + WHEN testinstance adminkey, expecting failure, runs ls + THEN stderr contains Aborted on request + + GIVEN HOOK_ABORT is not in the environment + AND HOOK_DECLINE is in the environment set to PREAUTH_CMDLINE + + WHEN testinstance adminkey, expecting failure, runs ls + THEN stderr contains Declined on request + + GIVEN HOOK_DECLINE is not in the environment + AND PREAUTH_CMDLINE_REMOVEME is in the environment set to 1 + + WHEN testinstance adminkey runs removeme ls + THEN stdout contains gitano-admin + + GIVEN PREAUTH_CMDLINE_REMOVEME is not in the environment + + WHEN testinstance adminkey, expecting failure, runs removeme ls + THEN stderr contains removeme + + FINALLY the instance is torn down + +Post Receieve hook +------------------ + +The `POST_RECEIVE` hook allows plugins to perform actions during post-receive. +This is after the commits have made it into the repository, and after the refs +have been updated. The `POST_RECEIVE` hook gets given the set of updates which +were applied to the repository and it gets to take action. Generally we don't +recommend that hooks _stop_ the chain, but they can, which lets us do things +like preventing Supple running. + + SCENARIO supple isn't even considered when post_receive hooks "stop" + ASSUMING gitano is being accessed over ssh + + GIVEN a standard instance + AND testinstance using adminkey has patched gitano-admin with post-receive-alert.patch + AND HOOK_DECLINE is in the environment set to POST_RECEIVE + WHEN testinstance using adminkey clones gitano-admin.git as gitano-admin + AND testinstance using adminkey pushes an empty commit in gitano-admin + WHEN testinstance using bypasskey pushes an empty commit in gitano-admin + THEN the output does not contain PERIL + AND the output does not contain CRITICAL FAILURE + AND the output does not contain XYZZY + AND the output contains HOOKFUNC_STOPPED + + FINALLY the instance is torn down |