summaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
authorDaniel Silverstone <daniel.silverstone@codethink.co.uk>2017-05-13 15:14:47 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2017-07-02 11:56:43 +0100
commitaedd1964a467e4f9aaca49ca5fa2bb40a81e1ca8 (patch)
tree14891672f6f66442bfcbf72b1d33144d428c53bb /testing
parent015aebc6b6227f9103977aa2824e5234fd25093f (diff)
downloadgitano-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.yarn73
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