Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Passed
Pull Request — master (#925)
by Ruud
01:32
created
tests/Definition/Type/CustomScalarTypeTest.php 1 patch
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -22,12 +22,12 @@  discard block
 block discarded – undo
22 22
     public function testScalarTypeConfig(): void
23 23
     {
24 24
         $this->assertScalarTypeConfig(new YearScalarType());
25
-        $this->assertScalarTypeConfig(fn () => new YearScalarType());
25
+        $this->assertScalarTypeConfig(fn() => new YearScalarType());
26 26
     }
27 27
 
28 28
     public function testWithoutScalarTypeConfig(): void
29 29
     {
30
-        $genericFunc = fn ($value) => $value;
30
+        $genericFunc = fn($value) => $value;
31 31
         $type = new CustomScalarType([
32 32
             'serialize' => $genericFunc,
33 33
             'parseValue' => $genericFunc,
@@ -74,11 +74,11 @@  discard block
 block discarded – undo
74 74
         yield [false, 'false'];
75 75
         yield [new stdClass(), 'instance of stdClass'];
76 76
         yield [
77
-            fn () => false,
77
+            fn() => false,
78 78
             'false',
79 79
         ];
80 80
         yield [
81
-            fn () => new stdClass(),
81
+            fn() => new stdClass(),
82 82
             'instance of stdClass',
83 83
         ];
84 84
     }
@@ -92,9 +92,9 @@  discard block
 block discarded – undo
92 92
     {
93 93
         $type = new CustomScalarType([
94 94
             'scalarType' => $scalarType,
95
-            'serialize' => fn () => 'serialize',
96
-            'parseValue' => fn () => 'parseValue',
97
-            'parseLiteral' => fn () => 'parseLiteral',
95
+            'serialize' => fn() => 'serialize',
96
+            'parseValue' => fn() => 'parseValue',
97
+            'parseLiteral' => fn() => 'parseLiteral',
98 98
         ]);
99 99
 
100 100
         $this->assertSame('50 AC', $type->serialize(50));
Please login to merge, or discard this patch.
tests/Functional/Relay/Node/NodeTest.php 5 patches
Indentation   +1 added lines, -3 removed lines patch added patch discarded remove patch
@@ -281,6 +281,4 @@
 block discarded – undo
281 281
             ],
282 282
         ];
283 283
 
284
-        $this->assertGraphQL($query, $expectedData);
285
-    }
286
-}
284
+        $this->assertGraphQL($query, $expectedData
287 285
\ No newline at end of file
Please login to merge, or discard this patch.
Switch Indentation   +1 added lines, -3 removed lines patch added patch discarded remove patch
@@ -281,6 +281,4 @@
 block discarded – undo
281 281
             ],
282 282
         ];
283 283
 
284
-        $this->assertGraphQL($query, $expectedData);
285
-    }
286
-}
284
+        $this->assertGraphQL($query, $expectedData
287 285
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +1 added lines, -3 removed lines patch added patch discarded remove patch
@@ -281,6 +281,4 @@
 block discarded – undo
281 281
             ],
282 282
         ];
283 283
 
284
-        $this->assertGraphQL($query, $expectedData);
285
-    }
286
-}
284
+        $this->assertGraphQL($query, $expectedData
287 285
\ No newline at end of file
Please login to merge, or discard this patch.
Braces   +1 added lines, -3 removed lines patch added patch discarded remove patch
@@ -281,6 +281,4 @@
 block discarded – undo
281 281
             ],
282 282
         ];
283 283
 
284
-        $this->assertGraphQL($query, $expectedData);
285
-    }
286
-}
284
+        $this->assertGraphQL($query, $expectedData
287 285
\ No newline at end of file
Please login to merge, or discard this patch.
Upper-Lower-Casing   +1 added lines, -3 removed lines patch added patch discarded remove patch
@@ -281,6 +281,4 @@
 block discarded – undo
281 281
             ],
282 282
         ];
283 283
 
