# Scenario step implementations (local and remote instances) ## HTTP requests of various kinds IMPLEMENTS WHEN user makes request GET (\S+) path = get_next_match() token = cat('token.jwt') url = vars['url'] status, content_type, body = get(url + path, token) vars['status_code'] = status vars['content_type'] = content_type vars['body'] = body IMPLEMENTS WHEN user makes request POST (\S+) (.+) path = get_next_match() body_text = get_next_match() print('path', path) print('body', body_text) token = cat('token.jwt') url = vars['url'] status, content_type, body = post(url + path, body_text, token) vars['status_code'] = status vars['content_type'] = content_type vars['body'] = body IMPLEMENTS WHEN user makes request PUT (\S+) (.+) path = get_next_match() body_text = get_next_match() print('path', path) print('body', body_text) token = cat('token.jwt') url = vars['url'] status, content_type, body = put(url + path, body_text, token) vars['status_code'] = status vars['content_type'] = content_type vars['body'] = body IMPLEMENTS WHEN user makes request DELETE (\S+) path = get_next_match() token = cat('token.jwt') url = vars['url'] status, content_type, body = delete(url + path, token) vars['status_code'] = status vars['content_type'] = content_type vars['body'] = body ## HTTP response inspection IMPLEMENTS THEN result has status code (\d+) print(cat('token.jwt')) expected = int(get_next_match()) assertEqual(expected, vars['status_code']) IMPLEMENTS THEN body matches (.+) expected_text = get_next_match() expected = json.loads(expected_text) print('actual body', repr(vars['body'])) actual = json.loads(vars['body']) assertEqual(expected, actual) IMPLEMENTS THEN version in body matches version from setup.py body = vars['body'] obj = json.loads(body) actual = obj['version'] setup_py = os.path.join(srcdir, 'setup.py') wanted = cliapp.runcmd(['python3', setup_py, '--version']).strip() assertTrue(wanted.startswith(actual))