Skip to content

Commit 7968db7

Browse files
authored
Fixed minor issues
2 parents 3a1dc42 + b329c27 commit 7968db7

File tree

6 files changed

+43
-83
lines changed

6 files changed

+43
-83
lines changed

phpunit-integration-rest.xml

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
<phpunit
2-
backupGlobals="false"
3-
backupStaticAttributes="false"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/8.5/phpunit.xsd"
44
bootstrap="vendor/autoload.php"
5-
convertErrorsToExceptions="true"
6-
convertNoticesToExceptions="true"
7-
convertWarningsToExceptions="true"
85
beStrictAboutTestsThatDoNotTestAnything="false"
96
colors="true"
107
>
@@ -18,9 +15,4 @@
1815
<directory>tests/bundle/Functional</directory>
1916
</testsuite>
2017
</testsuites>
21-
<filter>
22-
<whitelist>
23-
<directory>src</directory>
24-
</whitelist>
25-
</filter>
2618
</phpunit>

phpunit.xml

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
<phpunit
2-
backupGlobals="false"
3-
backupStaticAttributes="false"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/8.5/phpunit.xsd"
44
bootstrap="vendor/autoload.php"
5-
convertErrorsToExceptions="true"
6-
convertNoticesToExceptions="true"
7-
convertWarningsToExceptions="true"
85
beStrictAboutTestsThatDoNotTestAnything="false"
96
colors="true"
107
>
@@ -22,9 +19,4 @@
2219
<directory>tests/lib/Server</directory>
2320
</testsuite>
2421
</testsuites>
25-
<filter>
26-
<whitelist>
27-
<directory>src</directory>
28-
</whitelist>
29-
</filter>
3022
</phpunit>

src/bundle/Resources/config/input_parsers.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ services:
663663
Ibexa\Rest\Server\Input\Parser\Aggregation\Range\FloatRangeParser:
664664
parent: Ibexa\Rest\Server\Common\Parser
665665
tags:
666-
- { name: ibexa.rest.input.parser, mediaType: application/vnd.ibexa.api.internal.aggregation..range.FloatRange }
666+
- { name: ibexa.rest.input.parser, mediaType: application/vnd.ibexa.api.internal.aggregation.range.FloatRange }
667667

668668
Ibexa\Rest\Server\Input\Parser\Aggregation\Range\IntRangeParser:
669669
parent: Ibexa\Rest\Server\Common\Parser

src/lib/Server/Controller/SessionController.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,6 @@ public function createSessionAction(Request $request)
7878

7979
try {
8080
$session = $request->getSession();
81-
if ($session->isStarted() && $this->hasStoredCsrfToken()) {
82-
$this->checkCsrfToken($request);
83-
}
84-
8581
$token = $this->getAuthenticator()->authenticate($request);
8682
$csrfToken = $this->getCsrfToken();
8783

@@ -217,13 +213,8 @@ private function checkCsrfToken(Request $request)
217213
return;
218214
}
219215

220-
$exception = new UnauthorizedException(
221-
'Missing or invalid CSRF token',
222-
$request->getMethod() . ' ' . $request->getPathInfo()
223-
);
224-
225216
if (!$request->headers->has('X-CSRF-Token')) {
226-
throw $exception;
217+
throw $this->createInvalidCsrfTokenException($request);
227218
}
228219

229220
$csrfToken = new CsrfToken(
@@ -232,7 +223,7 @@ private function checkCsrfToken(Request $request)
232223
);
233224

234225
if (!$this->csrfTokenManager->isTokenValid($csrfToken)) {
235-
throw $exception;
226+
throw $this->createInvalidCsrfTokenException($request);
236227
}
237228
}
238229

@@ -263,6 +254,14 @@ private function getAuthenticator(): ?AuthenticatorInterface
263254

264255
return $this->authenticator;
265256
}
257+
258+
private function createInvalidCsrfTokenException(Request $request): UnauthorizedException
259+
{
260+
return new UnauthorizedException(
261+
'Missing or invalid CSRF token',
262+
$request->getMethod() . ' ' . $request->getPathInfo()
263+
);
264+
}
266265
}
267266

