pyresttest icon indicating copy to clipboard operation
pyresttest copied to clipboard

Double slash when templating a URL using a single variable

Open reox opened this issue 8 years ago • 0 comments

When using variables in templates as URL, pyresttest will add slashes if there is none present but also if the expanded form of the template has a starting slash:


---
- config:
    - testset: "Server Tests"
         - variable_binds: {foobar: '/foobar'}

- test:
    - name: "Test some URL"
    - url: {template: "$foobar"}

changing the variable to foobar and the url to {template: "/$foobar"} works fine. Otherwise it will produce double slashes: http://127.0.0.1//foobar

Interestingly, this does not happen, if there is something else than a single variable in the template:


---
- config:
    - testset: "Server Tests"
         - variable_binds: {foobar: '/foobar'}

- test:
    - name: "Test some URL"
    - url: {template: "$foobar/blafoo"}

It then contacts the correct url http://127.0.0.1/foobar/blafoo

I noticed this issue when using extracted variables as the next url, see http://stackoverflow.com/questions/39096872/double-slash-when-using-a-template-in-pyresttest

Edit: I see where the problem might coming from: Here https://github.com/svanoort/pyresttest/blob/53e105161bc0822a62599fa4c92ba208be2074e6/pyresttest/tests.py#L471 is the URL concatenated with the base_url. But this happens before the template is actually parsed. So urlparse.urljoin will of course add a slash if there is none. But that does not explain why the second yaml file works.

reox avatar Aug 23 '16 10:08 reox