Skip to content

Commit fd44f53

Browse files
committed
updated the unit test for request Factory
1 parent 96e67bb commit fd44f53

File tree

2 files changed

+123
-1
lines changed

2 files changed

+123
-1
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,3 @@ test
1212
#PHP-CS-FIXER
1313
.php-cs-fixer.php
1414
.php-cs-fixer.cache
15-
tests/Unit
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
<?php
2+
3+
namespace Neo4j\QueryAPI\Tests\Unit;
4+
5+
namespace Neo4j\QueryAPI\Tests\Unit;
6+
7+
use Neo4j\QueryAPI\Neo4jRequestFactory;
8+
use PHPUnit\Framework\TestCase;
9+
use Psr\Http\Message\RequestInterface;
10+
use Psr\Http\Message\RequestFactoryInterface;
11+
use Psr\Http\Message\UriInterface;
12+
use GuzzleHttp\Psr7\Utils;
13+
14+
class Neo4jRequestFactoryTest extends TestCase
15+
{
16+
private $psr17Factory;
17+
private $baseUri = 'http://localhost:7474';
18+
private $authHeader = 'Basic dXNlcjpwYXNzd29yZA==';
19+
20+
protected function setUp(): void
21+
{
22+
$this->psr17Factory = $this->createMock(RequestFactoryInterface::class);
23+
}
24+
25+
public function testBuildRunQueryRequest()
26+
{
27+
$cypher = 'MATCH (n) RETURN n';
28+
$parameters = ['param1' => 'value1'];
29+
$database = 'neo4j';
30+
31+
$mockRequest = $this->createMock(RequestInterface::class);
32+
$mockRequest->method('getMethod')->willReturn('POST');
33+
34+
$mockUri = $this->createMock(UriInterface::class);
35+
$mockUri->method('__toString')->willReturn('/db/neo4j/query/v2');
36+
37+
$mockRequest->method('getUri')->willReturn($mockUri);
38+
39+
$mockStream = Utils::streamFor(json_encode([
40+
'statement' => $cypher,
41+
'parameters' => $parameters,
42+
'includeCounters' => true,
43+
]));
44+
$mockRequest->method('getBody')->willReturn($mockStream);
45+
46+
$this->psr17Factory->method('createRequest')
47+
->willReturn($mockRequest);
48+
49+
$factory = new Neo4jRequestFactory($this->baseUri, $this->authHeader);
50+
$request = $factory->buildRunQueryRequest($database, $cypher, $parameters);
51+
52+
$this->assertEquals('POST', $request['method']);
53+
$this->assertEquals("{$this->baseUri}/db/{$database}/query/v2", (string) $request['uri']);
54+
$this->assertJsonStringEqualsJsonString(
55+
json_encode([
56+
'statement' => $cypher,
57+
'parameters' => $parameters,
58+
'includeCounters' => true,
59+
]),
60+
$request['body']
61+
);
62+
}
63+
64+
public function testBuildBeginTransactionRequest()
65+
{
66+
$database = 'neo4j';
67+
68+
$mockRequest = $this->createMock(RequestInterface::class);
69+
$mockRequest->method('getMethod')->willReturn('POST');
70+
71+
$mockUri = $this->createMock(UriInterface::class);
72+
$mockUri->method('__toString')->willReturn('/db/neo4j/query/v2/tx');
73+
74+
$mockRequest->method('getUri')->willReturn($mockUri);
75+
76+
$mockStream = Utils::streamFor('');
77+
$mockRequest->method('getBody')->willReturn($mockStream);
78+
79+
$this->psr17Factory->method('createRequest')
80+
->willReturn($mockRequest);
81+
82+
$factory = new Neo4jRequestFactory($this->baseUri);
83+
$request = $factory->buildBeginTransactionRequest($database);
84+
85+
$this->assertEquals('POST', $request['method']);
86+
$this->assertEquals("{$this->baseUri}/db/{$database}/query/v2/tx", (string) $request['uri']);
87+
}
88+
89+
public function testAuthorizationHeader()
90+
{
91+
$factory = new Neo4jRequestFactory($this->baseUri, $this->authHeader);
92+
$request = $factory->buildRunQueryRequest('neo4j', 'MATCH (n) RETURN n');
93+
94+
$this->assertArrayHasKey('Authorization', $request['headers']);
95+
$this->assertEquals($this->authHeader, $request['headers']['Authorization']);
96+
}
97+
98+
public function testBuildCommitRequest()
99+
{
100+
$database = 'neo4j';
101+
$transactionId = '12345';
102+
103+
$mockRequest = $this->createMock(RequestInterface::class);
104+
$mockRequest->method('getMethod')->willReturn('POST');
105+
106+
$mockUri = $this->createMock(UriInterface::class);
107+
$mockUri->method('__toString')->willReturn("/db/neo4j/query/v2/tx/{$transactionId}/commit");
108+
109+
$mockRequest->method('getUri')->willReturn($mockUri);
110+
111+
$mockStream = Utils::streamFor('');
112+
$mockRequest->method('getBody')->willReturn($mockStream);
113+
114+
$this->psr17Factory->method('createRequest')
115+
->willReturn($mockRequest);
116+
117+
$factory = new Neo4jRequestFactory($this->baseUri);
118+
$request = $factory->buildCommitRequest($database, $transactionId);
119+
120+
$this->assertEquals('POST', $request['method']);
121+
$this->assertEquals("{$this->baseUri}/db/{$database}/query/v2/tx/{$transactionId}/commit", (string) $request['uri']);
122+
}
123+
}

0 commit comments

Comments
 (0)