Skip to content

Commit

Permalink
support non-root paths in base_uri (#62)
Browse files Browse the repository at this point in the history
* support non-root paths in base_uri

resolves #61

Given a Guzzle client with a base uri like
`http://example.com/myregistryliveshere/`.

Requests where created with a relative path with a leading `/`.
Guzzle interprets this as a path from the root and replaces
`/myregistryliveshere/` with the given path.

To make Guzzle combine the path correctly with the given
base_uri, the relative path must not start with a `/`. Then
it is appended at the end of the base_uri, preserving the
path in the base_uri.

* fixed unit tests for Functions.php

After removing the leading "/" from the requests the unit tests
failed, because they still expected the leading "/". So removed
this from the tests as well to match the code in Functions
again.

Co-authored-by: Mario Eberhard <[email protected]>
Co-authored-by: Thomas Ploch <[email protected]>
  • Loading branch information
3 people authored Aug 12, 2021
1 parent 5932063 commit d9c4dec
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 27 deletions.
26 changes: 13 additions & 13 deletions src/Requests/Functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ function allSubjectsRequest(): RequestInterface
{
return new Request(
'GET',
'/subjects',
'subjects',
ACCEPT_HEADER
);
}
Expand All @@ -32,7 +32,7 @@ function allSubjectVersionsRequest(string $subjectName): RequestInterface
{
return new Request(
'GET',
(new UriTemplate())->expand('/subjects/{name}/versions', ['name' => $subjectName]),
(new UriTemplate())->expand('subjects/{name}/versions', ['name' => $subjectName]),
ACCEPT_HEADER
);
}
Expand All @@ -42,7 +42,7 @@ function singleSubjectVersionRequest(string $subjectName, string $versionId): Re
return new Request(
'GET',
(new UriTemplate())->expand(
'/subjects/{name}/versions/{id}',
'subjects/{name}/versions/{id}',
['name' => $subjectName, 'id' => $versionId]
),
ACCEPT_HEADER
Expand All @@ -53,7 +53,7 @@ function registerNewSchemaVersionWithSubjectRequest(string $schema, string $subj
{
return new Request(
'POST',
(new UriTemplate())->expand('/subjects/{name}/versions', ['name' => $subjectName]),
(new UriTemplate())->expand('subjects/{name}/versions', ['name' => $subjectName]),
CONTENT_TYPE_HEADER + ACCEPT_HEADER,
prepareJsonSchemaForTransfer(validateSchemaStringAsJson($schema), ...$references)
);
Expand All @@ -64,7 +64,7 @@ function checkSchemaCompatibilityAgainstVersionRequest(string $schema, string $s
return new Request(
'POST',
(new UriTemplate())->expand(
'/compatibility/subjects/{name}/versions/{version}',
'compatibility/subjects/{name}/versions/{version}',
['name' => $subjectName, 'version' => $versionId]
),
CONTENT_TYPE_HEADER + ACCEPT_HEADER,
Expand All @@ -76,7 +76,7 @@ function checkIfSubjectHasSchemaRegisteredRequest(string $subjectName, string $s
{
return new Request(
'POST',
(new UriTemplate())->expand('/subjects/{name}', ['name' => $subjectName]),
(new UriTemplate())->expand('subjects/{name}', ['name' => $subjectName]),
CONTENT_TYPE_HEADER + ACCEPT_HEADER,
prepareJsonSchemaForTransfer(validateSchemaStringAsJson($schema))
);
Expand All @@ -86,7 +86,7 @@ function schemaRequest(string $id): RequestInterface
{
return new Request(
'GET',
(new UriTemplate())->expand('/schemas/ids/{id}', ['id' => $id]),
(new UriTemplate())->expand('schemas/ids/{id}', ['id' => $id]),
ACCEPT_HEADER
);
}
Expand All @@ -95,7 +95,7 @@ function defaultCompatibilityLevelRequest(): RequestInterface
{
return new Request(
'GET',
'/config',
'config',
ACCEPT_HEADER
);
}
Expand All @@ -104,7 +104,7 @@ function changeDefaultCompatibilityLevelRequest(string $level): RequestInterface
{
return new Request(
'PUT',
'/config',
'config',
ACCEPT_HEADER,
prepareCompatibilityLevelForTransport(validateCompatibilityLevel($level))
);
Expand All @@ -114,7 +114,7 @@ function subjectCompatibilityLevelRequest(string $subjectName): RequestInterface
{
return new Request(
'GET',
(new UriTemplate())->expand('/config/{subject}', ['subject' => $subjectName]),
(new UriTemplate())->expand('config/{subject}', ['subject' => $subjectName]),
ACCEPT_HEADER
);
}
Expand All @@ -123,7 +123,7 @@ function changeSubjectCompatibilityLevelRequest(string $subjectName, string $lev
{
return new Request(
'PUT',
(new UriTemplate())->expand('/config/{subject}', ['subject' => $subjectName]),
(new UriTemplate())->expand('config/{subject}', ['subject' => $subjectName]),
ACCEPT_HEADER,
prepareCompatibilityLevelForTransport(validateCompatibilityLevel($level))
);
Expand Down Expand Up @@ -208,7 +208,7 @@ function deleteSubjectRequest(string $subjectName): RequestInterface
{
return new Request(
'DELETE',
(new UriTemplate())->expand('/subjects/{name}', ['name' => $subjectName]),
(new UriTemplate())->expand('subjects/{name}', ['name' => $subjectName]),
ACCEPT_HEADER
);
}
Expand All @@ -222,7 +222,7 @@ function deleteSubjectVersionRequest(string $subjectName, string $versionId): Re
{
return new Request(
'DELETE',
(new UriTemplate())->expand('/subjects/{name}/versions/{version}', ['name' => $subjectName, 'version' => $versionId]),
(new UriTemplate())->expand('subjects/{name}/versions/{version}', ['name' => $subjectName, 'version' => $versionId]),
ACCEPT_HEADER
);
}
28 changes: 14 additions & 14 deletions test/Requests/FunctionsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public function it_should_produce_a_Request_to_get_all_subjects(): void
$request = allSubjectsRequest();

self::assertEquals('GET', $request->getMethod());
self::assertEquals('/subjects', $request->getUri());
self::assertEquals('subjects', $request->getUri());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
}

Expand All @@ -63,7 +63,7 @@ public function it_should_produce_a_Request_to_get_all_subject_versions(): void
$request = allSubjectVersionsRequest('test');

self::assertEquals('GET', $request->getMethod());
self::assertEquals('/subjects/test/versions', $request->getUri());
self::assertEquals('subjects/test/versions', $request->getUri());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
}

Expand All @@ -75,7 +75,7 @@ public function it_should_produce_a_Request_to_get_a_specific_subject_version():
$request = singleSubjectVersionRequest('test', '3');

self::assertEquals('GET', $request->getMethod());
self::assertEquals('/subjects/test/versions/3', $request->getUri());
self::assertEquals('subjects/test/versions/3', $request->getUri());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
}

Expand All @@ -92,7 +92,7 @@ public function it_should_produce_a_request_to_register_a_new_schema_version(str
$request = registerNewSchemaVersionWithSubjectRequest($initialSchema, 'test', ...$references);

self::assertEquals('POST', $request->getMethod());
self::assertEquals('/subjects/test/versions', $request->getUri());
self::assertEquals('subjects/test/versions', $request->getUri());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
self::assertEquals(CONTENT_TYPE_HEADER[CONTENT_TYPE_HEADER_KEY], $request->getHeader(CONTENT_TYPE_HEADER_KEY)[0]);
self::assertJsonStringEqualsJsonString($finalSchema, $request->getBody()->getContents());
Expand Down Expand Up @@ -143,7 +143,7 @@ public function it_should_produce_a_request_to_check_schema_compatibility_agains
);

self::assertEquals('POST', $request->getMethod());
self::assertEquals('/compatibility/subjects/test/versions/latest', $request->getUri());
self::assertEquals('compatibility/subjects/test/versions/latest', $request->getUri());
self::assertEquals('{"schema":"{\"type\":\"test\"}"}', $request->getBody()->getContents());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
self::assertEquals(CONTENT_TYPE_HEADER[CONTENT_TYPE_HEADER_KEY], $request->getHeader(CONTENT_TYPE_HEADER_KEY)[0]);
Expand All @@ -157,7 +157,7 @@ public function it_should_produce_a_request_to_check_if_a_subject_already_has_a_
$request = checkIfSubjectHasSchemaRegisteredRequest('test', '{"type":"test"}');

self::assertEquals('POST', $request->getMethod());
self::assertEquals('/subjects/test', $request->getUri());
self::assertEquals('subjects/test', $request->getUri());
self::assertEquals('{"schema":"{\"type\":\"test\"}"}', $request->getBody()->getContents());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
self::assertEquals(CONTENT_TYPE_HEADER[CONTENT_TYPE_HEADER_KEY], $request->getHeader(CONTENT_TYPE_HEADER_KEY)[0]);
Expand All @@ -171,7 +171,7 @@ public function it_should_produce_a_request_to_get_a_specific_schema_by_id(): vo
$request = schemaRequest('3');

self::assertEquals('GET', $request->getMethod());
self::assertEquals('/schemas/ids/3', $request->getUri());
self::assertEquals('schemas/ids/3', $request->getUri());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
}

Expand All @@ -183,7 +183,7 @@ public function it_should_produce_a_request_to_get_the_global_compatibility_leve
$request = defaultCompatibilityLevelRequest();

self::assertEquals('GET', $request->getMethod());
self::assertEquals('/config', $request->getUri());
self::assertEquals('config', $request->getUri());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
}

Expand All @@ -195,7 +195,7 @@ public function it_should_produce_a_request_to_change_the_global_compatibility_l
$request = changeDefaultCompatibilityLevelRequest(COMPATIBILITY_FULL);

self::assertEquals('PUT', $request->getMethod());
self::assertEquals('/config', $request->getUri());
self::assertEquals('config', $request->getUri());
self::assertEquals('{"compatibility":"FULL"}', $request->getBody()->getContents());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
}
Expand All @@ -208,7 +208,7 @@ public function it_should_produce_a_request_to_get_the_subject_compatibility_lev
$request = subjectCompatibilityLevelRequest('test');

self::assertEquals('GET', $request->getMethod());
self::assertEquals('/config/test', $request->getUri());
self::assertEquals('config/test', $request->getUri());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
}

Expand All @@ -220,7 +220,7 @@ public function it_should_produce_a_request_to_change_the_subject_compatibility_
$request = changeSubjectCompatibilityLevelRequest('test', COMPATIBILITY_FORWARD);

self::assertEquals('PUT', $request->getMethod());
self::assertEquals('/config/test', $request->getUri());
self::assertEquals('config/test', $request->getUri());
self::assertEquals('{"compatibility":"FORWARD"}', $request->getBody()->getContents());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
}
Expand Down Expand Up @@ -384,7 +384,7 @@ public function it_should_produce_a_valid_subject_deletion_request(): void
$request = deleteSubjectRequest('test');

self::assertEquals('DELETE', $request->getMethod());
self::assertEquals('/subjects/test', $request->getUri());
self::assertEquals('subjects/test', $request->getUri());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
}

Expand All @@ -396,13 +396,13 @@ public function it_should_produce_a_valid_subject_version_deletion_request(): vo
$request = deleteSubjectVersionRequest('test', VERSION_LATEST);

self::assertEquals('DELETE', $request->getMethod());
self::assertEquals('/subjects/test/versions/latest', $request->getUri());
self::assertEquals('subjects/test/versions/latest', $request->getUri());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);

$request = deleteSubjectVersionRequest('test', '5');

self::assertEquals('DELETE', $request->getMethod());
self::assertEquals('/subjects/test/versions/5', $request->getUri());
self::assertEquals('subjects/test/versions/5', $request->getUri());
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
}
}

0 comments on commit d9c4dec

Please sign in to comment.