Skip to content

Commit e46e18d

Browse files
fix(testkit): WIP on testkit tests, added PHP_IDE_CONFIG to enable Xdebug in Docker
1 parent fa765ae commit e46e18d

12 files changed

+60
-169
lines changed

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ RUN apt-get update \
1212
&& mv test-reporter-latest-linux-amd64 /usr/bin/cc-test-reporter \
1313
&& chmod +x /usr/bin/cc-test-reporter \
1414
&& pecl install xdebug \
15-
&& docker-php-ext-enable xdebug && \
16-
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
15+
&& docker-php-ext-enable xdebug \
16+
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
1717

1818
WORKDIR /opt/project
1919

docker-compose.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,13 @@ services:
118118

119119
testkit_backend:
120120
<<: *common-php
121-
command: php ./testkit-backend/index.php
121+
environment:
122+
PHP_IDE_CONFIG: "serverName=myserver"
123+
command: php -d xdebug.mode=debug -d xdebug.start_with_request=yes -d xdebug.client_host=host.docker.internal ./testkit-backend/index.php
122124
networks:
123125
- neo4j
126+
extra_hosts:
127+
- "host.docker.internal:host-gateway"
124128
depends_on:
125129
- neo4j
126130
ports:

testkit-backend/src/Handlers/AbstractRunner.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public function handle($request): ResultResponse
6767
$this->getId($request),
6868
$exception instanceof Neo4jException ? $exception->getNeo4jCode() : 'n/a',
6969
$exception->getMessage(),
70+
$exception->getCode()
7071
));
7172
} else {
7273
$this->repository->addRecords($id, new FrontendErrorResponse(

testkit-backend/src/Handlers/NewDriver.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,20 @@ public function __construct(MainRepository $repository)
4040
*/
4141
public function handle($request): DriverResponse
4242
{
43-
$user = $request->getAuthToken()->getPrincipal();
44-
$pass = $request->getAuthToken()->getCredentials();
43+
$user = $request->authToken->principal;
44+
$pass = $request->authToken->credentials;
4545

46-
$ua = $request->getUserAgent();
47-
$timeout = $request->getConnectionTimeoutMs();
48-
$config = DriverConfiguration::default();
46+
$ua = $request->userAgent;
47+
$timeout = $request->connectionTimeoutMs;
48+
$config = DriverConfiguration::default()
49+
->withAcquireConnectionTimeout($timeout);
4950

5051
if ($ua) {
5152
$config = $config->withUserAgent($ua);
5253
}
5354

54-
$formatter = SummarizedResultFormatter::create();
5555
$authenticate = Authenticate::basic($user, $pass);
56-
$driver = DriverFactory::create($request->getUri(), $config, $authenticate, $timeout, $formatter);
56+
$driver = DriverFactory::create($request->uri, $config, $authenticate);
5757

5858
$id = Uuid::v4();
5959
$this->repository->addDriver($id, $driver);

testkit-backend/src/Handlers/NewSession.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,21 @@ public function __construct(MainRepository $repository)
3838
*/
3939
public function handle($request): SessionResponse
4040
{
41-
$driver = $this->repository->getDriver($request->getDriverId());
41+
$driver = $this->repository->getDriver($request->driverId);
4242

4343
$config = SessionConfiguration::default()
44-
->withAccessMode($request->getAccessMode() === 'r' ? AccessMode::READ() : AccessMode::WRITE());
44+
->withAccessMode($request->accessMode === 'r' ? AccessMode::READ() : AccessMode::WRITE());
4545

46-
if ($request->getBookmarks() !== null) {
47-
$config = $config->withBookmarks($request->getBookmarks());
46+
if ($request->bookmarks !== null) {
47+
$config = $config->withBookmarks($request->bookmarks);
4848
}
4949

50-
if ($request->getDatabase() !== null) {
51-
$config = $config->withDatabase($request->getDatabase());
50+
if ($request->database !== null) {
51+
$config = $config->withDatabase($request->database);
5252
}
5353

54-
if ($request->getFetchSize() !== null) {
55-
$config = $config->withFetchSize($request->getFetchSize());
54+
if ($request->fetchSize !== null) {
55+
$config = $config->withFetchSize($request->fetchSize);
5656
}
5757

5858
$session = $driver->createSession($config);

testkit-backend/src/MainRepository.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public function addRecords(Uuid $id, $result): void
113113
$this->records[$id->toRfc4122()] = $result;
114114
if ($result instanceof SummarizedResult) {
115115
/** @var SummarizedResult<CypherMap<OGMTypes>> $result */
116-
$this->recordIterators[$id->toRfc4122()] = $result->getIterator();
116+
$this->recordIterators[$id->toRfc4122()] = $result;
117117
}
118118
}
119119

testkit-backend/src/Requests/AuthorizationTokenRequest.php

Lines changed: 4 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,48 +15,9 @@
1515

1616
final class AuthorizationTokenRequest
1717
{
18-
private string $scheme;
19-
private string $principal;
20-
private string $credentials;
21-
private string $realm;
22-
private string $ticket;
23-
2418
public function __construct(
25-
string $scheme,
26-
string $principal,
27-
string $credentials,
28-
?string $realm = null,
29-
?string $ticket = null,
30-
) {
31-
$this->scheme = $scheme;
32-
$this->principal = $principal;
33-
$this->credentials = $credentials;
34-
$this->realm = $realm ?? '';
35-
$this->ticket = $ticket ?? '';
36-
}
37-
38-
public function getScheme(): string
39-
{
40-
return $this->scheme;
41-
}
42-
43-
public function getPrincipal(): string
44-
{
45-
return $this->principal;
46-
}
47-
48-
public function getCredentials(): string
49-
{
50-
return $this->credentials;
51-
}
52-
53-
public function getRealm(): string
54-
{
55-
return $this->realm;
56-
}
57-
58-
public function getTicket(): string
59-
{
60-
return $this->ticket;
61-
}
19+
public readonly string $scheme,
20+
public readonly string $principal,
21+
public readonly string $credentials
22+
) {}
6223
}

testkit-backend/src/Requests/NewDriverRequest.php

Lines changed: 18 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -22,58 +22,25 @@
2222
* file that was distributed with this source code.
2323
*/
2424

25+
namespace Laudis\Neo4j\TestkitBackend\Requests;
26+
2527
final class NewDriverRequest
2628
{
27-
private string $uri;
28-
private AuthorizationTokenRequest $authToken;
29-
private ?string $userAgent;
30-
private ?bool $resolverRegistered;
31-
private ?bool $domainNameResolverRegistered;
32-
private ?int $connectionTimeoutMs;
33-
3429
public function __construct(
35-
string $uri,
36-
AuthorizationTokenRequest $authToken,
37-
?string $userAgent = null,
38-
?bool $resolverRegistered = null,
39-
?bool $domainNameResolverRegistered = null,
40-
?int $connectionTimeoutMs = null,
41-
) {
42-
$this->uri = $uri;
43-
$this->authToken = $authToken;
44-
$this->userAgent = $userAgent;
45-
$this->resolverRegistered = $resolverRegistered;
46-
$this->domainNameResolverRegistered = $domainNameResolverRegistered;
47-
$this->connectionTimeoutMs = $connectionTimeoutMs;
48-
}
49-
50-
public function getUri(): string
51-
{
52-
return $this->uri;
53-
}
54-
55-
public function getAuthToken(): AuthorizationTokenRequest
56-
{
57-
return $this->authToken;
58-
}
59-
60-
public function getUserAgent(): ?string
61-
{
62-
return $this->userAgent;
63-
}
64-
65-
public function isResolverRegistered(): ?bool
66-
{
67-
return $this->resolverRegistered;
68-
}
69-
70-
public function isDomainNameResolverRegistered(): ?bool
71-
{
72-
return $this->domainNameResolverRegistered;
73-
}
74-
75-
public function getConnectionTimeoutMs(): ?int
76-
{
77-
return $this->connectionTimeoutMs;
78-
}
30+
public readonly string $uri,
31+
public readonly AuthorizationTokenRequest $authToken,
32+
public readonly ?string $authTokenManagerId = null,
33+
public readonly ?string $userAgent = null,
34+
public readonly ?bool $resolverRegistered = null,
35+
public readonly ?bool $domainNameResolverRegistered = null,
36+
public readonly ?int $connectionTimeoutMs = null,
37+
public readonly ?int $fetchSize = null,
38+
public readonly ?int $maxTxRetryTimeMs = null,
39+
public readonly ?int $livenessCheckTimeoutMs = null,
40+
public readonly ?int $maxConnectionPoolSize = null,
41+
public readonly ?int $connectionAcquisitionTimeoutMs = null,
42+
public readonly mixed $clientCertificate = null,
43+
public readonly ?string $clientCertificateProviderId = null
44+
) {}
7945
}
46+

testkit-backend/src/Requests/NewSessionRequest.php

Lines changed: 6 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -17,55 +17,17 @@
1717

1818
final class NewSessionRequest
1919
{
20-
private Uuid $driverId;
21-
private string $accessMode;
22-
/** @var iterable<string>|null */
23-
private ?iterable $bookmarks;
24-
private ?string $database;
25-
private ?int $fetchSize;
2620

2721
/**
2822
* @param iterable<string>|null $bookmarks
2923
*/
3024
public function __construct(
31-
Uuid $driverId,
32-
string $accessMode,
33-
?iterable $bookmarks,
34-
?string $database,
35-
?int $fetchSize,
25+
public Uuid $driverId,
26+
public string $accessMode,
27+
public ?iterable $bookmarks,
28+
public ?string $database,
29+
public ?int $fetchSize,
30+
public ?string $impersonatedUser
3631
) {
37-
$this->driverId = $driverId;
38-
$this->accessMode = $accessMode;
39-
$this->bookmarks = $bookmarks;
40-
$this->database = $database;
41-
$this->fetchSize = $fetchSize;
42-
}
43-
44-
public function getDriverId(): Uuid
45-
{
46-
return $this->driverId;
47-
}
48-
49-
public function getAccessMode(): string
50-
{
51-
return $this->accessMode;
52-
}
53-
54-
/**
55-
* @return iterable<string>|null
56-
*/
57-
public function getBookmarks(): ?iterable
58-
{
59-
return $this->bookmarks;
60-
}
61-
62-
public function getDatabase(): ?string
63-
{
64-
return $this->database;
65-
}
66-
67-
public function getFetchSize(): ?int
68-
{
69-
return $this->fetchSize;
7032
}
7133
}

testkit-backend/src/Requests/SessionRunRequest.php

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,17 @@ final class SessionRunRequest
2323
private iterable $params;
2424
/** @var iterable<string, scalar|iterable|null>|null */
2525
private ?iterable $txMeta;
26-
private ?int $timeout;
2726

2827
/**
2928
* @param iterable<string, array{name: string, data: array{value: iterable|scalar|null}}>|null $params
3029
* @param iterable<string, scalar|iterable|null>|null $txMeta
3130
*/
32-
public function __construct(Uuid $sessionId, string $cypher, ?iterable $params, ?iterable $txMeta, ?int $timeout)
31+
public function __construct(Uuid $sessionId, string $cypher, ?iterable $params, ?iterable $txMeta)
3332
{
3433
$this->sessionId = $sessionId;
3534
$this->cypher = $cypher;
3635
$this->params = $params ?? [];
3736
$this->txMeta = $txMeta;
38-
$this->timeout = $timeout;
3937
}
4038

4139
public function getSessionId(): Uuid
@@ -63,9 +61,4 @@ public function getTxMeta(): ?iterable
6361
{
6462
return $this->txMeta;
6563
}
66-
67-
public function getTimeout(): ?int
68-
{
69-
return $this->timeout;
70-
}
7164
}

0 commit comments

Comments
 (0)