summaryrefslogtreecommitdiff
path: root/yarns/900-implements.yarn
diff options
context:
space:
mode:
Diffstat (limited to 'yarns/900-implements.yarn')
-rw-r--r--yarns/900-implements.yarn87
1 files changed, 58 insertions, 29 deletions
diff --git a/yarns/900-implements.yarn b/yarns/900-implements.yarn
index 5468a6c..92acaa4 100644
--- a/yarns/900-implements.yarn
+++ b/yarns/900-implements.yarn
@@ -1,6 +1,6 @@
<!--
-Copyright 2017-2018 Lars Wirzenius
+Copyright 2017-2019 Lars Wirzenius
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
@@ -32,47 +32,66 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
IMPLEMENTS WHEN (\S+) makes request GET (\S+)
user = get_next_match()
path = get_next_match()
+ path = expand_vars(path, V)
token = get_token(user)
- url = vars['url']
- http(vars, get, url + path, token=token)
+ url = V['url']
+ http(V, get, url + path, token=token)
IMPLEMENTS WHEN (\S+) retrieves (\S+) from artifact store
user = get_next_match()
path = get_next_match()
token = get_token(user)
- url = vars['bsurl']
- http(vars, get_blob, url + path, token=token)
+ url = V['url']
+ version = get_version(url)
+ asurl = version['artifact_store']
+ http(V, get_blob, asurl + path, token=token)
+
+ IMPLEMENTS WHEN (\S+) deletes (\S+) from artifact store
+ user = get_next_match()
+ path = get_next_match()
+ token = get_token(user)
+ url = V['url']
+ version = get_version(url)
+ asurl = version['artifact_store']
+ http(V, delete, asurl + path, token=token)
IMPLEMENTS WHEN (\S+) makes request GET (\S+) with an invalid token
user = get_next_match()
path = get_next_match()
token = get_token(user)
- url = vars['url']
- http(vars, get, url + path, token='invalid')
+ url = V['url']
+ http(V, get, url + path, token='invalid')
IMPLEMENTS WHEN (\S+) makes request POST (\S+) with a valid token and body (.+)
user = get_next_match()
path = get_next_match()
body = get_next_match()
+ body = expand_vars(body, V)
+ V['xxxPOSTbodyvalid'] = body
token = get_token(user)
- url = vars['url']
- http(vars, post, url + path, body=body, token=token)
+ url = V['url']
+ http(V, post, url + path, body=body, token=token)
IMPLEMENTS WHEN (\S+) makes request POST (\S+) with an invalid token and body (.+)
user = get_next_match()
path = get_next_match()
body = get_next_match()
+ body = expand_vars(body, V)
+ V['xxxPOSTbody'] = body
token = get_token(user)
- url = vars['url']
- http(vars, post, url + path, body=body, token='invalid')
+ url = V['url']
+ http(V, post, url + path, body=body, token='invalid')
IMPLEMENTS WHEN (\S+) makes request PUT (\S+) with a valid token and body (.+)
user = get_next_match()
path = get_next_match()
+ path = expand_vars(path, V)
body = get_next_match()
+ body = expand_vars(body, V)
+ V['xxxPUTbody'] = body
token = get_token(user)
- url = vars['url']
- http(vars, put, url + path, body=body, token=token)
+ url = V['url']
+ http(V, put, url + path, body=body, token=token)
IMPLEMENTS WHEN (\S+) sends blob (\S+) to artifact store as (\S+)
user = get_next_match()
@@ -80,34 +99,44 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
path = get_next_match()
body = cat(filename)
token = get_token(user)
- url = vars['bsurl']
- http(vars, put_blob, url + path, body=body, token=token)
+ url = V['url']
+ version = get_version(url)
+ asurl = version['artifact_store']
+ http(V, put_blob, asurl + path, body=body, token=token)
IMPLEMENTS WHEN (\S+) makes request PUT (\S+) with an invalid token
user = get_next_match()
path = get_next_match()
+ path = expand_vars(path, V)
body = '{}'
token = get_token(user)
- url = vars['url']
- http(vars, put, url + path, body=body, token='invalid')
+ url = V['url']
+ http(V, put, url + path, body=body, token='invalid')
IMPLEMENTS WHEN (\S+) makes request DELETE (\S+)
user = get_next_match()
path = get_next_match()
+ path = expand_vars(path, V)
token = get_token(user)
- url = vars['url']
- http(vars, delete, url + path, token=token)
+ url = V['url']
+ http(V, delete, url + path, token=token)
## HTTP response inspection
+ IMPLEMENTS THEN worker id is (\S+)
+ varname = get_next_match()
+ body = json.loads(V['body'])
+ V[varname] = body['worker']
+
IMPLEMENTS THEN result has status code (\d+)
expected = int(get_next_match())
- assertEqual(expected, vars['status_code'])
+ assertEqual(expected, V['status_code'])
IMPLEMENTS THEN body matches (.+)
expected_text = get_next_match()
+ expected_text = expand_vars(expected_text, V)
expected = json.loads(expected_text)
- actual = json.loads(vars['body'])
+ actual = json.loads(V['body'])
print 'expected'
json.dump(expected, sys.stdout, indent=4, sort_keys=True)
print
@@ -121,7 +150,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
IMPLEMENTS THEN body text contains "(.*)"
pattern = unescape(get_next_match())
- text = vars['body']
+ text = V['body']
print 'pattern:', repr(pattern)
print 'text:', text
assertTrue(pattern in text)
@@ -129,11 +158,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
IMPLEMENTS THEN body is the same as the blob (\S+)
filename = get_next_match()
blob = cat(filename)
- body = vars['body']
+ body = V['body']
assertEqual(body, blob)
IMPLEMENTS THEN version in body matches version from setup.py
- body = vars['body']
+ body = V['body']
obj = json.loads(body)
actual = obj['version']
setup_py = os.path.join(srcdir, 'setup.py')
@@ -143,13 +172,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
IMPLEMENTS THEN result has header (\S+): (\S+)
name = get_next_match()
value = get_next_match()
- headers = vars['headers']
+ headers = V['headers']
assertEqual(headers[name].lower(), value.lower())
IMPLEMENTS THEN result is step (.+)
step = json.loads(get_next_match())
print('expected step', step)
- body = json.loads(vars['body'])
+ body = json.loads(V['body'])
print('actual body', body)
actual_step = body['step']
print('actual step', actual_step)
@@ -160,14 +189,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
IMPLEMENTS WHEN (\S+) requests list of builds
user = get_next_match()
token = get_token(user)
- url = vars['url']
+ url = V['url']
path = '/builds'
- http(vars, get, url + path, token=token)
+ http(V, get, url + path, token=token)
IMPLEMENTS THEN the list of builds is (.+)
expected = set(json.loads(get_next_match()))
print('expected', expected)
- body = json.loads(vars['body'])['builds']
+ body = json.loads(V['body'])['builds']
print('body', body)
builds = set(build['build_id'] for build in body)
assertEqual(builds, expected)