summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-03-04 23:05:54 +0200
committerLars Wirzenius <liw@liw.fi>2017-03-04 23:05:54 +0200
commit9e45024d451eb800afde6dbece0759882db1e1d4 (patch)
tree4cd32d2745c1c7e24f72a0a14135a265dcf3f973
parent6866c32f7ff18f98493cefbcc57cbdc7e1ed3dbe (diff)
downloadgit.liw.fi-ruleset-tests-9e45024d451eb800afde6dbece0759882db1e1d4.tar.gz
Add scenrio for Steven not being allowed to push
-rw-r--r--000.yarn32
-rw-r--r--yarnhelper.py2
2 files changed, 32 insertions, 2 deletions
diff --git a/000.yarn b/000.yarn
index 008cba4..eb55f75 100644
--- a/000.yarn
+++ b/000.yarn
@@ -211,6 +211,20 @@ groups, and respositories.
THEN ian can push qvarn
FINALLY admin removes things that were created
+ SCENARIO Steven can clone Qvarn but not push changes
+ WHEN admin creates user steven
+ AND admin creates group qvarn-readers
+ AND admin adds steven to qvarn-readers
+ AND admin creates repository qvarn
+ AND admin sets qvarn config readers to qvarn-readers
+ AND admin sets qvarn config writers to qvarn-writers
+ THEN steven can clone qvarn
+ WHEN steven creates qvarn branch bugfix
+ AND steven changes qvarn branch bugfix
+ AND steven merges qvarn branch bugfix to master
+ THEN steven cannot push qvarn
+ FINALLY admin removes things that were created
+
SCENARIO everyone can clone a public repository
WHEN admin creates repository qvarn
AND admin sets qvarn config public to yes
@@ -301,8 +315,24 @@ groups, and respositories.
IMPLEMENTS THEN (\S+) can push (\S+)
user = helper.get_next_match()
repo = helper.get_next_match()
+ url = helper.repo_ssh_url(repo)
dirname = helper.local_checkout_dirname(user, repo)
- cliapp.runcmd(['git', 'push', '--all', 'origin'], cwd=dirname)
+ env = dict(os.environ)
+ env['GIT_SSH_COMMAND'] = helper.env_ssh_command(user)
+ cliapp.runcmd(['git', 'push', '--all', 'origin'], cwd=dirname, env=env)
+
+
+ IMPLEMENTS THEN (\S+) cannot push (\S+)
+ user = helper.get_next_match()
+ repo = helper.get_next_match()
+ dirname = helper.local_checkout_dirname(user, repo)
+ env = dict(os.environ)
+ env['GIT_SSH_COMMAND'] = helper.env_ssh_command(user)
+ exit, out, err = cliapp.runcmd_unchecked(
+ ['git', 'push', '--all', 'origin'], cwd=dirname, env=env)
+ sys.stdout.write(out)
+ sys.stderr.write(err)
+ helper.assertNotEqual(exit, 0)
IMPLEMENTS WHEN (\S+) merges (\S+) branch (\S+) to (\S+)
user = helper.get_next_match()
diff --git a/yarnhelper.py b/yarnhelper.py
index 7192b06..db2f9d3 100644
--- a/yarnhelper.py
+++ b/yarnhelper.py
@@ -142,7 +142,7 @@ class YarnHelper(object):
return f.read()
def ssh_key_file_for_user(self, user): # pragma: no cover
- return '{}.key'.format(user)
+ return os.path.abspath('{}.key'.format(user))
def repo_ssh_url(self, repo): # pragma: no cover
return 'ssh://git@{}/{}'.format(os.environ['GITANO_SERVER'], repo)