268267
class_alias(SessionController::class, 'EzSystems\EzPlatformRest\Server\Controller\SessionController');

src/lib/Server/Controller/Views.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public function __construct(SearchService $searchService)
3737
*/
3838
public function createView(Request $request)
3939
{
40+
/** @var \Ibexa\Rest\Server\Values\RestViewInput $viewInput */
4041
$viewInput = $this->inputDispatcher->parse(
4142
new Message(
4243
['Content-Type' => $request->headers->get('Content-Type')],
@@ -45,9 +46,9 @@ public function createView(Request $request)
4546
);
4647

4748
if ($viewInput->query instanceof LocationQuery) {
48-
$method = 'findLocations';
49+
$method = [$this->searchService, 'findLocations'];
4950
} else {
50-
$method = 'findContent';
51+
$method = [$this->searchService, 'findContent'];
5152
}
5253

5354
$languageFilter = [
@@ -62,7 +63,7 @@ public function createView(Request $request)
6263
return new Values\RestExecutedView(
6364
[
6465
'identifier' => $viewInput->identifier,
65-
'searchResults' => $this->searchService->$method(
66+
'searchResults' => $method(
6667
$viewInput->query,
6768
$languageFilter
6869
),

src/lib/Server/Output/ValueObjectVisitor/RestContent.php

Lines changed: 24 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -50,53 +50,46 @@ public function visit(Visitor $visitor, Generator $generator, $data)
5050
$visitor->setHeader('Content-Type', $generator->getMediaType($mediaType));
5151
$visitor->setHeader('Accept-Patch', $generator->getMediaType('ContentUpdate'));
5252

53-
$generator->startAttribute(
53+
$generator->attribute(
5454
'href',
55-
$data->path === null ?
56-
$this->router->generate('ibexa.rest.load_content', ['contentId' => $contentInfo->id]) :
57-
$data->path
55+
$data->path ?? $this->router->generate(
56+
'ibexa.rest.load_content',
57+
['contentId' => $contentInfo->id]
58+
)
5859
);
59-
$generator->endAttribute('href');
6060

61-
$generator->startAttribute('remoteId', $contentInfo->remoteId);
62-
$generator->endAttribute('remoteId');
63-
$generator->startAttribute('id', $contentInfo->id);
64-
$generator->endAttribute('id');
61+
$generator->attribute('remoteId', $contentInfo->remoteId);
62+
$generator->attribute('id', $contentInfo->id);
6563

6664
$generator->startObjectElement('ContentType');
67-
$generator->startAttribute(
65+
$generator->attribute(
6866
'href',
6967
$this->router->generate(
7068
'ibexa.rest.load_content_type',
7169
['contentTypeId' => $contentInfo->contentTypeId]
7270
)
7371
);
74-
$generator->endAttribute('href');
7572
$generator->endObjectElement('ContentType');
7673

77-
$generator->startValueElement('Name', $contentInfo->name);
78-
$generator->endValueElement('Name');
74+
$generator->valueElement('Name', $contentInfo->name);
7975

80-
$generator->startValueElement('TranslatedName', $translatedContentName);
81-
$generator->endValueElement('TranslatedName');
76+
$generator->valueElement('TranslatedName', $translatedContentName);
8277

8378
$generator->startObjectElement('Versions', 'VersionList');
84-
$generator->startAttribute(
79+
$generator->attribute(
8580
'href',
8681
$this->router->generate('ibexa.rest.load_content_versions', ['contentId' => $contentInfo->id])
8782
);
88-
$generator->endAttribute('href');
8983
$generator->endObjectElement('Versions');
9084

9185
$generator->startObjectElement('CurrentVersion', 'Version');
92-
$generator->startAttribute(
86+
$generator->attribute(
9387
'href',
9488
$this->router->generate(
9589
'ibexa.rest.redirect_current_version',
9690
['contentId' => $contentInfo->id]
9791
)
9892
);
99-
$generator->endAttribute('href');
10093

10194
// Embed current version, if available
10295
if ($currentVersion !== null) {
@@ -112,105 +105,88 @@ public function visit(Visitor $visitor, Generator $generator, $data)
112105
$generator->endObjectElement('CurrentVersion');
113106

114107
$generator->startObjectElement('Section');
115-
$generator->startAttribute(
108+
$generator->attribute(
116109
'href',
117110
$this->router->generate('ibexa.rest.load_section', ['sectionId' => $contentInfo->sectionId])
118111
);
119-
$generator->endAttribute('href');
120112
$generator->endObjectElement('Section');
121113

122114
// Main location will not exist if we're visiting the content draft
123115
if ($data->mainLocation !== null) {
124116
$generator->startObjectElement('MainLocation', 'Location');
125-
$generator->startAttribute(
117+
$generator->attribute(
126118
'href',
127119
$this->router->generate(
128120
'ibexa.rest.load_location',
129121
['locationPath' => trim($mainLocation->pathString, '/')]
130122
)
131123
);
132-
$generator->endAttribute('href');
133124
$generator->endObjectElement('MainLocation');
134125
}
135126

136127
$generator->startObjectElement('Locations', 'LocationList');
137-
$generator->startAttribute(
128+
$generator->attribute(
138129
'href',
139130
$this->router->generate(
140131
'ibexa.rest.load_locations_for_content',
141132
['contentId' => $contentInfo->id]
142133
)
143134
);
144-
$generator->endAttribute('href');
145135
$generator->endObjectElement('Locations');
146136

147137
$generator->startObjectElement('Owner', 'User');
148-
$generator->startAttribute(
138+
$generator->attribute(
149139
'href',
150140
$this->router->generate('ibexa.rest.load_user', ['userId' => $contentInfo->ownerId])
151141
);
152-
$generator->endAttribute('href');
153142
$generator->endObjectElement('Owner');
154143

155144
// Modification date will not exist if we're visiting the content draft
156145
if ($contentInfo->modificationDate !== null) {
157-
$generator->startValueElement(
146+
$generator->valueElement(
158147
'lastModificationDate',
159148
$contentInfo->modificationDate->format('c')
160149
);
161-
$generator->endValueElement('lastModificationDate');
162150
}
163151

164152
// Published date will not exist if we're visiting the content draft
165153
if ($contentInfo->publishedDate !== null) {
166-
$generator->startValueElement(
167-
'publishedDate',
168-
($contentInfo->publishedDate !== null
169-
? $contentInfo->publishedDate->format('c')
170-
: null)
171-
);
172-
$generator->endValueElement('publishedDate');
154+
$generator->valueElement('publishedDate', $contentInfo->publishedDate->format('c'));
173155
}
174156

175-
$generator->startValueElement(
157+
$generator->valueElement(
176158
'mainLanguageCode',
177159
$contentInfo->mainLanguageCode
178160
);
179-
$generator->endValueElement('mainLanguageCode');
180161

181-
$generator->startValueElement(
162+
$generator->valueElement(
182163
'currentVersionNo',
183164
$contentInfo->currentVersionNo
184165
);
185-
$generator->endValueElement('currentVersionNo');
186166

187-
$generator->startValueElement(
167+
$generator->valueElement(
188168
'alwaysAvailable',
189169
$this->serializeBool($generator, $contentInfo->alwaysAvailable)
190170
);
191-
$generator->endValueElement('alwaysAvailable');
192171

193-
$generator->startValueElement(
172+
$generator->valueElement(
194173
'isHidden',
195174
$this->serializeBool($generator, $contentInfo->isHidden)
196175
);
197-
$generator->endValueElement('isHidden');
198176

199-
$generator->startValueElement(
177+
$generator->valueElement(
200178
'status',
201179
$this->getStatusString($contentInfo->status)
202180
);
203-
$generator->endValueElement('status');
204181

205182
$generator->startObjectElement('ObjectStates', 'ContentObjectStates');
206-
$generator->startAttribute(
183+
$generator->attribute(
207184
'href',
208185
$this->router->generate(
209186
'ibexa.rest.get_object_states_for_content',
210187
['contentId' => $contentInfo->id]
211188
)
212189
);
213-
$generator->endAttribute('href');
214190
$generator->endObjectElement('ObjectStates');
215191

216192
$generator->endObjectElement('Content');

0 commit comments

Comments
 (0)