Skip to content

Commit d9c4dec

Browse files
YspadaddenMario EberhardtPl0ch
authored
support non-root paths in base_uri (#62)
* 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 <mario.eberhard@bertschi.com> Co-authored-by: Thomas Ploch <profiploch@gmail.com>
1 parent 5932063 commit d9c4dec

File tree

2 files changed

+27
-27
lines changed

2 files changed

+27
-27
lines changed

src/Requests/Functions.php

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ function allSubjectsRequest(): RequestInterface
2323
{
2424
return new Request(
2525
'GET',
26-
'/subjects',
26+
'subjects',
2727
ACCEPT_HEADER
2828
);
2929
}
@@ -32,7 +32,7 @@ function allSubjectVersionsRequest(string $subjectName): RequestInterface
3232
{
3333
return new Request(
3434
'GET',
35-
(new UriTemplate())->expand('/subjects/{name}/versions', ['name' => $subjectName]),
35+
(new UriTemplate())->expand('subjects/{name}/versions', ['name' => $subjectName]),
3636
ACCEPT_HEADER
3737
);
3838
}
@@ -42,7 +42,7 @@ function singleSubjectVersionRequest(string $subjectName, string $versionId): Re
4242
return new Request(
4343
'GET',
4444
(new UriTemplate())->expand(
45-
'/subjects/{name}/versions/{id}',
45+
'subjects/{name}/versions/{id}',
4646
['name' => $subjectName, 'id' => $versionId]
4747
),
4848
ACCEPT_HEADER
@@ -53,7 +53,7 @@ function registerNewSchemaVersionWithSubjectRequest(string $schema, string $subj
5353
{
5454
return new Request(
5555
'POST',
56-
(new UriTemplate())->expand('/subjects/{name}/versions', ['name' => $subjectName]),
56+
(new UriTemplate())->expand('subjects/{name}/versions', ['name' => $subjectName]),
5757
CONTENT_TYPE_HEADER + ACCEPT_HEADER,
5858
prepareJsonSchemaForTransfer(validateSchemaStringAsJson($schema), ...$references)
5959
);
@@ -64,7 +64,7 @@ function checkSchemaCompatibilityAgainstVersionRequest(string $schema, string $s
6464
return new Request(
6565
'POST',
6666
(new UriTemplate())->expand(
67-
'/compatibility/subjects/{name}/versions/{version}',
67+
'compatibility/subjects/{name}/versions/{version}',
6868
['name' => $subjectName, 'version' => $versionId]
6969
),
7070
CONTENT_TYPE_HEADER + ACCEPT_HEADER,
@@ -76,7 +76,7 @@ function checkIfSubjectHasSchemaRegisteredRequest(string $subjectName, string $s
7676
{
7777
return new Request(
7878
'POST',
79-
(new UriTemplate())->expand('/subjects/{name}', ['name' => $subjectName]),
79+
(new UriTemplate())->expand('subjects/{name}', ['name' => $subjectName]),
8080
CONTENT_TYPE_HEADER + ACCEPT_HEADER,
8181
prepareJsonSchemaForTransfer(validateSchemaStringAsJson($schema))
8282
);
@@ -86,7 +86,7 @@ function schemaRequest(string $id): RequestInterface
8686
{
8787
return new Request(
8888
'GET',
89-
(new UriTemplate())->expand('/schemas/ids/{id}', ['id' => $id]),
89+
(new UriTemplate())->expand('schemas/ids/{id}', ['id' => $id]),
9090
ACCEPT_HEADER
9191
);
9292
}
@@ -95,7 +95,7 @@ function defaultCompatibilityLevelRequest(): RequestInterface
9595
{
9696
return new Request(
9797
'GET',
98-
'/config',
98+
'config',
9999
ACCEPT_HEADER
100100
);
101101
}
@@ -104,7 +104,7 @@ function changeDefaultCompatibilityLevelRequest(string $level): RequestInterface
104104
{
105105
return new Request(
106106
'PUT',
107-
'/config',
107+
'config',
108108
ACCEPT_HEADER,
109109
prepareCompatibilityLevelForTransport(validateCompatibilityLevel($level))
110110
);
@@ -114,7 +114,7 @@ function subjectCompatibilityLevelRequest(string $subjectName): RequestInterface
114114
{
115115
return new Request(
116116
'GET',
117-
(new UriTemplate())->expand('/config/{subject}', ['subject' => $subjectName]),
117+
(new UriTemplate())->expand('config/{subject}', ['subject' => $subjectName]),
118118
ACCEPT_HEADER
119119
);
120120
}
@@ -123,7 +123,7 @@ function changeSubjectCompatibilityLevelRequest(string $subjectName, string $lev
123123
{
124124
return new Request(
125125
'PUT',
126-
(new UriTemplate())->expand('/config/{subject}', ['subject' => $subjectName]),
126+
(new UriTemplate())->expand('config/{subject}', ['subject' => $subjectName]),
127127
ACCEPT_HEADER,
128128
prepareCompatibilityLevelForTransport(validateCompatibilityLevel($level))
129129
);
@@ -208,7 +208,7 @@ function deleteSubjectRequest(string $subjectName): RequestInterface
208208
{
209209
return new Request(
210210
'DELETE',
211-
(new UriTemplate())->expand('/subjects/{name}', ['name' => $subjectName]),
211+
(new UriTemplate())->expand('subjects/{name}', ['name' => $subjectName]),
212212
ACCEPT_HEADER
213213
);
214214
}
@@ -222,7 +222,7 @@ function deleteSubjectVersionRequest(string $subjectName, string $versionId): Re
222222
{
223223
return new Request(
224224
'DELETE',
225-
(new UriTemplate())->expand('/subjects/{name}/versions/{version}', ['name' => $subjectName, 'version' => $versionId]),
225+
(new UriTemplate())->expand('subjects/{name}/versions/{version}', ['name' => $subjectName, 'version' => $versionId]),
226226
ACCEPT_HEADER
227227
);
228228
}

test/Requests/FunctionsTest.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function it_should_produce_a_Request_to_get_all_subjects(): void
5151
$request = allSubjectsRequest();
5252

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

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

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

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

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

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

9494
self::assertEquals('POST', $request->getMethod());
95-
self::assertEquals('/subjects/test/versions', $request->getUri());
95+
self::assertEquals('subjects/test/versions', $request->getUri());
9696
self::assertEquals(ACCEPT_HEADER[ACCEPT_HEADER_KEY], $request->getHeader(ACCEPT_HEADER_KEY)[0]);
9797
self::assertEquals(CONTENT_TYPE_HEADER[CONTENT_TYPE_HEADER_KEY], $request->getHeader(CONTENT_TYPE_HEADER_KEY)[0]);
9898
self::assertJsonStringEqualsJsonString($finalSchema, $request->getBody()->getContents());
@@ -143,7 +143,7 @@ public function it_should_produce_a_request_to_check_schema_compatibility_agains
143143
);
144144

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 commit comments

Comments
 (0)