284
-        $this->assertGraphQL($query, $expectedData);
285
-    }
286
-}
284
+        $this->assertGraphQL($query, $expectedData
287 285
\ No newline at end of file
Please login to merge, or discard this patch.
tests/Functional/Controller/GraphControllerTest.php 5 patches
Indentation   -318 removed lines patch added patch discarded remove patch
@@ -14,321 +14,3 @@
 block discarded – undo
14 14
 class GraphControllerTest extends TestCase
15 15
 {
16 16
     private string $friendsQuery = <<<'EOF'
17
-        query FriendsQuery {
18
-          user {
19
-            friends(first: 2) {
20
-              totalCount
21
-              edges {
22
-                friendshipTime
23
-                node {
24
-                  name
25
-                }
26
-              }
27
-            }
28
-          }
29
-        }
30
-        EOF;
31
-
32
-    private string $friendsTotalCountQuery = <<<'EOF'
33
-        query FriendsTotalCountQuery {
34
-          user {
35
-            friends {
36
-              totalCount
37
-            }
38
-          }
39
-        }
40
-        EOF;
41
-
42
-    private array $expectedData = [
43
-        'user' => [
44
-            'friends' => [
45
-                'totalCount' => 4,
46
-                'edges' => [
47
-                    [
48
-                        'friendshipTime' => 'Yesterday',
49
-                        'node' => [
50
-                            'name' => 'Nick',
51
-                        ],
52
-                    ],
53
-                    [
54
-                        'friendshipTime' => 'Yesterday',
55
-                        'node' => [
56
-                            'name' => 'Lee',
57
-                        ],
58
-                    ],
59
-                ],
60
-            ],
61
-        ],
62
-    ];
63
-
64
-    /**
65
-     * @dataProvider graphQLEndpointUriProvider
66
-     */
67
-    public function testEndpointAction(string $uri): void
68
-    {
69
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
70
-        $this->disableCatchExceptions($client);
71
-
72
-        $client->request('GET', $uri, ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/graphql;charset=utf8', 'HTTP_Origin' => 'http://example.com']);
73
-        $result = $client->getResponse()->getContent();
74
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
75
-        $this->assertCORSHeadersExists($client);
76
-    }
77
-
78
-    public function graphQLEndpointUriProvider(): array
79
-    {
80
-        return [
81
-            ['/'],
82
-            ['/graphql/default'],
83
-        ];
84
-    }
85
-
86
-    public function testEndpointWithEmptyQuery(): void
87
-    {
88
-        $this->expectException(BadRequestHttpException::class);
89
-        $this->expectExceptionMessage('Must provide query parameter');
90
-        $client = static::createClient();
91
-        $this->disableCatchExceptions($client);
92
-        $client->request('GET', '/', []);
93
-        $client->getResponse()->getContent();
94
-    }
95
-
96
-    public function testEndpointWithEmptyPostJsonBodyQuery(): void
97
-    {
98
-        $this->expectException(BadRequestHttpException::class);
99
-        $this->expectExceptionMessage('The request content body must not be empty when using json content type request.');
100
-        $client = static::createClient();
101
-        $this->disableCatchExceptions($client);
102
-        $client->request('POST', '/', [], [], ['CONTENT_TYPE' => 'application/json']);
103
-    }
104
-
105
-    public function testEndpointWithJsonContentTypeAndGetQuery(): void
106
-    {
107
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
108
-        $this->disableCatchExceptions($client);
109
-        $client->request('GET', '/', ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/json']);
110
-        $result = $client->getResponse()->getContent();
111
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
112
-    }
113
-
114
-    public function testEndpointWithInvalidBodyQuery(): void
115
-    {
116
-        $this->expectException(BadRequestHttpException::class);
117
-        $this->expectExceptionMessage('POST body sent invalid JSON');
118
-        $client = static::createClient();
119
-        $this->disableCatchExceptions($client);
120
-        $client->request('GET', '/', [], [], ['CONTENT_TYPE' => 'application/json'], '{');
121
-        $client->getResponse()->getContent();
122
-    }
123
-
124
-    public function testEndpointActionWithVariables(): void
125
-    {
126
-        $client = static::createClient(['test_case' => 'connection']);
127
-        $this->disableCatchExceptions($client);
128
-
129
-        $query = <<<'EOF'
130
-            query FriendsQuery($firstFriends: Int) {
131
-              user {
132
-                friends(first: $firstFriends) {
133
-                  totalCount
134
-                  edges {
135
-                    friendshipTime
136
-                    node {
137
-                      name
138
-                    }
139
-                  }
140
-                }
141
-              }
142
-            }
143
-            EOF;
144
-
145
-        $content = json_encode(['query' => $query, 'variables' => '{"firstFriends": 2}']) ?: null;
146
-        $client->request('GET', '/', [], [], ['CONTENT_TYPE' => 'application/json'], $content);
147
-        $this->assertSame(200, $client->getResponse()->getStatusCode());
148
-    }
149
-
150
-    public function testEndpointActionWithInvalidVariables(): void
151
-    {
152
-        $this->expectException(BadRequestHttpException::class);
153
-        $this->expectExceptionMessage('Variables are invalid JSON');
154
-        $client = static::createClient(['test_case' => 'connection']);
155
-        $this->disableCatchExceptions($client);
156
-
157
-        $query = <<<'EOF'
158
-            query {
159
-              user
160
-            }
161
-            EOF;
162
-
163
-        $client->request('GET', '/', ['query' => $query, 'variables' => '"firstFriends": 2}']);
164
-    }
165
-
166
-    public function testMultipleEndpointActionWithUnknownSchemaName(): void
167
-    {
168
-        $this->expectException(NotFoundHttpException::class);
169
-        $this->expectExceptionMessage('Could not find "fake" schema.');
170
-        $client = static::createClient(['test_case' => 'connection']);
171
-        $this->disableCatchExceptions($client);
172
-
173
-        $query = <<<'EOF'
174
-            query {
175
-              user
176
-            }
177
-            EOF;
178
-
179
-        $client->request('GET', '/graphql/fake', ['query' => $query]);
180
-    }
181
-
182
-    public function testEndpointActionWithOperationName(): void
183
-    {
184
-        $client = static::createClient(['test_case' => 'connection']);
185
-        $this->disableCatchExceptions($client);
186
-
187
-        $query = $this->friendsQuery."\n".$this->friendsTotalCountQuery;
188
-
189
-        $client->request('POST', '/', ['query' => $query, 'operationName' => 'FriendsQuery'], [], ['CONTENT_TYPE' => 'application/x-www-form-urlencoded']);
190
-        $result = $client->getResponse()->getContent();
191
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
192
-    }
193
-
194
-    /**
195
-     * @dataProvider graphQLBatchEndpointUriProvider
196
-     */
197
-    public function testBatchEndpointAction(string $uri): void
198
-    {
199
-        $client = static::createClient(['test_case' => 'connection']);
200
-        $this->disableCatchExceptions($client);
201
-
202
-        $data = [
203
-            [
204
-                'id' => 'friends',
205
-                'query' => $this->friendsQuery,
206
-            ],
207
-            [
208
-                'id' => 'friendsTotalCount',
209
-                'query' => $this->friendsTotalCountQuery,
210
-            ],
211
-        ];
212
-
213
-        $content = json_encode($data) ?: null;
214
-        $client->request('POST', $uri, [], [], ['CONTENT_TYPE' => 'application/json'], $content);
215
-        $result = $client->getResponse()->getContent();
216
-
217
-        $expected = [
218
-            ['id' => 'friends', 'payload' => ['data' => $this->expectedData]],
219
-            ['id' => 'friendsTotalCount', 'payload' => ['data' => ['user' => ['friends' => ['totalCount' => 4]]]]],
220
-        ];
221
-        $this->assertSame($expected, json_decode($result, true), $result);
222
-    }
223
-
224
-    public function graphQLBatchEndpointUriProvider(): array
225
-    {
226
-        return [
227
-            ['/batch'],
228
-            ['/graphql/default/batch'],
229
-        ];
230
-    }
231
-
232
-    public function testBatchEndpointWithEmptyQuery(): void
233
-    {
234
-        $this->expectException(BadRequestHttpException::class);
235
-        $this->expectExceptionMessage('Must provide at least one valid query.');
236
-        $client = static::createClient();
237
-        $this->disableCatchExceptions($client);
238
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{}');
239
-        $client->getResponse()->getContent();
240
-    }
241
-
242
-    public function testBatchEndpointWrongContentType(): void
243
-    {
244
-        $this->expectException(BadRequestHttpException::class);
245
-        $this->expectExceptionMessage('Batching parser only accepts "application/json" or "multipart/form-data" content-type but got "".');
246
-        $client = static::createClient();
247
-        $this->disableCatchExceptions($client);
248
-        $client->request('GET', '/batch');
249
-        $client->getResponse()->getContent();
250
-    }
251
-
252
-    public function testBatchEndpointWithInvalidJson(): void
253
-    {
254
-        $this->expectException(BadRequestHttpException::class);
255
-        $this->expectExceptionMessage('POST body sent invalid JSON');
256
-        $client = static::createClient();
257
-        $this->disableCatchExceptions($client);
258
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{');
259
-        $client->getResponse()->getContent();
260
-    }
261
-
262
-    public function testBatchEndpointWithInvalidQuery(): void
263
-    {
264
-        $this->expectException(BadRequestHttpException::class);
265
-        $this->expectExceptionMessage('1 is not a valid query');
266
-        $client = static::createClient();
267
-        $this->disableCatchExceptions($client);
268
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{"test" : {"query": 1}}');
269
-        $client->getResponse()->getContent();
270
-    }
271
-
272
-    public function testPreflightedRequestWhenDisabled(): void
273
-    {
274
-        $client = static::createClient(['test_case' => 'connection']);
275
-        $this->disableCatchExceptions($client);
276
-        $client->request('OPTIONS', '/', [], [], ['HTTP_Origin' => 'http://example.com']);
277
-        $response = $client->getResponse();
278
-        $this->assertSame(200, $response->getStatusCode());
279
-        $this->assertCORSHeadersNotExists($client);
280
-    }
281
-
282
-    public function testUnAuthorizedMethod(): void
283
-    {
284
-        $client = static::createClient(['test_case' => 'connection']);
285
-        $this->disableCatchExceptions($client);
286
-        $client->request('PUT', '/', [], [], ['HTTP_Origin' => 'http://example.com']);
287
-        $this->assertSame(405, $client->getResponse()->getStatusCode());
288
-    }
289
-
290
-    public function testPreflightedRequestWhenEnabled(): void
291
-    {
292
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
293
-        $this->disableCatchExceptions($client);
294
-        $client->request('OPTIONS', '/batch', [], [], ['HTTP_Origin' => 'http://example.com']);
295
-        $this->assertCORSHeadersExists($client);
296
-    }
297
-
298
-    public function testNoCORSHeadersIfOriginHeaderNotExists(): void
299
-    {
300
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
301
-        $this->disableCatchExceptions($client);
302
-        $client->request('GET', '/', ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/graphql']);
303
-        $result = $client->getResponse()->getContent();
304
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
305
-        $this->assertCORSHeadersNotExists($client);
306
-    }
307
-
308
-    /**
309
-     * @param KernelBrowser $client
310
-     */
311
-    private function assertCORSHeadersNotExists($client): void
312
-    {
313
-        $headers = $client->getResponse()->headers->all();
314
-        $this->assertArrayNotHasKey('access-control-allow-origin', $headers);
315
-        $this->assertArrayNotHasKey('access-control-allow-methods', $headers);
316
-        $this->assertArrayNotHasKey('access-control-allow-credentials', $headers);
317
-        $this->assertArrayNotHasKey('access-control-allow-headers', $headers);
318
-        $this->assertArrayNotHasKey('access-control-max-age', $headers);
319
-    }
320
-
321
-    /**
322
-     * @param KernelBrowser $client
323
-     */
324
-    private function assertCORSHeadersExists($client): void
325
-    {
326
-        $response = $client->getResponse();
327
-        $this->assertSame(200, $response->getStatusCode());
328
-        $this->assertSame('http://example.com', $response->headers->get('Access-Control-Allow-Origin'));
329
-        $this->assertSame('OPTIONS, GET, POST', $response->headers->get('Access-Control-Allow-Methods'));
330
-        $this->assertSame('true', $response->headers->get('Access-Control-Allow-Credentials'));
331
-        $this->assertSame('Content-Type, Authorization', $response->headers->get('Access-Control-Allow-Headers'));
332
-        $this->assertSame('3600', $response->headers->get('Access-Control-Max-Age'));
333
-    }
334
-}
Please login to merge, or discard this patch.
Switch Indentation   -318 removed lines patch added patch discarded remove patch
@@ -14,321 +14,3 @@
 block discarded – undo
14 14
 class GraphControllerTest extends TestCase
15 15
 {
16 16
     private string $friendsQuery = <<<'EOF'
17
-        query FriendsQuery {
18
-          user {
19
-            friends(first: 2) {
20
-              totalCount
21
-              edges {
22
-                friendshipTime
23
-                node {
24
-                  name
25
-                }
26
-              }
27
-            }
28
-          }
29
-        }
30
-        EOF;
31
-
32
-    private string $friendsTotalCountQuery = <<<'EOF'
33
-        query FriendsTotalCountQuery {
34
-          user {
35
-            friends {
36
-              totalCount
37
-            }
38
-          }
39
-        }
40
-        EOF;
41
-
42
-    private array $expectedData = [
43
-        'user' => [
44
-            'friends' => [
45
-                'totalCount' => 4,
46
-                'edges' => [
47
-                    [
48
-                        'friendshipTime' => 'Yesterday',
49
-                        'node' => [
50
-                            'name' => 'Nick',
51
-                        ],
52
-                    ],
53
-                    [
54
-                        'friendshipTime' => 'Yesterday',
55
-                        'node' => [
56
-                            'name' => 'Lee',
57
-                        ],
58
-                    ],
59
-                ],
60
-            ],
61
-        ],
62
-    ];
63
-
64
-    /**
65
-     * @dataProvider graphQLEndpointUriProvider
66
-     */
67
-    public function testEndpointAction(string $uri): void
68
-    {
69
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
70
-        $this->disableCatchExceptions($client);
71
-
72
-        $client->request('GET', $uri, ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/graphql;charset=utf8', 'HTTP_Origin' => 'http://example.com']);
73
-        $result = $client->getResponse()->getContent();
74
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
75
-        $this->assertCORSHeadersExists($client);
76
-    }
77
-
78
-    public function graphQLEndpointUriProvider(): array
79
-    {
80
-        return [
81
-            ['/'],
82
-            ['/graphql/default'],
83
-        ];
84
-    }
85
-
86
-    public function testEndpointWithEmptyQuery(): void
87
-    {
88
-        $this->expectException(BadRequestHttpException::class);
89
-        $this->expectExceptionMessage('Must provide query parameter');
90
-        $client = static::createClient();
91
-        $this->disableCatchExceptions($client);
92
-        $client->request('GET', '/', []);
93
-        $client->getResponse()->getContent();
94
-    }
95
-
96
-    public function testEndpointWithEmptyPostJsonBodyQuery(): void
97
-    {
98
-        $this->expectException(BadRequestHttpException::class);
99
-        $this->expectExceptionMessage('The request content body must not be empty when using json content type request.');
100
-        $client = static::createClient();
101
-        $this->disableCatchExceptions($client);
102
-        $client->request('POST', '/', [], [], ['CONTENT_TYPE' => 'application/json']);
103
-    }
104
-
105
-    public function testEndpointWithJsonContentTypeAndGetQuery(): void
106
-    {
107
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
108
-        $this->disableCatchExceptions($client);
109
-        $client->request('GET', '/', ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/json']);
110
-        $result = $client->getResponse()->getContent();
111
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
112
-    }
113
-
114
-    public function testEndpointWithInvalidBodyQuery(): void
115
-    {
116
-        $this->expectException(BadRequestHttpException::class);
117
-        $this->expectExceptionMessage('POST body sent invalid JSON');
118
-        $client = static::createClient();
119
-        $this->disableCatchExceptions($client);
120
-        $client->request('GET', '/', [], [], ['CONTENT_TYPE' => 'application/json'], '{');
121
-        $client->getResponse()->getContent();
122
-    }
123
-
124
-    public function testEndpointActionWithVariables(): void
125
-    {
126
-        $client = static::createClient(['test_case' => 'connection']);
127
-        $this->disableCatchExceptions($client);
128
-
129
-        $query = <<<'EOF'
130
-            query FriendsQuery($firstFriends: Int) {
131
-              user {
132
-                friends(first: $firstFriends) {
133
-                  totalCount
134
-                  edges {
135
-                    friendshipTime
136
-                    node {
137
-                      name
138
-                    }
139
-                  }
140
-                }
141
-              }
142
-            }
143
-            EOF;
144
-
145
-        $content = json_encode(['query' => $query, 'variables' => '{"firstFriends": 2}']) ?: null;
146
-        $client->request('GET', '/', [], [], ['CONTENT_TYPE' => 'application/json'], $content);
147
-        $this->assertSame(200, $client->getResponse()->getStatusCode());
148
-    }
149
-
150
-    public function testEndpointActionWithInvalidVariables(): void
151
-    {
152
-        $this->expectException(BadRequestHttpException::class);
153
-        $this->expectExceptionMessage('Variables are invalid JSON');
154
-        $client = static::createClient(['test_case' => 'connection']);
155
-        $this->disableCatchExceptions($client);
156
-
157
-        $query = <<<'EOF'
158
-            query {
159
-              user
160
-            }
161
-            EOF;
162
-
163
-        $client->request('GET', '/', ['query' => $query, 'variables' => '"firstFriends": 2}']);
164
-    }
165
-
166
-    public function testMultipleEndpointActionWithUnknownSchemaName(): void
167
-    {
168
-        $this->expectException(NotFoundHttpException::class);
169
-        $this->expectExceptionMessage('Could not find "fake" schema.');
170
-        $client = static::createClient(['test_case' => 'connection']);
171
-        $this->disableCatchExceptions($client);
172
-
173
-        $query = <<<'EOF'
174
-            query {
175
-              user
176
-            }
177
-            EOF;
178
-
179
-        $client->request('GET', '/graphql/fake', ['query' => $query]);
180
-    }
181
-
182
-    public function testEndpointActionWithOperationName(): void
183
-    {
184
-        $client = static::createClient(['test_case' => 'connection']);
185
-        $this->disableCatchExceptions($client);
186
-
187
-        $query = $this->friendsQuery."\n".$this->friendsTotalCountQuery;
188
-
189
-        $client->request('POST', '/', ['query' => $query, 'operationName' => 'FriendsQuery'], [], ['CONTENT_TYPE' => 'application/x-www-form-urlencoded']);
190
-        $result = $client->getResponse()->getContent();
191
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
192
-    }
193
-
194
-    /**
195
-     * @dataProvider graphQLBatchEndpointUriProvider
196
-     */
197
-    public function testBatchEndpointAction(string $uri): void
198
-    {
199
-        $client = static::createClient(['test_case' => 'connection']);
200
-        $this->disableCatchExceptions($client);
201
-
202
-        $data = [
203
-            [
204
-                'id' => 'friends',
205
-                'query' => $this->friendsQuery,
206
-            ],
207
-            [
208
-                'id' => 'friendsTotalCount',
209
-                'query' => $this->friendsTotalCountQuery,
210
-            ],
211
-        ];
212
-
213
-        $content = json_encode($data) ?: null;
214
-        $client->request('POST', $uri, [], [], ['CONTENT_TYPE' => 'application/json'], $content);
215
-        $result = $client->getResponse()->getContent();
216
-
217
-        $expected = [
218
-            ['id' => 'friends', 'payload' => ['data' => $this->expectedData]],
219
-            ['id' => 'friendsTotalCount', 'payload' => ['data' => ['user' => ['friends' => ['totalCount' => 4]]]]],
220
-        ];
221
-        $this->assertSame($expected, json_decode($result, true), $result);
222
-    }
223
-
224
-    public function graphQLBatchEndpointUriProvider(): array
225
-    {
226
-        return [
227
-            ['/batch'],
228
-            ['/graphql/default/batch'],
229
-        ];
230
-    }
231
-
232
-    public function testBatchEndpointWithEmptyQuery(): void
233
-    {
234
-        $this->expectException(BadRequestHttpException::class);
235
-        $this->expectExceptionMessage('Must provide at least one valid query.');
236
-        $client = static::createClient();
237
-        $this->disableCatchExceptions($client);
238
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{}');
239
-        $client->getResponse()->getContent();
240
-    }
241
-
242
-    public function testBatchEndpointWrongContentType(): void
243
-    {
244
-        $this->expectException(BadRequestHttpException::class);
245
-        $this->expectExceptionMessage('Batching parser only accepts "application/json" or "multipart/form-data" content-type but got "".');
246
-        $client = static::createClient();
247
-        $this->disableCatchExceptions($client);
248
-        $client->request('GET', '/batch');
249
-        $client->getResponse()->getContent();
250
-    }
251
-
252
-    public function testBatchEndpointWithInvalidJson(): void
253
-    {
254
-        $this->expectException(BadRequestHttpException::class);
255
-        $this->expectExceptionMessage('POST body sent invalid JSON');
256
-        $client = static::createClient();
257
-        $this->disableCatchExceptions($client);
258
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{');
259
-        $client->getResponse()->getContent();
260
-    }
261
-
262
-    public function testBatchEndpointWithInvalidQuery(): void
263
-    {
264
-        $this->expectException(BadRequestHttpException::class);
265
-        $this->expectExceptionMessage('1 is not a valid query');
266
-        $client = static::createClient();
267
-        $this->disableCatchExceptions($client);
268
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{"test" : {"query": 1}}');
269
-        $client->getResponse()->getContent();
270
-    }
271
-
272
-    public function testPreflightedRequestWhenDisabled(): void
273
-    {
274
-        $client = static::createClient(['test_case' => 'connection']);
275
-        $this->disableCatchExceptions($client);
276
-        $client->request('OPTIONS', '/', [], [], ['HTTP_Origin' => 'http://example.com']);
277
-        $response = $client->getResponse();
278
-        $this->assertSame(200, $response->getStatusCode());
279
-        $this->assertCORSHeadersNotExists($client);
280
-    }
281
-
282
-    public function testUnAuthorizedMethod(): void
283
-    {
284
-        $client = static::createClient(['test_case' => 'connection']);
285
-        $this->disableCatchExceptions($client);
286
-        $client->request('PUT', '/', [], [], ['HTTP_Origin' => 'http://example.com']);
287
-        $this->assertSame(405, $client->getResponse()->getStatusCode());
288
-    }
289
-
290
-    public function testPreflightedRequestWhenEnabled(): void
291
-    {
292
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
293
-        $this->disableCatchExceptions($client);
294
-        $client->request('OPTIONS', '/batch', [], [], ['HTTP_Origin' => 'http://example.com']);
295
-        $this->assertCORSHeadersExists($client);
296
-    }
297
-
298
-    public function testNoCORSHeadersIfOriginHeaderNotExists(): void
299
-    {
300
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
301
-        $this->disableCatchExceptions($client);
302
-        $client->request('GET', '/', ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/graphql']);
303
-        $result = $client->getResponse()->getContent();
304
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
305
-        $this->assertCORSHeadersNotExists($client);
306
-    }
307
-
308
-    /**
309
-     * @param KernelBrowser $client
310
-     */
311
-    private function assertCORSHeadersNotExists($client): void
312
-    {
313
-        $headers = $client->getResponse()->headers->all();
314
-        $this->assertArrayNotHasKey('access-control-allow-origin', $headers);
315
-        $this->assertArrayNotHasKey('access-control-allow-methods', $headers);
316
-        $this->assertArrayNotHasKey('access-control-allow-credentials', $headers);
317
-        $this->assertArrayNotHasKey('access-control-allow-headers', $headers);
318
-        $this->assertArrayNotHasKey('access-control-max-age', $headers);
319
-    }
320
-
321
-    /**
322
-     * @param KernelBrowser $client
323
-     */
324
-    private function assertCORSHeadersExists($client): void
325
-    {
326
-        $response = $client->getResponse();
327
-        $this->assertSame(200, $response->getStatusCode());
328
-        $this->assertSame('http://example.com', $response->headers->get('Access-Control-Allow-Origin'));
329
-        $this->assertSame('OPTIONS, GET, POST', $response->headers->get('Access-Control-Allow-Methods'));
330
-        $this->assertSame('true', $response->headers->get('Access-Control-Allow-Credentials'));
331
-        $this->assertSame('Content-Type, Authorization', $response->headers->get('Access-Control-Allow-Headers'));
332
-        $this->assertSame('3600', $response->headers->get('Access-Control-Max-Age'));
333
-    }
334
-}
Please login to merge, or discard this patch.
Spacing   -318 removed lines patch added patch discarded remove patch
@@ -14,321 +14,3 @@
 block discarded – undo
14 14
 class GraphControllerTest extends TestCase
15 15
 {
16 16
     private string $friendsQuery = <<<'EOF'
17
-        query FriendsQuery {
18
-          user {
19
-            friends(first: 2) {
20
-              totalCount
21
-              edges {
22
-                friendshipTime
23
-                node {
24
-                  name
25
-                }
26
-              }
27
-            }
28
-          }
29
-        }
30
-        EOF;
31
-
32
-    private string $friendsTotalCountQuery = <<<'EOF'
33
-        query FriendsTotalCountQuery {
34
-          user {
35
-            friends {
36
-              totalCount
37
-            }
38
-          }
39
-        }
40
-        EOF;
41
-
42
-    private array $expectedData = [
43
-        'user' => [
44
-            'friends' => [
45
-                'totalCount' => 4,
46
-                'edges' => [
47
-                    [
48
-                        'friendshipTime' => 'Yesterday',
49
-                        'node' => [
50
-                            'name' => 'Nick',
51
-                        ],
52
-                    ],
53
-                    [
54
-                        'friendshipTime' => 'Yesterday',
55
-                        'node' => [
56
-                            'name' => 'Lee',
57
-                        ],
58
-                    ],
59
-                ],
60
-            ],
61
-        ],
62
-    ];
63
-
64
-    /**
65
-     * @dataProvider graphQLEndpointUriProvider
66
-     */
67
-    public function testEndpointAction(string $uri): void
68
-    {
69
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
70
-        $this->disableCatchExceptions($client);
71
-
72
-        $client->request('GET', $uri, ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/graphql;charset=utf8', 'HTTP_Origin' => 'http://example.com']);
73
-        $result = $client->getResponse()->getContent();
74
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
75
-        $this->assertCORSHeadersExists($client);
76
-    }
77
-
78
-    public function graphQLEndpointUriProvider(): array
79
-    {
80
-        return [
81
-            ['/'],
82
-            ['/graphql/default'],
83
-        ];
84
-    }
85
-
86
-    public function testEndpointWithEmptyQuery(): void
87
-    {
88
-        $this->expectException(BadRequestHttpException::class);
89
-        $this->expectExceptionMessage('Must provide query parameter');
90
-        $client = static::createClient();
91
-        $this->disableCatchExceptions($client);
92
-        $client->request('GET', '/', []);
93
-        $client->getResponse()->getContent();
94
-    }
95
-
96
-    public function testEndpointWithEmptyPostJsonBodyQuery(): void
97
-    {
98
-        $this->expectException(BadRequestHttpException::class);
99
-        $this->expectExceptionMessage('The request content body must not be empty when using json content type request.');
100
-        $client = static::createClient();
101
-        $this->disableCatchExceptions($client);
102
-        $client->request('POST', '/', [], [], ['CONTENT_TYPE' => 'application/json']);
103
-    }
104
-
105
-    public function testEndpointWithJsonContentTypeAndGetQuery(): void
106
-    {
107
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
108
-        $this->disableCatchExceptions($client);
109
-        $client->request('GET', '/', ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/json']);
110
-        $result = $client->getResponse()->getContent();
111
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
112
-    }
113
-
114
-    public function testEndpointWithInvalidBodyQuery(): void
115
-    {
116
-        $this->expectException(BadRequestHttpException::class);
117
-        $this->expectExceptionMessage('POST body sent invalid JSON');
118
-        $client = static::createClient();
119
-        $this->disableCatchExceptions($client);
120
-        $client->request('GET', '/', [], [], ['CONTENT_TYPE' => 'application/json'], '{');
121
-        $client->getResponse()->getContent();
122
-    }
123
-
124
-    public function testEndpointActionWithVariables(): void
125
-    {
126
-        $client = static::createClient(['test_case' => 'connection']);
127
-        $this->disableCatchExceptions($client);
128
-
129
-        $query = <<<'EOF'
130
-            query FriendsQuery($firstFriends: Int) {
131
-              user {
132
-                friends(first: $firstFriends) {
133
-                  totalCount
134
-                  edges {
135
-                    friendshipTime
136
-                    node {
137
-                      name
138
-                    }
139
-                  }
140
-                }
141
-              }
142
-            }
143
-            EOF;
144
-
145
-        $content = json_encode(['query' => $query, 'variables' => '{"firstFriends": 2}']) ?: null;
146
-        $client->request('GET', '/', [], [], ['CONTENT_TYPE' => 'application/json'], $content);
147
-        $this->assertSame(200, $client->getResponse()->getStatusCode());
148
-    }
149
-
150
-    public function testEndpointActionWithInvalidVariables(): void
151
-    {
152
-        $this->expectException(BadRequestHttpException::class);
153
-        $this->expectExceptionMessage('Variables are invalid JSON');
154
-        $client = static::createClient(['test_case' => 'connection']);
155
-        $this->disableCatchExceptions($client);
156
-
157
-        $query = <<<'EOF'
158
-            query {
159
-              user
160
-            }
161
-            EOF;
162
-
163
-        $client->request('GET', '/', ['query' => $query, 'variables' => '"firstFriends": 2}']);
164
-    }
165
-
166
-    public function testMultipleEndpointActionWithUnknownSchemaName(): void
167
-    {
168
-        $this->expectException(NotFoundHttpException::class);
169
-        $this->expectExceptionMessage('Could not find "fake" schema.');
170
-        $client = static::createClient(['test_case' => 'connection']);
171
-        $this->disableCatchExceptions($client);
172
-
173
-        $query = <<<'EOF'
174
-            query {
175
-              user
176
-            }
177
-            EOF;
178
-
179
-        $client->request('GET', '/graphql/fake', ['query' => $query]);
180
-    }
181
-
182
-    public function testEndpointActionWithOperationName(): void
183
-    {
184
-        $client = static::createClient(['test_case' => 'connection']);
185
-        $this->disableCatchExceptions($client);
186
-
187
-        $query = $this->friendsQuery."\n".$this->friendsTotalCountQuery;
188
-
189
-        $client->request('POST', '/', ['query' => $query, 'operationName' => 'FriendsQuery'], [], ['CONTENT_TYPE' => 'application/x-www-form-urlencoded']);
190
-        $result = $client->getResponse()->getContent();
191
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
192
-    }
193
-
194
-    /**
195
-     * @dataProvider graphQLBatchEndpointUriProvider
196
-     */
197
-    public function testBatchEndpointAction(string $uri): void
198
-    {
199
-        $client = static::createClient(['test_case' => 'connection']);
200
-        $this->disableCatchExceptions($client);
201
-
202
-        $data = [
203
-            [
204
-                'id' => 'friends',
205
-                'query' => $this->friendsQuery,
206
-            ],
207
-            [
208
-                'id' => 'friendsTotalCount',
209
-                'query' => $this->friendsTotalCountQuery,
210
-            ],
211
-        ];
212
-
213
-        $content = json_encode($data) ?: null;
214
-        $client->request('POST', $uri, [], [], ['CONTENT_TYPE' => 'application/json'], $content);
215
-        $result = $client->getResponse()->getContent();
216
-
217
-        $expected = [
218
-            ['id' => 'friends', 'payload' => ['data' => $this->expectedData]],
219
-            ['id' => 'friendsTotalCount', 'payload' => ['data' => ['user' => ['friends' => ['totalCount' => 4]]]]],
220
-        ];
221
-        $this->assertSame($expected, json_decode($result, true), $result);
222
-    }
223
-
224
-    public function graphQLBatchEndpointUriProvider(): array
225
-    {
226
-        return [
227
-            ['/batch'],
228
-            ['/graphql/default/batch'],
229
-        ];
230
-    }
231
-
232
-    public function testBatchEndpointWithEmptyQuery(): void
233
-    {
234
-        $this->expectException(BadRequestHttpException::class);
235
-        $this->expectExceptionMessage('Must provide at least one valid query.');
236
-        $client = static::createClient();
237
-        $this->disableCatchExceptions($client);
238
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{}');
239
-        $client->getResponse()->getContent();
240
-    }
241
-
242
-    public function testBatchEndpointWrongContentType(): void
243
-    {
244
-        $this->expectException(BadRequestHttpException::class);
245
-        $this->expectExceptionMessage('Batching parser only accepts "application/json" or "multipart/form-data" content-type but got "".');
246
-        $client = static::createClient();
247
-        $this->disableCatchExceptions($client);
248
-        $client->request('GET', '/batch');
249
-        $client->getResponse()->getContent();
250
-    }
251
-
252
-    public function testBatchEndpointWithInvalidJson(): void
253
-    {
254
-        $this->expectException(BadRequestHttpException::class);
255
-        $this->expectExceptionMessage('POST body sent invalid JSON');
256
-        $client = static::createClient();
257
-        $this->disableCatchExceptions($client);
258
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{');
259
-        $client->getResponse()->getContent();
260
-    }
261
-
262
-    public function testBatchEndpointWithInvalidQuery(): void
263
-    {
264
-        $this->expectException(BadRequestHttpException::class);
265
-        $this->expectExceptionMessage('1 is not a valid query');
266
-        $client = static::createClient();
267
-        $this->disableCatchExceptions($client);
268
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{"test" : {"query": 1}}');
269
-        $client->getResponse()->getContent();
270
-    }
271
-
272
-    public function testPreflightedRequestWhenDisabled(): void
273
-    {
274
-        $client = static::createClient(['test_case' => 'connection']);
275
-        $this->disableCatchExceptions($client);
276
-        $client->request('OPTIONS', '/', [], [], ['HTTP_Origin' => 'http://example.com']);
277
-        $response = $client->getResponse();
278
-        $this->assertSame(200, $response->getStatusCode());
279
-        $this->assertCORSHeadersNotExists($client);
280
-    }
281
-
282
-    public function testUnAuthorizedMethod(): void
283
-    {
284
-        $client = static::createClient(['test_case' => 'connection']);
285
-        $this->disableCatchExceptions($client);
286
-        $client->request('PUT', '/', [], [], ['HTTP_Origin' => 'http://example.com']);
287
-        $this->assertSame(405, $client->getResponse()->getStatusCode());
288
-    }
289
-
290
-    public function testPreflightedRequestWhenEnabled(): void
291
-    {
292
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
293
-        $this->disableCatchExceptions($client);
294
-        $client->request('OPTIONS', '/batch', [], [], ['HTTP_Origin' => 'http://example.com']);
295
-        $this->assertCORSHeadersExists($client);
296
-    }
297
-
298
-    public function testNoCORSHeadersIfOriginHeaderNotExists(): void
299
-    {
300
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
301
-        $this->disableCatchExceptions($client);
302
-        $client->request('GET', '/', ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/graphql']);
303
-        $result = $client->getResponse()->getContent();
304
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
305
-        $this->assertCORSHeadersNotExists($client);
306
-    }
307
-
308
-    /**
309
-     * @param KernelBrowser $client
310
-     */
311
-    private function assertCORSHeadersNotExists($client): void
312
-    {
313
-        $headers = $client->getResponse()->headers->all();
314
-        $this->assertArrayNotHasKey('access-control-allow-origin', $headers);
315
-        $this->assertArrayNotHasKey('access-control-allow-methods', $headers);
316
-        $this->assertArrayNotHasKey('access-control-allow-credentials', $headers);
317
-        $this->assertArrayNotHasKey('access-control-allow-headers', $headers);
318
-        $this->assertArrayNotHasKey('access-control-max-age', $headers);
319
-    }
320
-
321
-    /**
322
-     * @param KernelBrowser $client
323
-     */
324
-    private function assertCORSHeadersExists($client): void
325
-    {
326
-        $response = $client->getResponse();
327
-        $this->assertSame(200, $response->getStatusCode());
328
-        $this->assertSame('http://example.com', $response->headers->get('Access-Control-Allow-Origin'));
329
-        $this->assertSame('OPTIONS, GET, POST', $response->headers->get('Access-Control-Allow-Methods'));
330
-        $this->assertSame('true', $response->headers->get('Access-Control-Allow-Credentials'));
331
-        $this->assertSame('Content-Type, Authorization', $response->headers->get('Access-Control-Allow-Headers'));
332
-        $this->assertSame('3600', $response->headers->get('Access-Control-Max-Age'));
333
-    }
334
-}
Please login to merge, or discard this patch.
Braces   -318 removed lines patch added patch discarded remove patch
@@ -14,321 +14,3 @@
 block discarded – undo
14 14
 class GraphControllerTest extends TestCase
15 15
 {
16 16
     private string $friendsQuery = <<<'EOF'
17
-        query FriendsQuery {
18
-          user {
19
-            friends(first: 2) {
20
-              totalCount
21
-              edges {
22
-                friendshipTime
23
-                node {
24
-                  name
25
-                }
26
-              }
27
-            }
28
-          }
29
-        }
30
-        EOF;
31
-
32
-    private string $friendsTotalCountQuery = <<<'EOF'
33
-        query FriendsTotalCountQuery {
34
-          user {
35
-            friends {
36
-              totalCount
37
-            }
38
-          }
39
-        }
40
-        EOF;
41
-
42
-    private array $expectedData = [
43
-        'user' => [
44
-            'friends' => [
45
-                'totalCount' => 4,
46
-                'edges' => [
47
-                    [
48
-                        'friendshipTime' => 'Yesterday',
49
-                        'node' => [
50
-                            'name' => 'Nick',
51
-                        ],
52
-                    ],
53
-                    [
54
-                        'friendshipTime' => 'Yesterday',
55
-                        'node' => [
56
-                            'name' => 'Lee',
57
-                        ],
58
-                    ],
59
-                ],
60
-            ],
61
-        ],
62
-    ];
63
-
64
-    /**
65
-     * @dataProvider graphQLEndpointUriProvider
66
-     */
67
-    public function testEndpointAction(string $uri): void
68
-    {
69
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
70
-        $this->disableCatchExceptions($client);
71
-
72
-        $client->request('GET', $uri, ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/graphql;charset=utf8', 'HTTP_Origin' => 'http://example.com']);
73
-        $result = $client->getResponse()->getContent();
74
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
75
-        $this->assertCORSHeadersExists($client);
76
-    }
77
-
78
-    public function graphQLEndpointUriProvider(): array
79
-    {
80
-        return [
81
-            ['/'],
82
-            ['/graphql/default'],
83
-        ];
84
-    }
85
-
86
-    public function testEndpointWithEmptyQuery(): void
87
-    {
88
-        $this->expectException(BadRequestHttpException::class);
89
-        $this->expectExceptionMessage('Must provide query parameter');
90
-        $client = static::createClient();
91
-        $this->disableCatchExceptions($client);
92
-        $client->request('GET', '/', []);
93
-        $client->getResponse()->getContent();
94
-    }
95
-
96
-    public function testEndpointWithEmptyPostJsonBodyQuery(): void
97
-    {
98
-        $this->expectException(BadRequestHttpException::class);
99
-        $this->expectExceptionMessage('The request content body must not be empty when using json content type request.');
100
-        $client = static::createClient();
101
-        $this->disableCatchExceptions($client);
102
-        $client->request('POST', '/', [], [], ['CONTENT_TYPE' => 'application/json']);
103
-    }
104
-
105
-    public function testEndpointWithJsonContentTypeAndGetQuery(): void
106
-    {
107
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
108
-        $this->disableCatchExceptions($client);
109
-        $client->request('GET', '/', ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/json']);
110
-        $result = $client->getResponse()->getContent();
111
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
112
-    }
113
-
114
-    public function testEndpointWithInvalidBodyQuery(): void
115
-    {
116
-        $this->expectException(BadRequestHttpException::class);
117
-        $this->expectExceptionMessage('POST body sent invalid JSON');
118
-        $client = static::createClient();
119
-        $this->disableCatchExceptions($client);
120
-        $client->request('GET', '/', [], [], ['CONTENT_TYPE' => 'application/json'], '{');
121
-        $client->getResponse()->getContent();
122
-    }
123
-
124
-    public function testEndpointActionWithVariables(): void
125
-    {
126
-        $client = static::createClient(['test_case' => 'connection']);
127
-        $this->disableCatchExceptions($client);
128
-
129
-        $query = <<<'EOF'
130
-            query FriendsQuery($firstFriends: Int) {
131
-              user {
132
-                friends(first: $firstFriends) {
133
-                  totalCount
134
-                  edges {
135
-                    friendshipTime
136
-                    node {
137
-                      name
138
-                    }
139
-                  }
140
-                }
141
-              }
142
-            }
143
-            EOF;
144
-
145
-        $content = json_encode(['query' => $query, 'variables' => '{"firstFriends": 2}']) ?: null;
146
-        $client->request('GET', '/', [], [], ['CONTENT_TYPE' => 'application/json'], $content);
147
-        $this->assertSame(200, $client->getResponse()->getStatusCode());
148
-    }
149
-
150
-    public function testEndpointActionWithInvalidVariables(): void
151
-    {
152
-        $this->expectException(BadRequestHttpException::class);
153
-        $this->expectExceptionMessage('Variables are invalid JSON');
154
-        $client = static::createClient(['test_case' => 'connection']);
155
-        $this->disableCatchExceptions($client);
156
-
157
-        $query = <<<'EOF'
158
-            query {
159
-              user
160
-            }
161
-            EOF;
162
-
163
-        $client->request('GET', '/', ['query' => $query, 'variables' => '"firstFriends": 2}']);
164
-    }
165
-
166
-    public function testMultipleEndpointActionWithUnknownSchemaName(): void
167
-    {
168
-        $this->expectException(NotFoundHttpException::class);
169
-        $this->expectExceptionMessage('Could not find "fake" schema.');
170
-        $client = static::createClient(['test_case' => 'connection']);
171
-        $this->disableCatchExceptions($client);
172
-
173
-        $query = <<<'EOF'
174
-            query {
175
-              user
176
-            }
177
-            EOF;
178
-
179
-        $client->request('GET', '/graphql/fake', ['query' => $query]);
180
-    }
181
-
182
-    public function testEndpointActionWithOperationName(): void
183
-    {
184
-        $client = static::createClient(['test_case' => 'connection']);
185
-        $this->disableCatchExceptions($client);
186
-
187
-        $query = $this->friendsQuery."\n".$this->friendsTotalCountQuery;
188
-
189
-        $client->request('POST', '/', ['query' => $query, 'operationName' => 'FriendsQuery'], [], ['CONTENT_TYPE' => 'application/x-www-form-urlencoded']);
190
-        $result = $client->getResponse()->getContent();
191
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
192
-    }
193
-
194
-    /**
195
-     * @dataProvider graphQLBatchEndpointUriProvider
196
-     */
197
-    public function testBatchEndpointAction(string $uri): void
198
-    {
199
-        $client = static::createClient(['test_case' => 'connection']);
200
-        $this->disableCatchExceptions($client);
201
-
202
-        $data = [
203
-            [
204
-                'id' => 'friends',
205
-                'query' => $this->friendsQuery,
206
-            ],
207
-            [
208
-                'id' => 'friendsTotalCount',
209
-                'query' => $this->friendsTotalCountQuery,
210
-            ],
211
-        ];
212
-
213
-        $content = json_encode($data) ?: null;
214
-        $client->request('POST', $uri, [], [], ['CONTENT_TYPE' => 'application/json'], $content);
215
-        $result = $client->getResponse()->getContent();
216
-
217
-        $expected = [
218
-            ['id' => 'friends', 'payload' => ['data' => $this->expectedData]],
219
-            ['id' => 'friendsTotalCount', 'payload' => ['data' => ['user' => ['friends' => ['totalCount' => 4]]]]],
220
-        ];
221
-        $this->assertSame($expected, json_decode($result, true), $result);
222
-    }
223
-
224
-    public function graphQLBatchEndpointUriProvider(): array
225
-    {
226
-        return [
227
-            ['/batch'],
228
-            ['/graphql/default/batch'],
229
-        ];
230
-    }
231
-
232
-    public function testBatchEndpointWithEmptyQuery(): void
233
-    {
234
-        $this->expectException(BadRequestHttpException::class);
235
-        $this->expectExceptionMessage('Must provide at least one valid query.');
236
-        $client = static::createClient();
237
-        $this->disableCatchExceptions($client);
238
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{}');
239
-        $client->getResponse()->getContent();
240
-    }
241
-
242
-    public function testBatchEndpointWrongContentType(): void
243
-    {
244
-        $this->expectException(BadRequestHttpException::class);
245
-        $this->expectExceptionMessage('Batching parser only accepts "application/json" or "multipart/form-data" content-type but got "".');
246
-        $client = static::createClient();
247
-        $this->disableCatchExceptions($client);
248
-        $client->request('GET', '/batch');
249
-        $client->getResponse()->getContent();
250
-    }
251
-
252
-    public function testBatchEndpointWithInvalidJson(): void
253
-    {
254
-        $this->expectException(BadRequestHttpException::class);
255
-        $this->expectExceptionMessage('POST body sent invalid JSON');
256
-        $client = static::createClient();
257
-        $this->disableCatchExceptions($client);
258
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{');
259
-        $client->getResponse()->getContent();
260
-    }
261
-
262
-    public function testBatchEndpointWithInvalidQuery(): void
263
-    {
264
-        $this->expectException(BadRequestHttpException::class);
265
-        $this->expectExceptionMessage('1 is not a valid query');
266
-        $client = static::createClient();
267
-        $this->disableCatchExceptions($client);
268
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{"test" : {"query": 1}}');
269
-        $client->getResponse()->getContent();
270
-    }
271
-
272
-    public function testPreflightedRequestWhenDisabled(): void
273
-    {
274
-        $client = static::createClient(['test_case' => 'connection']);
275
-        $this->disableCatchExceptions($client);
276
-        $client->request('OPTIONS', '/', [], [], ['HTTP_Origin' => 'http://example.com']);
277
-        $response = $client->getResponse();
278
-        $this->assertSame(200, $response->getStatusCode());
279
-        $this->assertCORSHeadersNotExists($client);
280
-    }
281
-
282
-    public function testUnAuthorizedMethod(): void
283
-    {
284
-        $client = static::createClient(['test_case' => 'connection']);
285
-        $this->disableCatchExceptions($client);
286
-        $client->request('PUT', '/', [], [], ['HTTP_Origin' => 'http://example.com']);
287
-        $this->assertSame(405, $client->getResponse()->getStatusCode());
288
-    }
289
-
290
-    public function testPreflightedRequestWhenEnabled(): void
291
-    {
292
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
293
-        $this->disableCatchExceptions($client);
294
-        $client->request('OPTIONS', '/batch', [], [], ['HTTP_Origin' => 'http://example.com']);
295
-        $this->assertCORSHeadersExists($client);
296
-    }
297
-
298
-    public function testNoCORSHeadersIfOriginHeaderNotExists(): void
299
-    {
300
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
301
-        $this->disableCatchExceptions($client);
302
-        $client->request('GET', '/', ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/graphql']);
303
-        $result = $client->getResponse()->getContent();
304
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
305
-        $this->assertCORSHeadersNotExists($client);
306
-    }
307
-
308
-    /**
309
-     * @param KernelBrowser $client
310
-     */
311
-    private function assertCORSHeadersNotExists($client): void
312
-    {
313
-        $headers = $client->getResponse()->headers->all();
314
-        $this->assertArrayNotHasKey('access-control-allow-origin', $headers);
315
-        $this->assertArrayNotHasKey('access-control-allow-methods', $headers);
316
-        $this->assertArrayNotHasKey('access-control-allow-credentials', $headers);
317
-        $this->assertArrayNotHasKey('access-control-allow-headers', $headers);
318
-        $this->assertArrayNotHasKey('access-control-max-age', $headers);
319
-    }
320
-
321
-    /**
322
-     * @param KernelBrowser $client
323
-     */
324
-    private function assertCORSHeadersExists($client): void
325
-    {
326
-        $response = $client->getResponse();
327
-        $this->assertSame(200, $response->getStatusCode());
328
-        $this->assertSame('http://example.com', $response->headers->get('Access-Control-Allow-Origin'));
329
-        $this->assertSame('OPTIONS, GET, POST', $response->headers->get('Access-Control-Allow-Methods'));
330
-        $this->assertSame('true', $response->headers->get('Access-Control-Allow-Credentials'));
331
-        $this->assertSame('Content-Type, Authorization', $response->headers->get('Access-Control-Allow-Headers'));
332
-        $this->assertSame('3600', $response->headers->get('Access-Control-Max-Age'));
333
-    }
334
-}
Please login to merge, or discard this patch.
Upper-Lower-Casing   -318 removed lines patch added patch discarded remove patch
@@ -14,321 +14,3 @@
 block discarded – undo
14 14
 class GraphControllerTest extends TestCase
15 15
 {
16 16
     private string $friendsQuery = <<<'EOF'
17
-        query FriendsQuery {
18
-          user {
19
-            friends(first: 2) {
20
-              totalCount
21
-              edges {
22
-                friendshipTime
23
-                node {
24
-                  name
25
-                }
26
-              }
27
-            }
28
-          }
29
-        }
30
-        EOF;
31
-
32
-    private string $friendsTotalCountQuery = <<<'EOF'
33
-        query FriendsTotalCountQuery {
34
-          user {
35
-            friends {
36
-              totalCount
37
-            }
38
-          }
39
-        }
40
-        EOF;
41
-
42
-    private array $expectedData = [
43
-        'user' => [
44
-            'friends' => [
45
-                'totalCount' => 4,
46
-                'edges' => [
47
-                    [
48
-                        'friendshipTime' => 'Yesterday',
49
-                        'node' => [
50
-                            'name' => 'Nick',
51
-                        ],
52
-                    ],
53
-                    [
54
-                        'friendshipTime' => 'Yesterday',
55
-                        'node' => [
56
-                            'name' => 'Lee',
57
-                        ],
58
-                    ],
59
-                ],
60
-            ],
61
-        ],
62
-    ];
63
-
64
-    /**
65
-     * @dataProvider graphQLEndpointUriProvider
66
-     */
67
-    public function testEndpointAction(string $uri): void
68
-    {
69
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
70
-        $this->disableCatchExceptions($client);
71
-
72
-        $client->request('GET', $uri, ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/graphql;charset=utf8', 'HTTP_Origin' => 'http://example.com']);
73
-        $result = $client->getResponse()->getContent();
74
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
75
-        $this->assertCORSHeadersExists($client);
76
-    }
77
-
78
-    public function graphQLEndpointUriProvider(): array
79
-    {
80
-        return [
81
-            ['/'],
82
-            ['/graphql/default'],
83
-        ];
84
-    }
85
-
86
-    public function testEndpointWithEmptyQuery(): void
87
-    {
88
-        $this->expectException(BadRequestHttpException::class);
89
-        $this->expectExceptionMessage('Must provide query parameter');
90
-        $client = static::createClient();
91
-        $this->disableCatchExceptions($client);
92
-        $client->request('GET', '/', []);
93
-        $client->getResponse()->getContent();
94
-    }
95
-
96
-    public function testEndpointWithEmptyPostJsonBodyQuery(): void
97
-    {
98
-        $this->expectException(BadRequestHttpException::class);
99
-        $this->expectExceptionMessage('The request content body must not be empty when using json content type request.');
100
-        $client = static::createClient();
101
-        $this->disableCatchExceptions($client);
102
-        $client->request('POST', '/', [], [], ['CONTENT_TYPE' => 'application/json']);
103
-    }
104
-
105
-    public function testEndpointWithJsonContentTypeAndGetQuery(): void
106
-    {
107
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
108
-        $this->disableCatchExceptions($client);
109
-        $client->request('GET', '/', ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/json']);
110
-        $result = $client->getResponse()->getContent();
111
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
112
-    }
113
-
114
-    public function testEndpointWithInvalidBodyQuery(): void
115
-    {
116
-        $this->expectException(BadRequestHttpException::class);
117
-        $this->expectExceptionMessage('POST body sent invalid JSON');
118
-        $client = static::createClient();
119
-        $this->disableCatchExceptions($client);
120
-        $client->request('GET', '/', [], [], ['CONTENT_TYPE' => 'application/json'], '{');
121
-        $client->getResponse()->getContent();
122
-    }
123
-
124
-    public function testEndpointActionWithVariables(): void
125
-    {
126
-        $client = static::createClient(['test_case' => 'connection']);
127
-        $this->disableCatchExceptions($client);
128
-
129
-        $query = <<<'EOF'
130
-            query FriendsQuery($firstFriends: Int) {
131
-              user {
132
-                friends(first: $firstFriends) {
133
-                  totalCount
134
-                  edges {
135
-                    friendshipTime
136
-                    node {
137
-                      name
138
-                    }
139
-                  }
140
-                }
141
-              }
142
-            }
143
-            EOF;
144
-
145
-        $content = json_encode(['query' => $query, 'variables' => '{"firstFriends": 2}']) ?: null;
146
-        $client->request('GET', '/', [], [], ['CONTENT_TYPE' => 'application/json'], $content);
147
-        $this->assertSame(200, $client->getResponse()->getStatusCode());
148
-    }
149
-
150
-    public function testEndpointActionWithInvalidVariables(): void
151
-    {
152
-        $this->expectException(BadRequestHttpException::class);
153
-        $this->expectExceptionMessage('Variables are invalid JSON');
154
-        $client = static::createClient(['test_case' => 'connection']);
155
-        $this->disableCatchExceptions($client);
156
-
157
-        $query = <<<'EOF'
158
-            query {
159
-              user
160
-            }
161
-            EOF;
162
-
163
-        $client->request('GET', '/', ['query' => $query, 'variables' => '"firstFriends": 2}']);
164
-    }
165
-
166
-    public function testMultipleEndpointActionWithUnknownSchemaName(): void
167
-    {
168
-        $this->expectException(NotFoundHttpException::class);
169
-        $this->expectExceptionMessage('Could not find "fake" schema.');
170
-        $client = static::createClient(['test_case' => 'connection']);
171
-        $this->disableCatchExceptions($client);
172
-
173
-        $query = <<<'EOF'
174
-            query {
175
-              user
176
-            }
177
-            EOF;
178
-
179
-        $client->request('GET', '/graphql/fake', ['query' => $query]);
180
-    }
181
-
182
-    public function testEndpointActionWithOperationName(): void
183
-    {
184
-        $client = static::createClient(['test_case' => 'connection']);
185
-        $this->disableCatchExceptions($client);
186
-
187
-        $query = $this->friendsQuery."\n".$this->friendsTotalCountQuery;
188
-
189
-        $client->request('POST', '/', ['query' => $query, 'operationName' => 'FriendsQuery'], [], ['CONTENT_TYPE' => 'application/x-www-form-urlencoded']);
190
-        $result = $client->getResponse()->getContent();
191
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
192
-    }
193
-
194
-    /**
195
-     * @dataProvider graphQLBatchEndpointUriProvider
196
-     */
197
-    public function testBatchEndpointAction(string $uri): void
198
-    {
199
-        $client = static::createClient(['test_case' => 'connection']);
200
-        $this->disableCatchExceptions($client);
201
-
202
-        $data = [
203
-            [
204
-                'id' => 'friends',
205
-                'query' => $this->friendsQuery,
206
-            ],
207
-            [
208
-                'id' => 'friendsTotalCount',
209
-                'query' => $this->friendsTotalCountQuery,
210
-            ],
211
-        ];
212
-
213
-        $content = json_encode($data) ?: null;
214
-        $client->request('POST', $uri, [], [], ['CONTENT_TYPE' => 'application/json'], $content);
215
-        $result = $client->getResponse()->getContent();
216
-
217
-        $expected = [
218
-            ['id' => 'friends', 'payload' => ['data' => $this->expectedData]],
219
-            ['id' => 'friendsTotalCount', 'payload' => ['data' => ['user' => ['friends' => ['totalCount' => 4]]]]],
220
-        ];
221
-        $this->assertSame($expected, json_decode($result, true), $result);
222
-    }
223
-
224
-    public function graphQLBatchEndpointUriProvider(): array
225
-    {
226
-        return [
227
-            ['/batch'],
228
-            ['/graphql/default/batch'],
229
-        ];
230
-    }
231
-
232
-    public function testBatchEndpointWithEmptyQuery(): void
233
-    {
234
-        $this->expectException(BadRequestHttpException::class);
235
-        $this->expectExceptionMessage('Must provide at least one valid query.');
236
-        $client = static::createClient();
237
-        $this->disableCatchExceptions($client);
238
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{}');
239
-        $client->getResponse()->getContent();
240
-    }
241
-
242
-    public function testBatchEndpointWrongContentType(): void
243
-    {
244
-        $this->expectException(BadRequestHttpException::class);
245
-        $this->expectExceptionMessage('Batching parser only accepts "application/json" or "multipart/form-data" content-type but got "".');
246
-        $client = static::createClient();
247
-        $this->disableCatchExceptions($client);
248
-        $client->request('GET', '/batch');
249
-        $client->getResponse()->getContent();
250
-    }
251
-
252
-    public function testBatchEndpointWithInvalidJson(): void
253
-    {
254
-        $this->expectException(BadRequestHttpException::class);
255
-        $this->expectExceptionMessage('POST body sent invalid JSON');
256
-        $client = static::createClient();
257
-        $this->disableCatchExceptions($client);
258
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{');
259
-        $client->getResponse()->getContent();
260
-    }
261
-
262
-    public function testBatchEndpointWithInvalidQuery(): void
263
-    {
264
-        $this->expectException(BadRequestHttpException::class);
265
-        $this->expectExceptionMessage('1 is not a valid query');
266
-        $client = static::createClient();
267
-        $this->disableCatchExceptions($client);
268
-        $client->request('GET', '/batch', [], [], ['CONTENT_TYPE' => 'application/json'], '{"test" : {"query": 1}}');
269
-        $client->getResponse()->getContent();
270
-    }
271
-
272
-    public function testPreflightedRequestWhenDisabled(): void
273
-    {
274
-        $client = static::createClient(['test_case' => 'connection']);
275
-        $this->disableCatchExceptions($client);
276
-        $client->request('OPTIONS', '/', [], [], ['HTTP_Origin' => 'http://example.com']);
277
-        $response = $client->getResponse();
278
-        $this->assertSame(200, $response->getStatusCode());
279
-        $this->assertCORSHeadersNotExists($client);
280
-    }
281
-
282
-    public function testUnAuthorizedMethod(): void
283
-    {
284
-        $client = static::createClient(['test_case' => 'connection']);
285
-        $this->disableCatchExceptions($client);
286
-        $client->request('PUT', '/', [], [], ['HTTP_Origin' => 'http://example.com']);
287
-        $this->assertSame(405, $client->getResponse()->getStatusCode());
288
-    }
289
-
290
-    public function testPreflightedRequestWhenEnabled(): void
291
-    {
292
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
293
-        $this->disableCatchExceptions($client);
294
-        $client->request('OPTIONS', '/batch', [], [], ['HTTP_Origin' => 'http://example.com']);
295
-        $this->assertCORSHeadersExists($client);
296
-    }
297
-
298
-    public function testNoCORSHeadersIfOriginHeaderNotExists(): void
299
-    {
300
-        $client = static::createClient(['test_case' => 'connectionWithCORS']);
301
-        $this->disableCatchExceptions($client);
302
-        $client->request('GET', '/', ['query' => $this->friendsQuery], [], ['CONTENT_TYPE' => 'application/graphql']);
303
-        $result = $client->getResponse()->getContent();
304
-        $this->assertSame(['data' => $this->expectedData], json_decode($result, true), $result);
305
-        $this->assertCORSHeadersNotExists($client);
306
-    }
307
-
308
-    /**
309
-     * @param KernelBrowser $client
310
-     */
311
-    private function assertCORSHeadersNotExists($client): void
312
-    {
313
-        $headers = $client->getResponse()->headers->all();
314
-        $this->assertArrayNotHasKey('access-control-allow-origin', $headers);
315
-        $this->assertArrayNotHasKey('access-control-allow-methods', $headers);
316
-        $this->assertArrayNotHasKey('access-control-allow-credentials', $headers);
317
-        $this->assertArrayNotHasKey('access-control-allow-headers', $headers);
318
-        $this->assertArrayNotHasKey('access-control-max-age', $headers);
319
-    }
320
-
321
-    /**
322
-     * @param KernelBrowser $client
323
-     */
324
-    private function assertCORSHeadersExists($client): void
325
-    {
326
-        $response = $client->getResponse();
327
-        $this->assertSame(200, $response->getStatusCode());
328
-        $this->assertSame('http://example.com', $response->headers->get('Access-Control-Allow-Origin'));
329
-        $this->assertSame('OPTIONS, GET, POST', $response->headers->get('Access-Control-Allow-Methods'));
330
-        $this->assertSame('true', $response->headers->get('Access-Control-Allow-Credentials'));
331
-        $this->assertSame('Content-Type, Authorization', $response->headers->get('Access-Control-Allow-Headers'));
332
-        $this->assertSame('3600', $response->headers->get('Access-Control-Max-Age'));
333
-    }
334
-}
Please login to merge, or discard this patch.