Skip to content

Commit

Permalink
Bugfix for jsonrainbow#424 - add '?' for query string (jsonrainbow#425)
Browse files Browse the repository at this point in the history
Note that this bugfix will cause empty query strings to be dropped (e.g.
http://example.com?#blue becomes http://example.com#blue). This is
because the '?' character is deliberately not captured as part of the
query string, and the testsuite expects to be able to pass an empty
query string and *not* have the '?' added for that case.
  • Loading branch information
erayd committed Jun 5, 2017
1 parent 14973ed commit f120ce1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/JsonSchema/Uri/UriResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ public function generate(array $components)
. $components['authority']
. $components['path'];

if (array_key_exists('query', $components)) {
$uri .= $components['query'];
if (array_key_exists('query', $components) && strlen($components['query'])) {
$uri .= '?' . $components['query'];
}
if (array_key_exists('fragment', $components)) {
$uri .= '#' . $components['fragment'];
Expand Down
18 changes: 18 additions & 0 deletions tests/Uri/UriResolverTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -172,4 +172,22 @@ public function testResolveEmpty()
)
);
}

public function testReversable()
{
$uri = 'scheme://user:password@authority/path?query#fragment';
$split = $this->resolver->parse($uri);

// check that the URI was split as expected
$this->assertEquals(array(
'scheme' => 'scheme',
'authority' => 'user:password@authority',
'path' => '/path',
'query' => 'query',
'fragment' => 'fragment'
), $split);

// check that the recombined URI matches the original input
$this->assertEquals($uri, $this->resolver->generate($split));
}
}

0 comments on commit f120ce1

Please sign in to comment.