Merge pull request #205 from cdent/fix-165

Avoid duplicating prefix when re-using urls
This commit is contained in:
Chris Dent 2017-03-03 14:07:29 +00:00 committed by GitHub
commit 31163305a0
3 changed files with 35 additions and 3 deletions

View File

@ -0,0 +1,20 @@
tests:
- name: provide a link
POST: /
request_headers:
content-type: application/json
data:
link: $ENVIRON['GABBI_PREFIX']/barnabas
relative: link
- name: get that link
GET: $RESPONSE['$.link']
response_headers:
x-gabbi-url: "///[a-f0-9:-]+$ENVIRON['GABBI_PREFIX']/barnabas/"
- name: get relative link
GET: $HISTORY['provide a link'].$RESPONSE['$.relative']
response_headers:
x-gabbi-url: "///[a-f0-9:-]+$ENVIRON['GABBI_PREFIX']/link/"

View File

@ -52,9 +52,20 @@ def create_url(base_url, host, port=None, prefix='', ssl=False):
query_string = parsed_url.query
path = parsed_url.path
# Guard against a prefix of None
if prefix:
path = '%s%s' % (prefix, path)
# Guard against a prefix of None or the url already having the
# prefix. Without the startswith check, the tests in prefix.yaml
# fail. This is a pragmatic fix which does this for any URL in a
# test request that does not have a scheme and does not
# distinguish between URLs in a gabbi test file and those
# generated by the server. Idealy we would not mutate nor need
# to check URLs returned from the server. Doing that, however,
# would require more complex data handling than we have now and
# this covers most common cases and will be okay until someone
# reports a bug.
if prefix and not path.startswith(prefix):
prefix = prefix.rstrip('/')
path = path.lstrip('/')
path = '%s/%s' % (prefix, path)
return urlparse.urlunsplit((scheme, netloc, path, query_string, ''))

View File

@ -8,6 +8,7 @@ deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
install_command = pip install -U {opts} {packages}
commands = python setup.py testr --testr-args="{posargs}"
setenv = GABBI_PREFIX=
passenv = GABBI_* HOME
[testenv:venv]