Skip to content

Commit a2946cd

Browse files
committed
Fixing test suite after rebase massacre
1 parent db440b9 commit a2946cd

File tree

12 files changed

+80
-81
lines changed

12 files changed

+80
-81
lines changed

src/Exception/ExceptionMap.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ private function __construct()
3939
{
4040
$factoryFn = static function (string $exceptionClass): callable {
4141
return static function (int $errorCode, string $errorMessage) use ($exceptionClass): SchemaRegistryException {
42-
return new $exceptionClass($errorMessage, $errorCode);
42+
/** @var SchemaRegistryException $e */
43+
$e = new $exceptionClass($errorMessage, $errorCode);
44+
45+
return $e;
4346
};
4447
};
4548

@@ -84,7 +87,7 @@ public function hasMappableError(ResponseInterface $response): bool
8487

8588
/**
8689
* @param ResponseInterface $response
87-
* @return array<mixed, mixed>
90+
* @return array<string, mixed>
8891
*/
8992
private function guardAgainstMissingErrorCode(ResponseInterface $response): array
9093
{

src/Json.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ public static function validateStringAsJson(string $schema): string
2424

2525
/**
2626
* @param string $jsonString
27-
* @param int $depth
27+
* @param int<1, max> $depth
2828
*
29-
* @return mixed
29+
* @return mixed|array
3030
*
3131
* @throws JsonException
3232
*/

src/Registry/Decorators/CachingDecorator.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
use AvroSchema;
88
use Exception;
99
use FlixTech\SchemaRegistryApi\Exception\SchemaRegistryException;
10-
use FlixTech\SchemaRegistryApi\Schema\AvroReference;
10+
use FlixTech\SchemaRegistryApi\Registry;
1111
use FlixTech\SchemaRegistryApi\Registry\Cache\CacheAdapter;
12+
use FlixTech\SchemaRegistryApi\Schema\AvroReference;
1213
use GuzzleHttp\Promise\PromiseInterface;
1314
use function call_user_func;
1415

src/Registry/GuzzlePromiseAsyncRegistry.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
use FlixTech\SchemaRegistryApi\AsynchronousRegistry;
1010
use FlixTech\SchemaRegistryApi\Constants;
1111
use FlixTech\SchemaRegistryApi\Exception\ExceptionMap;
12-
use FlixTech\SchemaRegistryApi\Schema\AvroReference;
1312
use FlixTech\SchemaRegistryApi\Exception\RuntimeException;
1413
use FlixTech\SchemaRegistryApi\Exception\SchemaRegistryException;
1514
use FlixTech\SchemaRegistryApi\Json;
1615
use FlixTech\SchemaRegistryApi\Requests;
16+
use FlixTech\SchemaRegistryApi\Schema\AvroReference;
1717
use GuzzleHttp\ClientInterface;
1818
use GuzzleHttp\Exception\RequestException;
1919
use GuzzleHttp\Promise\PromiseInterface;

src/Registry/Psr18SyncRegistry.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use FlixTech\SchemaRegistryApi\Exception\SchemaRegistryException;
1414
use FlixTech\SchemaRegistryApi\Json;
1515
use FlixTech\SchemaRegistryApi\Requests;
16+
use FlixTech\SchemaRegistryApi\Schema\AvroReference;
1617
use FlixTech\SchemaRegistryApi\SynchronousRegistry;
1718
use Psr\Http\Client\ClientExceptionInterface;
1819
use Psr\Http\Client\ClientInterface;
@@ -37,9 +38,9 @@ public function __construct(ClientInterface $client)
3738
$this->map = ExceptionMap::instance();
3839
}
3940

40-
public function register(string $subject, AvroSchema $schema): int
41+
public function register(string $subject, AvroSchema $schema, AvroReference ...$references): int
4142
{
42-
$request = Requests::registerNewSchemaVersionWithSubjectRequest((string)$schema, $subject);
43+
$request = Requests::registerNewSchemaVersionWithSubjectRequest((string)$schema, $subject, ...$references);
4344

4445
$response = $this->makeRequest($request);
4546
$this->guardAgainstErrorResponse($response);

src/Requests.php

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace FlixTech\SchemaRegistryApi;
66

77
use Assert\Assert;
8+
use FlixTech\SchemaRegistryApi\Schema\AvroReference;
89
use GuzzleHttp\Psr7\Request;
910
use GuzzleHttp\Psr7\Utils;
1011
use Psr\Http\Message\RequestInterface;
@@ -19,7 +20,7 @@ public static function allSubjectsRequest(): RequestInterface
1920
{
2021
return new Request(
2122
'GET',
22-
'/subjects',
23+
'subjects',
2324
Constants::ACCEPT_HEADER
2425
);
2526
}
@@ -28,7 +29,7 @@ public static function allSubjectVersionsRequest(string $subjectName): RequestIn
2829
{
2930
return new Request(
3031
'GET',
31-
Utils::uriFor("/subjects/$subjectName/versions"),
32+
Utils::uriFor("subjects/$subjectName/versions"),
3233
Constants::ACCEPT_HEADER
3334
);
3435
}
@@ -37,37 +38,37 @@ public static function singleSubjectVersionRequest(string $subjectName, string $
3738
{
3839
return new Request(
3940
'GET',
40-
Utils::uriFor("/subjects/$subjectName/versions/$versionId"),
41+
Utils::uriFor("subjects/$subjectName/versions/$versionId"),
4142
Constants::ACCEPT_HEADER
4243
);
4344
}
4445

45-
public static function prepareJsonSchemaForTransfer(string $schema): string
46+
public static function prepareJsonSchemaForTransfer(string $schema, AvroReference ...$references): string
4647
{
47-
$decoded = Json::decode($schema);
48-
49-
if (is_array($decoded) && array_key_exists('schema', $decoded)) {
50-
return Json::encode($decoded);
51-
}
48+
$return = [
49+
'schema' => $schema
50+
];
5251

53-
return Json::encode(['schema' => Json::encode($decoded)]);
52+
return !$references
53+
? Json::encode($return)
54+
: Json::encode(array_merge($return, ['references' => $references]));
5455
}
5556

56-
public static function registerNewSchemaVersionWithSubjectRequest(string $schema, string $subjectName): RequestInterface
57+
public static function registerNewSchemaVersionWithSubjectRequest(string $schema, string $subjectName, AvroReference ...$references): RequestInterface
5758
{
5859
return new Request(
5960
'POST',
60-
Utils::uriFor("/subjects/$subjectName/versions"),
61+
Utils::uriFor("subjects/$subjectName/versions"),
6162
Constants::CONTENT_TYPE_HEADER + Constants::ACCEPT_HEADER,
62-
self::prepareJsonSchemaForTransfer(Json::validateStringAsJson($schema))
63+
self::prepareJsonSchemaForTransfer(Json::validateStringAsJson($schema), ...$references),
6364
);
6465
}
6566

6667
public static function checkSchemaCompatibilityAgainstVersionRequest(string $schema, string $subjectName, string $versionId): RequestInterface
6768
{
6869
return new Request(
6970
'POST',
70-
Utils::uriFor("/compatibility/subjects/$subjectName/versions/$versionId"),
71+
Utils::uriFor("compatibility/subjects/$subjectName/versions/$versionId"),
7172
Constants::CONTENT_TYPE_HEADER + Constants::ACCEPT_HEADER,
7273
self::prepareJsonSchemaForTransfer(Json::validateStringAsJson($schema))
7374
);
@@ -77,7 +78,7 @@ public static function checkIfSubjectHasSchemaRegisteredRequest(string $subjectN
7778
{
7879
return new Request(
7980
'POST',
80-
Utils::uriFor("/subjects/$subjectName"),
81+
Utils::uriFor("subjects/$subjectName"),
8182
Constants::CONTENT_TYPE_HEADER + Constants::ACCEPT_HEADER,
8283
self::prepareJsonSchemaForTransfer(Json::validateStringAsJson($schema))
8384
);
@@ -87,7 +88,7 @@ public static function schemaRequest(string $id): RequestInterface
8788
{
8889
return new Request(
8990
'GET',
90-
Utils::uriFor("/schemas/ids/$id"),
91+
Utils::uriFor("schemas/ids/$id"),
9192
Constants::ACCEPT_HEADER
9293
);
9394
}
@@ -96,7 +97,7 @@ public static function defaultCompatibilityLevelRequest(): RequestInterface
9697
{
9798
return new Request(
9899
'GET',
99-
'/config',
100+
'config',
100101
Constants::ACCEPT_HEADER
101102
);
102103
}
@@ -130,7 +131,7 @@ public static function changeDefaultCompatibilityLevelRequest(string $level): Re
130131
{
131132
return new Request(
132133
'PUT',
133-
'/config',
134+
'config',
134135
Constants::ACCEPT_HEADER,
135136
self::prepareCompatibilityLevelForTransport(self::validateCompatibilityLevel($level))
136137
);
@@ -140,7 +141,7 @@ public static function subjectCompatibilityLevelRequest(string $subjectName): Re
140141
{
141142
return new Request(
142143
'GET',
143-
Utils::uriFor("/config/$subjectName"),
144+
Utils::uriFor("config/$subjectName"),
144145
Constants::ACCEPT_HEADER
145146
);
146147
}
@@ -149,7 +150,7 @@ public static function changeSubjectCompatibilityLevelRequest(string $subjectNam
149150
{
150151
return new Request(
151152
'PUT',
152-
Utils::uriFor("/config/$subjectName"),
153+
Utils::uriFor("config/$subjectName"),
153154
Constants::ACCEPT_HEADER,
154155
self::prepareCompatibilityLevelForTransport(self::validateCompatibilityLevel($level))
155156
);
@@ -194,7 +195,7 @@ public static function deleteSubjectRequest(string $subjectName, bool $permanent
194195

195196
return new Request(
196197
'DELETE',
197-
Utils::uriFor("/subjects/$subjectName?permanent=$query"),
198+
Utils::uriFor("subjects/$subjectName?permanent=$query"),
198199
Constants::ACCEPT_HEADER
199200
);
200201
}
@@ -211,7 +212,7 @@ public static function deleteSubjectVersionRequest(string $subjectName, string $
211212

212213
return new Request(
213214
'DELETE',
214-
Utils::uriFor("/subjects/$subjectName/versions/$versionId?permanent=$query"),
215+
Utils::uriFor("subjects/$subjectName/versions/$versionId?permanent=$query"),
215216
Constants::ACCEPT_HEADER
216217
);
217218
}

src/Requests/Functions.php

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
use Assert\Assert;
66
use GuzzleHttp\Psr7\Request;
7-
use GuzzleHttp\Psr7\Utils;
87
use InvalidArgumentException;
98
use JsonException;
109
use Psr\Http\Message\RequestInterface;
@@ -21,10 +20,11 @@
2120
use const FlixTech\SchemaRegistryApi\Constants\VERSION_LATEST;
2221
use function implode;
2322
use function json_decode;
23+
use function sprintf;
2424

2525
/**
2626
* @param string $jsonString
27-
* @param int $depth
27+
* @param int<1, max> $depth
2828
*
2929
* @return mixed
3030
*
@@ -82,7 +82,7 @@ function allSubjectsRequest(): RequestInterface
8282
{
8383
return new Request(
8484
'GET',
85-
'/subjects',
85+
'subjects',
8686
ACCEPT_HEADER
8787
);
8888
}
@@ -98,7 +98,7 @@ function allSubjectVersionsRequest(string $subjectName): RequestInterface
9898
{
9999
return new Request(
100100
'GET',
101-
Utils::uriFor("/subjects/$subjectName/versions"),
101+
sprintf("subjects/%s/versions", $subjectName),
102102
ACCEPT_HEADER
103103
);
104104
}
@@ -115,7 +115,7 @@ function singleSubjectVersionRequest(string $subjectName, string $versionId): Re
115115
{
116116
return new Request(
117117
'GET',
118-
Utils::uriFor("/subjects/$subjectName/versions/$versionId"),
118+
sprintf("subjects/%s/versions/%s", $subjectName, $versionId),
119119
ACCEPT_HEADER
120120
);
121121
}
@@ -133,7 +133,7 @@ function registerNewSchemaVersionWithSubjectRequest(string $schema, string $subj
133133
{
134134
return new Request(
135135
'POST',
136-
Utils::uriFor("/subjects/$subjectName/versions"),
136+
sprintf("subjects/%s/versions", $subjectName),
137137
CONTENT_TYPE_HEADER + ACCEPT_HEADER,
138138
prepareJsonSchemaForTransfer(validateSchemaStringAsJson($schema))
139139
);
@@ -153,7 +153,7 @@ function checkSchemaCompatibilityAgainstVersionRequest(string $schema, string $s
153153
{
154154
return new Request(
155155
'POST',
156-
Utils::uriFor("/compatibility/subjects/$subjectName/versions/$versionId"),
156+
sprintf("compatibility/subjects/%s/versions/%s", $subjectName, $versionId),
157157
CONTENT_TYPE_HEADER + ACCEPT_HEADER,
158158
prepareJsonSchemaForTransfer(validateSchemaStringAsJson($schema))
159159
);
@@ -172,7 +172,7 @@ function checkIfSubjectHasSchemaRegisteredRequest(string $subjectName, string $s
172172
{
173173
return new Request(
174174
'POST',
175-
Utils::uriFor("/subjects/$subjectName"),
175+
sprintf("subjects/%s", $subjectName),
176176
CONTENT_TYPE_HEADER + ACCEPT_HEADER,
177177
prepareJsonSchemaForTransfer(validateSchemaStringAsJson($schema))
178178
);
@@ -188,7 +188,7 @@ function schemaRequest(string $id): RequestInterface
188188
{
189189
return new Request(
190190
'GET',
191-
Utils::uriFor("/schemas/ids/$id"),
191+
sprintf("schemas/ids/%s", $id),
192192
ACCEPT_HEADER
193193
);
194194
}
@@ -202,7 +202,7 @@ function defaultCompatibilityLevelRequest(): RequestInterface
202202
{
203203
return new Request(
204204
'GET',
205-
'/config',
205+
'config',
206206
ACCEPT_HEADER
207207
);
208208
}
@@ -219,7 +219,7 @@ function changeDefaultCompatibilityLevelRequest(string $level): RequestInterface
219219
{
220220
return new Request(
221221
'PUT',
222-
'/config',
222+
'config',
223223
ACCEPT_HEADER,
224224
prepareCompatibilityLevelForTransport(validateCompatibilityLevel($level))
225225
);
@@ -236,7 +236,7 @@ function subjectCompatibilityLevelRequest(string $subjectName): RequestInterface
236236
{
237237
return new Request(
238238
'GET',
239-
Utils::uriFor("/config/$subjectName"),
239+
sprintf("config/%s", $subjectName),
240240
ACCEPT_HEADER
241241
);
242242
}
@@ -254,7 +254,7 @@ function changeSubjectCompatibilityLevelRequest(string $subjectName, string $lev
254254
{
255255
return new Request(
256256
'PUT',
257-
Utils::uriFor("/config/$subjectName"),
257+
sprintf("config/%s", $subjectName),
258258
ACCEPT_HEADER,
259259
prepareCompatibilityLevelForTransport(validateCompatibilityLevel($level))
260260
);
@@ -377,7 +377,7 @@ function deleteSubjectRequest(string $subjectName): RequestInterface
377377
{
378378
return new Request(
379379
'DELETE',
380-
Utils::uriFor("/subjects/$subjectName"),
380+
sprintf("subjects/%s", $subjectName),
381381
ACCEPT_HEADER
382382
);
383383
}
@@ -394,7 +394,7 @@ function deleteSubjectVersionRequest(string $subjectName, string $versionId): Re
394394
{
395395
return new Request(
396396
'DELETE',
397-
Utils::uriFor("/subjects/$subjectName/versions/$versionId"),
397+
sprintf("subjects/%s/versions/%s", $subjectName, $versionId),
398398
ACCEPT_HEADER
399399
);
400400
}

test/IntegrationTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use GuzzleHttp\Client;
1818
use GuzzleHttp\ClientInterface;
1919
use GuzzleHttp\Exception\RequestException;
20-
use GuzzleHttp\Psr7\Utils;
2120
use PHPUnit\Framework\TestCase;
2221
use Psr\Http\Message\ResponseInterface;
2322

0 commit comments

Comments
 (0)