From 5e2a970c350441a1dbc11d2f9097bcc0e599abab Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 4 Mar 2017 23:15:49 +0200 Subject: Add scenario for Steven cloning ops/secrets --- 000.yarn | 24 ++++++++++++++++++++---- yarnhelper.py | 2 +- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/000.yarn b/000.yarn index eb55f75..a9f5030 100644 --- a/000.yarn +++ b/000.yarn @@ -225,6 +225,12 @@ groups, and respositories. THEN steven cannot push qvarn FINALLY admin removes things that were created + SCENARIO Steven can't clone ops/secrets + WHEN admin creates user steven + AND admin creates repository ops/secrets + THEN steven cannot clone ops/secrets + 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 @@ -272,7 +278,6 @@ groups, and respositories. cliapp.runcmd(['git', 'commit', '-mfoo'], cwd=dirname, env=env) cliapp.runcmd(['git', 'push', 'origin', 'HEAD'], cwd=dirname, env=env) - IMPLEMENTS WHEN admin sets (\S+) config (\S+) to (\S+) repo = helper.get_next_match() key = helper.get_next_match() @@ -284,9 +289,20 @@ groups, and respositories. repo = helper.get_next_match() url = helper.repo_ssh_url(repo) dirname = helper.local_checkout_dirname(user, repo) - helper.git_as(user, ['clone', url, dirname]) - cliapp.runcmd(['git', 'config', 'user.email', user], cwd=dirname) - cliapp.runcmd(['git', 'config', 'user.name', user], cwd=dirname) + exit, out, err = helper.git_as(user, ['clone', url, dirname]) + helper.assertEqual(exit, 0) + env = dict(os.environ) + env['GIT_SSH_COMMAND'] = helper.env_ssh_command(user) + cliapp.runcmd(['git', 'config', 'user.email', user], cwd=dirname, env=env) + cliapp.runcmd(['git', 'config', 'user.name', user], cwd=dirname, env=env) + + IMPLEMENTS THEN (\S+) cannot clone (\S+) + user = helper.get_next_match() + repo = helper.get_next_match() + url = helper.repo_ssh_url(repo) + dirname = helper.local_checkout_dirname(user, repo) + exit, out, err = helper.git_as(user, ['clone', url, dirname]) + helper.assertNotEqual(exit, 0) IMPLEMENTS THEN we can clone (\S+) via the git protocol repo = helper.get_next_match() diff --git a/yarnhelper.py b/yarnhelper.py index db2f9d3..069387c 100644 --- a/yarnhelper.py +++ b/yarnhelper.py @@ -154,7 +154,7 @@ class YarnHelper(object): server = os.environ['GITANO_SERVER'] env = dict(os.environ) env['GIT_SSH_COMMAND'] = self.env_ssh_command(user) - return cliapp.runcmd( + return cliapp.runcmd_unchecked( ['git'] + args, stderr=subprocess.STDOUT, env=env) -- cgit v1.2.1