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

Test Failed
Push — master ( ebdcfe...a43a26 )
by Jérémiah
01:16 queued 10s
created
tests/ExpressionLanguage/TestCase.php 1 patch
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -106,13 +106,13 @@
 block discarded – undo
106 106
     protected function createGraphQLServices(array $services = []): GraphQLServices
107 107
     {
108 108
         $locateableServices = [
109
-            'typeResolver' => fn () => $this->createMock(TypeResolver::class),
110
-            'queryResolver' => fn () => $this->createMock(TypeResolver::class),
111
-            'mutationResolver' => fn () => $$this->createMock(MutationResolver::class),
109
+            'typeResolver' => fn() => $this->createMock(TypeResolver::class),
110
+            'queryResolver' => fn() => $this->createMock(TypeResolver::class),
111
+            'mutationResolver' => fn() => $$this->createMock(MutationResolver::class),
112 112
         ];
113 113
 
114 114
         foreach ($services as $id => $service) {
115
-            $locateableServices[$id] = fn () => $service;
115
+            $locateableServices[$id] = fn() => $service;
116 116
         }
117 117
 
118 118
         return new GraphQLServices($locateableServices);
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/Security/AccessTest.php 5 patches
Indentation   -340 removed lines patch added patch discarded remove patch
@@ -26,343 +26,3 @@
 block discarded – undo
26 26
     private string $userIsEnabledQuery = 'query ($hasAccess: Boolean = true) { user { isEnabled(hasAccess: $hasAccess) } }';
27 27
 
28 28
     private string $userFriendsQuery = <<<'QUERY'
29
-        query {
30
-          user {
31
-            friends(first: 2) {
32
-              edges {
33
-                node {
34
-                  name
35
-                }
36
-              }
37
-            }
38
-          }
39
-        }
40
-        QUERY;
41
-
42
-    private string $simpleMutationWithThunkQuery = <<<'MUTATION'
43
-        mutation M {
44
-          simpleMutationWithThunkFields(input: {inputData: %d, clientMutationId: "bac"}) {
45
-            result
46
-            clientMutationId
47
-          }
48
-        }
49
-        MUTATION;
50
-
51
-    public function setUp(): void
52
-    {
53
-        parent::setUp();
54
-        // load types
55
-        $this->loader = function ($class): void {
56
-            if (preg_match('@^'.preg_quote('Overblog\GraphQLBundle\Access\__DEFINITIONS__\\').'(.*)$@', $class, $matches)) {
57
-                $file = sys_get_temp_dir().'/OverblogGraphQLBundle/'.Kernel::VERSION.'/access/cache/testaccess/overblog/graphql-bundle/__definitions__/'.$matches[1].'.php';
58
-                if (file_exists($file)) {
59
-                    require $file;
60
-                }
61
-            }
62
-        };
63
-        spl_autoload_register($this->loader);
64
-    }
65
-
66
-    public function testCustomClassLoaderNotRegister(): void
67
-    {
68
-        $this->expectException(Error::class);
69
-        if ((int) phpversion() <= 7) {
70
-            $this->expectExceptionMessage('Class \'Overblog\GraphQLBundle\Access\__DEFINITIONS__\RootQueryType\' not found');
71
-        } else {
72
-            $this->expectExceptionMessage('Class "Overblog\GraphQLBundle\Access\__DEFINITIONS__\RootQueryType" not found');
73
-        }
74
-        spl_autoload_unregister($this->loader);
75
-        $this->assertResponse($this->userNameQuery, [], static::ANONYMOUS_USER, 'access');
76
-    }
77
-
78
-    public function testNotAuthenticatedUserAccessAsPromisedFulfilledTrue(): void
79
-    {
80
-        $this->assertResponse(
81
-            $this->userIsEnabledQuery,
82
-            ['data' => ['user' => ['isEnabled' => true]]],
83
-            static::ANONYMOUS_USER,
84
-            'access'
85
-        );
86
-    }
87
-
88
-    public function testNotAuthenticatedUserAccessAsPromisedFulfilledFalse(): void
89
-    {
90
-        $this->assertResponse(
91
-            $this->userIsEnabledQuery,
92
-            [
93
-                'data' => [
94
-                    'user' => [
95
-                        'isEnabled' => null,
96
-                    ],
97
-                ],
98
-                'extensions' => [
99
-                    'warnings' => [
100
-                        [
101
-                            'message' => 'Access denied to this field.',
102
-                            'locations' => [['line' => 1, 'column' => 45]],
103
-                            'path' => ['user', 'isEnabled'],
104
-                        ],
105
-                    ],
106
-                ],
107
-            ],
108
-            static::ANONYMOUS_USER,
109
-            'access',
110
-            '',
111
-            ['hasAccess' => false]
112
-        );
113
-    }
114
-
115
-    public function testNotAuthenticatedUserAccessToUserName(): void
116
-    {
117
-        $expected = [
118
-            'data' => [
119
-                'user' => [
120
-                    'name' => null,
121
-                ],
122
-            ],
123
-            'extensions' => [
124
-                'warnings' => [
125
-                    [
126
-                        'message' => 'Access denied to this field.',
127
-                        'locations' => [['line' => 1, 'column' => 16]],
128
-                        'path' => ['user', 'name'],
129
-                    ],
130
-                ],
131
-            ],
132
-        ];
133
-
134
-        $this->assertResponse($this->userNameQuery, $expected, static::ANONYMOUS_USER, 'access');
135
-    }
136
-
137
-    public function testNonAuthenticatedUserAccessSecuredFieldWhichInitiallyResolvesToArray(): void
138
-    {
139
-        $expected = [
140
-            'data' => [
141
-                'youShallNotSeeThisUnauthenticated' => null,
142
-            ],
143
-            'extensions' => [
144
-                'warnings' => [
145
-                    [
146
-                        'message' => 'Access denied to this field.',
147
-                        'locations' => [
148
-                            [
149
-                                'line' => 2,
150
-                                'column' => 3,
151
-                            ],
152
-                        ],
153
-                        'path' => ['youShallNotSeeThisUnauthenticated'],
154
-                    ],
155
-                ],
156
-            ],
157
-        ];
158
-
159
-        $query = <<<'QUERY'
160
-            {
161
-              youShallNotSeeThisUnauthenticated {
162
-                secretValue
163
-                youAreAuthenticated
164
-              }
165
-            }
166
-            QUERY;
167
-
168
-        $this->assertResponse($query, $expected, static::ANONYMOUS_USER, 'access');
169
-    }
170
-
171
-    public function testFullyAuthenticatedUserAccessToUserName(): void
172
-    {
173
-        $expected = [
174
-            'data' => [
175
-                'user' => [
176
-                    'name' => 'Dan',
177
-                ],
178
-            ],
179
-        ];
180
-
181
-        $this->assertResponse($this->userNameQuery, $expected, static::USER_RYAN, 'access');
182
-    }
183
-
184
-    public function testNotAuthenticatedUserAccessToUserRoles(): void
185
-    {
186
-        $this->assertResponse($this->userRolesQuery, $this->expectedFailedUserRoles(), static::ANONYMOUS_USER, 'access');
187
-    }
188
-
189
-    public function testAuthenticatedUserAccessToUserRolesWithoutEnoughRights(): void
190
-    {
191
-        $this->assertResponse($this->userRolesQuery, $this->expectedFailedUserRoles(), static::USER_RYAN, 'access');
192
-    }
193
-
194
-    public function testUserWithCorrectRightsAccessToUserRoles(): void
195
-    {
196
-        $expected = [
197
-            'data' => [
198
-                'user' => [
199
-                    'roles' => ['ROLE_USER'],
200
-                ],
201
-            ],
202
-        ];
203
-
204
-        $this->assertResponse($this->userRolesQuery, $expected, static::USER_ADMIN, 'access');
205
-    }
206
-
207
-    public function testUserForbiddenField(): void
208
-    {
209
-        $expected = [
210
-            'data' => [
211
-                'user' => null,
212
-            ],
213
-            'extensions' => [
214
-                'warnings' => [
215
-                    [
216
-                        'message' => 'Access denied to this field.',
217
-                        'locations' => [
218
-                            [
219
-                                'line' => 3,
220
-                                'column' => 5,
221
-                            ],
222
-                        ],
223
-                        'path' => ['user', 'forbidden'],
224
-                    ],
225
-                ],
226
-            ],
227
-        ];
228
-
229
-        $query = <<<'QUERY'
230
-            query MyQuery {
231
-              user {
232
-                forbidden
233
-              }
234
-            }
235
-            QUERY;
236
-
237
-        $this->assertResponse($query, $expected, static::USER_ADMIN, 'access');
238
-    }
239
-
240
-    public function testUserAccessToUserFriends(): void
241
-    {
242
-        $expected = [
243
-            'data' => [
244
-                'user' => [
245
-                    'friends' => [
246
-                        'edges' => [
247
-                            ['node' => ['name' => 'Nick']],
248
-                            ['node' => null],
249
-                        ],
250
-                    ],
251
-                ],
252
-            ],
253
-        ];
254
-
255
-        $this->assertResponse($this->userFriendsQuery, $expected, static::USER_ADMIN, 'access');
256
-    }
257
-
258
-    public function testUserAccessToUserFriendsAsArray(): void
259
-    {
260
-        $expected = [
261
-            'data' => [
262
-                'user' => [
263
-                    'friendsAsArray' => [1, null, 3],
264
-                ],
265
-            ],
266
-        ];
267
-
268
-        $this->assertResponse('query { user { friendsAsArray } }', $expected, static::USER_ADMIN, 'access');
269
-    }
270
-
271
-    public function testMutationAllowedUser(): void
272
-    {
273
-        $result = 123;
274
-
275
-        $expected = [
276
-            'data' => [
277
-                'simpleMutationWithThunkFields' => [
278
-                    'result' => $result,
279
-                    'clientMutationId' => 'bac',
280
-                ],
281
-            ],
282
-        ];
283
-
284
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, $result), $expected, static::USER_ADMIN, 'access');
285
-        $this->assertTrue(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
286
-    }
287
-
288
-    public function testMutationAllowedButNoRightsToDisplayPayload(): void
289
-    {
290
-        $expected = [
291
-            'data' => [
292
-                'simpleMutationWithThunkFields' => [
293
-                    'result' => null,
294
-                    'clientMutationId' => 'bac',
295
-                ],
296
-            ],
297
-            'extensions' => [
298
-                'warnings' => [
299
-                    [
300
-                        'message' => 'Access denied to this field.',
301
-                        'locations' => [
302
-                            [
303
-                                'line' => 3,
304
-                                'column' => 5,
305
-                            ],
306
-                        ],
307
-                        'path' => ['simpleMutationWithThunkFields', 'result'],
308
-                    ],
309
-                ],
310
-            ],
311
-        ];
312
-
313
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, 321), $expected, static::USER_ADMIN, 'access');
314
-        $this->assertTrue(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
315
-    }
316
-
317
-    public function testMutationNotAllowedUser(): void
318
-    {
319
-        $expected = [
320
-            'errors' => [
321
-                [
322
-                    'message' => 'Access denied to this field.',
323
-                    'locations' => [
324
-                        [
325
-                            'line' => 2,
326
-                            'column' => 3,
327
-                        ],
328
-                    ],
329
-                    'path' => ['simpleMutationWithThunkFields'],
330
-                ],
331
-            ],
332
-            'data' => [
333
-                'simpleMutationWithThunkFields' => null,
334
-            ],
335
-        ];
336
-
337
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, 123), $expected, static::USER_RYAN, 'access');
338
-        $this->assertFalse(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
339
-    }
340
-
341
-    private function expectedFailedUserRoles(): array
342
-    {
343
-        return [
344
-            'data' => [
345
-                'user' => [
346
-                    'roles' => null,
347
-                ],
348
-            ],
349
-            'extensions' => [
350
-                'warnings' => [
351
-                    [
352
-                        'message' => 'Access denied to this field.',
353
-                        'locations' => [
354
-                            [
355
-                                'line' => 1,
356
-                                'column' => 16,
357
-                            ],
358
-                        ],
359
-                        'path' => [
360
-                            'user',
361
-                            'roles',
362
-                        ],
363
-                    ],
364
-                ],
365
-            ],
366
-        ];
367
-    }
368
-}
Please login to merge, or discard this patch.
Switch Indentation   -340 removed lines patch added patch discarded remove patch
@@ -26,343 +26,3 @@
 block discarded – undo
26 26
     private string $userIsEnabledQuery = 'query ($hasAccess: Boolean = true) { user { isEnabled(hasAccess: $hasAccess) } }';
27 27
 
28 28
     private string $userFriendsQuery = <<<'QUERY'
29
-        query {
30
-          user {
31
-            friends(first: 2) {
32
-              edges {
33
-                node {
34
-                  name
35
-                }
36
-              }
37
-            }
38
-          }
39
-        }
40
-        QUERY;
41
-
42
-    private string $simpleMutationWithThunkQuery = <<<'MUTATION'
43
-        mutation M {
44
-          simpleMutationWithThunkFields(input: {inputData: %d, clientMutationId: "bac"}) {
45
-            result
46
-            clientMutationId
47
-          }
48
-        }
49
-        MUTATION;
50
-
51
-    public function setUp(): void
52
-    {
53
-        parent::setUp();
54
-        // load types
55
-        $this->loader = function ($class): void {
56
-            if (preg_match('@^'.preg_quote('Overblog\GraphQLBundle\Access\__DEFINITIONS__\\').'(.*)$@', $class, $matches)) {
57
-                $file = sys_get_temp_dir().'/OverblogGraphQLBundle/'.Kernel::VERSION.'/access/cache/testaccess/overblog/graphql-bundle/__definitions__/'.$matches[1].'.php';
58
-                if (file_exists($file)) {
59
-                    require $file;
60
-                }
61
-            }
62
-        };
63
-        spl_autoload_register($this->loader);
64
-    }
65
-
66
-    public function testCustomClassLoaderNotRegister(): void
67
-    {
68
-        $this->expectException(Error::class);
69
-        if ((int) phpversion() <= 7) {
70
-            $this->expectExceptionMessage('Class \'Overblog\GraphQLBundle\Access\__DEFINITIONS__\RootQueryType\' not found');
71
-        } else {
72
-            $this->expectExceptionMessage('Class "Overblog\GraphQLBundle\Access\__DEFINITIONS__\RootQueryType" not found');
73
-        }
74
-        spl_autoload_unregister($this->loader);
75
-        $this->assertResponse($this->userNameQuery, [], static::ANONYMOUS_USER, 'access');
76
-    }
77
-
78
-    public function testNotAuthenticatedUserAccessAsPromisedFulfilledTrue(): void
79
-    {
80
-        $this->assertResponse(
81
-            $this->userIsEnabledQuery,
82
-            ['data' => ['user' => ['isEnabled' => true]]],
83
-            static::ANONYMOUS_USER,
84
-            'access'
85
-        );
86
-    }
87
-
88
-    public function testNotAuthenticatedUserAccessAsPromisedFulfilledFalse(): void
89
-    {
90
-        $this->assertResponse(
91
-            $this->userIsEnabledQuery,
92
-            [
93
-                'data' => [
94
-                    'user' => [
95
-                        'isEnabled' => null,
96
-                    ],
97
-                ],
98
-                'extensions' => [
99
-                    'warnings' => [
100
-                        [
101
-                            'message' => 'Access denied to this field.',
102
-                            'locations' => [['line' => 1, 'column' => 45]],
103
-                            'path' => ['user', 'isEnabled'],
104
-                        ],
105
-                    ],
106
-                ],
107
-            ],
108
-            static::ANONYMOUS_USER,
109
-            'access',
110
-            '',
111
-            ['hasAccess' => false]
112
-        );
113
-    }
114
-
115
-    public function testNotAuthenticatedUserAccessToUserName(): void
116
-    {
117
-        $expected = [
118
-            'data' => [
119
-                'user' => [
120
-                    'name' => null,
121
-                ],
122
-            ],
123
-            'extensions' => [
124
-                'warnings' => [
125
-                    [
126
-                        'message' => 'Access denied to this field.',
127
-                        'locations' => [['line' => 1, 'column' => 16]],
128
-                        'path' => ['user', 'name'],
129
-                    ],
130
-                ],
131
-            ],
132
-        ];
133
-
134
-        $this->assertResponse($this->userNameQuery, $expected, static::ANONYMOUS_USER, 'access');
135
-    }
136
-
137
-    public function testNonAuthenticatedUserAccessSecuredFieldWhichInitiallyResolvesToArray(): void
138
-    {
139
-        $expected = [
140
-            'data' => [
141
-                'youShallNotSeeThisUnauthenticated' => null,
142
-            ],
143
-            'extensions' => [
144
-                'warnings' => [
145
-                    [
146
-                        'message' => 'Access denied to this field.',
147
-                        'locations' => [
148
-                            [
149
-                                'line' => 2,
150
-                                'column' => 3,
151
-                            ],
152
-                        ],
153
-                        'path' => ['youShallNotSeeThisUnauthenticated'],
154
-                    ],
155
-                ],
156
-            ],
157
-        ];
158
-
159
-        $query = <<<'QUERY'
160
-            {
161
-              youShallNotSeeThisUnauthenticated {
162
-                secretValue
163
-                youAreAuthenticated
164
-              }
165
-            }
166
-            QUERY;
167
-
168
-        $this->assertResponse($query, $expected, static::ANONYMOUS_USER, 'access');
169
-    }
170
-
171
-    public function testFullyAuthenticatedUserAccessToUserName(): void
172
-    {
173
-        $expected = [
174
-            'data' => [
175
-                'user' => [
176
-                    'name' => 'Dan',
177
-                ],
178
-            ],
179
-        ];
180
-
181
-        $this->assertResponse($this->userNameQuery, $expected, static::USER_RYAN, 'access');
182
-    }
183
-
184
-    public function testNotAuthenticatedUserAccessToUserRoles(): void
185
-    {
186
-        $this->assertResponse($this->userRolesQuery, $this->expectedFailedUserRoles(), static::ANONYMOUS_USER, 'access');
187
-    }
188
-
189
-    public function testAuthenticatedUserAccessToUserRolesWithoutEnoughRights(): void
190
-    {
191
-        $this->assertResponse($this->userRolesQuery, $this->expectedFailedUserRoles(), static::USER_RYAN, 'access');
192
-    }
193
-
194
-    public function testUserWithCorrectRightsAccessToUserRoles(): void
195
-    {
196
-        $expected = [
197
-            'data' => [
198
-                'user' => [
199
-                    'roles' => ['ROLE_USER'],
200
-                ],
201
-            ],
202
-        ];
203
-
204
-        $this->assertResponse($this->userRolesQuery, $expected, static::USER_ADMIN, 'access');
205
-    }
206
-
207
-    public function testUserForbiddenField(): void
208
-    {
209
-        $expected = [
210
-            'data' => [
211
-                'user' => null,
212
-            ],
213
-            'extensions' => [
214
-                'warnings' => [
215
-                    [
216
-                        'message' => 'Access denied to this field.',
217
-                        'locations' => [
218
-                            [
219
-                                'line' => 3,
220
-                                'column' => 5,
221
-                            ],
222
-                        ],
223
-                        'path' => ['user', 'forbidden'],
224
-                    ],
225
-                ],
226
-            ],
227
-        ];
228
-
229
-        $query = <<<'QUERY'
230
-            query MyQuery {
231
-              user {
232
-                forbidden
233
-              }
234
-            }
235
-            QUERY;
236
-
237
-        $this->assertResponse($query, $expected, static::USER_ADMIN, 'access');
238
-    }
239
-
240
-    public function testUserAccessToUserFriends(): void
241
-    {
242
-        $expected = [
243
-            'data' => [
244
-                'user' => [
245
-                    'friends' => [
246
-                        'edges' => [
247
-                            ['node' => ['name' => 'Nick']],
248
-                            ['node' => null],
249
-                        ],
250
-                    ],
251
-                ],
252
-            ],
253
-        ];
254
-
255
-        $this->assertResponse($this->userFriendsQuery, $expected, static::USER_ADMIN, 'access');
256
-    }
257
-
258
-    public function testUserAccessToUserFriendsAsArray(): void
259
-    {
260
-        $expected = [
261
-            'data' => [
262
-                'user' => [
263
-                    'friendsAsArray' => [1, null, 3],
264
-                ],
265
-            ],
266
-        ];
267
-
268
-        $this->assertResponse('query { user { friendsAsArray } }', $expected, static::USER_ADMIN, 'access');
269
-    }
270
-
271
-    public function testMutationAllowedUser(): void
272
-    {
273
-        $result = 123;
274
-
275
-        $expected = [
276
-            'data' => [
277
-                'simpleMutationWithThunkFields' => [
278
-                    'result' => $result,
279
-                    'clientMutationId' => 'bac',
280
-                ],
281
-            ],
282
-        ];
283
-
284
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, $result), $expected, static::USER_ADMIN, 'access');
285
-        $this->assertTrue(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
286
-    }
287
-
288
-    public function testMutationAllowedButNoRightsToDisplayPayload(): void
289
-    {
290
-        $expected = [
291
-            'data' => [
292
-                'simpleMutationWithThunkFields' => [
293
-                    'result' => null,
294
-                    'clientMutationId' => 'bac',
295
-                ],
296
-            ],
297
-            'extensions' => [
298
-                'warnings' => [
299
-                    [
300
-                        'message' => 'Access denied to this field.',
301
-                        'locations' => [
302
-                            [
303
-                                'line' => 3,
304
-                                'column' => 5,
305
-                            ],
306
-                        ],
307
-                        'path' => ['simpleMutationWithThunkFields', 'result'],
308
-                    ],
309
-                ],
310
-            ],
311
-        ];
312
-
313
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, 321), $expected, static::USER_ADMIN, 'access');
314
-        $this->assertTrue(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
315
-    }
316
-
317
-    public function testMutationNotAllowedUser(): void
318
-    {
319
-        $expected = [
320
-            'errors' => [
321
-                [
322
-                    'message' => 'Access denied to this field.',
323
-                    'locations' => [
324
-                        [
325
-                            'line' => 2,
326
-                            'column' => 3,
327
-                        ],
328
-                    ],
329
-                    'path' => ['simpleMutationWithThunkFields'],
330
-                ],
331
-            ],
332
-            'data' => [
333
-                'simpleMutationWithThunkFields' => null,
334
-            ],
335
-        ];
336
-
337
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, 123), $expected, static::USER_RYAN, 'access');
338
-        $this->assertFalse(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
339
-    }
340
-
341
-    private function expectedFailedUserRoles(): array
342
-    {
343
-        return [
344
-            'data' => [
345
-                'user' => [
346
-                    'roles' => null,
347
-                ],
348
-            ],
349
-            'extensions' => [
350
-                'warnings' => [
351
-                    [
352
-                        'message' => 'Access denied to this field.',
353
-                        'locations' => [
354
-                            [
355
-                                'line' => 1,
356
-                                'column' => 16,
357
-                            ],
358
-                        ],
359
-                        'path' => [
360
-                            'user',
361
-                            'roles',
362
-                        ],
363
-                    ],
364
-                ],
365
-            ],
366
-        ];
367
-    }
368
-}
Please login to merge, or discard this patch.
Spacing   -340 removed lines patch added patch discarded remove patch
@@ -26,343 +26,3 @@
 block discarded – undo
26 26
     private string $userIsEnabledQuery = 'query ($hasAccess: Boolean = true) { user { isEnabled(hasAccess: $hasAccess) } }';
27 27
 
28 28
     private string $userFriendsQuery = <<<'QUERY'
29
-        query {
30
-          user {
31
-            friends(first: 2) {
32
-              edges {
33
-                node {
34
-                  name
35
-                }
36
-              }
37
-            }
38
-          }
39
-        }
40
-        QUERY;
41
-
42
-    private string $simpleMutationWithThunkQuery = <<<'MUTATION'
43
-        mutation M {
44
-          simpleMutationWithThunkFields(input: {inputData: %d, clientMutationId: "bac"}) {
45
-            result
46
-            clientMutationId
47
-          }
48
-        }
49
-        MUTATION;
50
-
51
-    public function setUp(): void
52
-    {
53
-        parent::setUp();
54
-        // load types
55
-        $this->loader = function ($class): void {
56
-            if (preg_match('@^'.preg_quote('Overblog\GraphQLBundle\Access\__DEFINITIONS__\\').'(.*)$@', $class, $matches)) {
57
-                $file = sys_get_temp_dir().'/OverblogGraphQLBundle/'.Kernel::VERSION.'/access/cache/testaccess/overblog/graphql-bundle/__definitions__/'.$matches[1].'.php';
58
-                if (file_exists($file)) {
59
-                    require $file;
60
-                }
61
-            }
62
-        };
63
-        spl_autoload_register($this->loader);
64
-    }
65
-
66
-    public function testCustomClassLoaderNotRegister(): void
67
-    {
68
-        $this->expectException(Error::class);
69
-        if ((int) phpversion() <= 7) {
70
-            $this->expectExceptionMessage('Class \'Overblog\GraphQLBundle\Access\__DEFINITIONS__\RootQueryType\' not found');
71
-        } else {
72
-            $this->expectExceptionMessage('Class "Overblog\GraphQLBundle\Access\__DEFINITIONS__\RootQueryType" not found');
73
-        }
74
-        spl_autoload_unregister($this->loader);
75
-        $this->assertResponse($this->userNameQuery, [], static::ANONYMOUS_USER, 'access');
76
-    }
77
-
78
-    public function testNotAuthenticatedUserAccessAsPromisedFulfilledTrue(): void
79
-    {
80
-        $this->assertResponse(
81
-            $this->userIsEnabledQuery,
82
-            ['data' => ['user' => ['isEnabled' => true]]],
83
-            static::ANONYMOUS_USER,
84
-            'access'
85
-        );
86
-    }
87
-
88
-    public function testNotAuthenticatedUserAccessAsPromisedFulfilledFalse(): void
89
-    {
90
-        $this->assertResponse(
91
-            $this->userIsEnabledQuery,
92
-            [
93
-                'data' => [
94
-                    'user' => [
95
-                        'isEnabled' => null,
96
-                    ],
97
-                ],
98
-                'extensions' => [
99
-                    'warnings' => [
100
-                        [
101
-                            'message' => 'Access denied to this field.',
102
-                            'locations' => [['line' => 1, 'column' => 45]],
103
-                            'path' => ['user', 'isEnabled'],
104
-                        ],
105
-                    ],
106
-                ],
107
-            ],
108
-            static::ANONYMOUS_USER,
109
-            'access',
110
-            '',
111
-            ['hasAccess' => false]
112
-        );
113
-    }
114
-
115
-    public function testNotAuthenticatedUserAccessToUserName(): void
116
-    {
117
-        $expected = [
118
-            'data' => [
119
-                'user' => [
120
-                    'name' => null,
121
-                ],
122
-            ],
123
-            'extensions' => [
124
-                'warnings' => [
125
-                    [
126
-                        'message' => 'Access denied to this field.',
127
-                        'locations' => [['line' => 1, 'column' => 16]],
128
-                        'path' => ['user', 'name'],
129
-                    ],
130
-                ],
131
-            ],
132
-        ];
133
-
134
-        $this->assertResponse($this->userNameQuery, $expected, static::ANONYMOUS_USER, 'access');
135
-    }
136
-
137
-    public function testNonAuthenticatedUserAccessSecuredFieldWhichInitiallyResolvesToArray(): void
138
-    {
139
-        $expected = [
140
-            'data' => [
141
-                'youShallNotSeeThisUnauthenticated' => null,
142
-            ],
143
-            'extensions' => [
144
-                'warnings' => [
145
-                    [
146
-                        'message' => 'Access denied to this field.',
147
-                        'locations' => [
148
-                            [
149
-                                'line' => 2,
150
-                                'column' => 3,
151
-                            ],
152
-                        ],
153
-                        'path' => ['youShallNotSeeThisUnauthenticated'],
154
-                    ],
155
-                ],
156
-            ],
157
-        ];
158
-
159
-        $query = <<<'QUERY'
160
-            {
161
-              youShallNotSeeThisUnauthenticated {
162
-                secretValue
163
-                youAreAuthenticated
164
-              }
165
-            }
166
-            QUERY;
167
-
168
-        $this->assertResponse($query, $expected, static::ANONYMOUS_USER, 'access');
169
-    }
170
-
171
-    public function testFullyAuthenticatedUserAccessToUserName(): void
172
-    {
173
-        $expected = [
174
-            'data' => [
175
-                'user' => [
176
-                    'name' => 'Dan',
177
-                ],
178
-            ],
179
-        ];
180
-
181
-        $this->assertResponse($this->userNameQuery, $expected, static::USER_RYAN, 'access');
182
-    }
183
-
184
-    public function testNotAuthenticatedUserAccessToUserRoles(): void
185
-    {
186
-        $this->assertResponse($this->userRolesQuery, $this->expectedFailedUserRoles(), static::ANONYMOUS_USER, 'access');
187
-    }
188
-
189
-    public function testAuthenticatedUserAccessToUserRolesWithoutEnoughRights(): void
190
-    {
191
-        $this->assertResponse($this->userRolesQuery, $this->expectedFailedUserRoles(), static::USER_RYAN, 'access');
192
-    }
193
-
194
-    public function testUserWithCorrectRightsAccessToUserRoles(): void
195
-    {
196
-        $expected = [
197
-            'data' => [
198
-                'user' => [
199
-                    'roles' => ['ROLE_USER'],
200
-                ],
201
-            ],
202
-        ];
203
-
204
-        $this->assertResponse($this->userRolesQuery, $expected, static::USER_ADMIN, 'access');
205
-    }
206
-
207
-    public function testUserForbiddenField(): void
208
-    {
209
-        $expected = [
210
-            'data' => [
211
-                'user' => null,
212
-            ],
213
-            'extensions' => [
214
-                'warnings' => [
215
-                    [
216
-                        'message' => 'Access denied to this field.',
217
-                        'locations' => [
218
-                            [
219
-                                'line' => 3,
220
-                                'column' => 5,
221
-                            ],
222
-                        ],
223
-                        'path' => ['user', 'forbidden'],
224
-                    ],
225
-                ],
226
-            ],
227
-        ];
228
-
229
-        $query = <<<'QUERY'
230
-            query MyQuery {
231
-              user {
232
-                forbidden
233
-              }
234
-            }
235
-            QUERY;
236
-
237
-        $this->assertResponse($query, $expected, static::USER_ADMIN, 'access');
238
-    }
239
-
240
-    public function testUserAccessToUserFriends(): void
241
-    {
242
-        $expected = [
243
-            'data' => [
244
-                'user' => [
245
-                    'friends' => [
246
-                        'edges' => [
247
-                            ['node' => ['name' => 'Nick']],
248
-                            ['node' => null],
249
-                        ],
250
-                    ],
251
-                ],
252
-            ],
253
-        ];
254
-
255
-        $this->assertResponse($this->userFriendsQuery, $expected, static::USER_ADMIN, 'access');
256
-    }
257
-
258
-    public function testUserAccessToUserFriendsAsArray(): void
259
-    {
260
-        $expected = [
261
-            'data' => [
262
-                'user' => [
263
-                    'friendsAsArray' => [1, null, 3],
264
-                ],
265
-            ],
266
-        ];
267
-
268
-        $this->assertResponse('query { user { friendsAsArray } }', $expected, static::USER_ADMIN, 'access');
269
-    }
270
-
271
-    public function testMutationAllowedUser(): void
272
-    {
273
-        $result = 123;
274
-
275
-        $expected = [
276
-            'data' => [
277
-                'simpleMutationWithThunkFields' => [
278
-                    'result' => $result,
279
-                    'clientMutationId' => 'bac',
280
-                ],
281
-            ],
282
-        ];
283
-
284
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, $result), $expected, static::USER_ADMIN, 'access');
285
-        $this->assertTrue(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
286
-    }
287
-
288
-    public function testMutationAllowedButNoRightsToDisplayPayload(): void
289
-    {
290
-        $expected = [
291
-            'data' => [
292
-                'simpleMutationWithThunkFields' => [
293
-                    'result' => null,
294
-                    'clientMutationId' => 'bac',
295
-                ],
296
-            ],
297
-            'extensions' => [
298
-                'warnings' => [
299
-                    [
300
-                        'message' => 'Access denied to this field.',
301
-                        'locations' => [
302
-                            [
303
-                                'line' => 3,
304
-                                'column' => 5,
305
-                            ],
306
-                        ],
307
-                        'path' => ['simpleMutationWithThunkFields', 'result'],
308
-                    ],
309
-                ],
310
-            ],
311
-        ];
312
-
313
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, 321), $expected, static::USER_ADMIN, 'access');
314
-        $this->assertTrue(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
315
-    }
316
-
317
-    public function testMutationNotAllowedUser(): void
318
-    {
319
-        $expected = [
320
-            'errors' => [
321
-                [
322
-                    'message' => 'Access denied to this field.',
323
-                    'locations' => [
324
-                        [
325
-                            'line' => 2,
326
-                            'column' => 3,
327
-                        ],
328
-                    ],
329
-                    'path' => ['simpleMutationWithThunkFields'],
330
-                ],
331
-            ],
332
-            'data' => [
333
-                'simpleMutationWithThunkFields' => null,
334
-            ],
335
-        ];
336
-
337
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, 123), $expected, static::USER_RYAN, 'access');
338
-        $this->assertFalse(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
339
-    }
340
-
341
-    private function expectedFailedUserRoles(): array
342
-    {
343
-        return [
344
-            'data' => [
345
-                'user' => [
346
-                    'roles' => null,
347
-                ],
348
-            ],
349
-            'extensions' => [
350
-                'warnings' => [
351
-                    [
352
-                        'message' => 'Access denied to this field.',
353
-                        'locations' => [
354
-                            [
355
-                                'line' => 1,
356
-                                'column' => 16,
357
-                            ],
358
-                        ],
359
-                        'path' => [
360
-                            'user',
361
-                            'roles',
362
-                        ],
363
-                    ],
364
-                ],
365
-            ],
366
-        ];
367
-    }
368
-}
Please login to merge, or discard this patch.
Braces   -340 removed lines patch added patch discarded remove patch
@@ -26,343 +26,3 @@
 block discarded – undo
26 26
     private string $userIsEnabledQuery = 'query ($hasAccess: Boolean = true) { user { isEnabled(hasAccess: $hasAccess) } }';
27 27
 
28 28
     private string $userFriendsQuery = <<<'QUERY'
29
-        query {
30
-          user {
31
-            friends(first: 2) {
32
-              edges {
33
-                node {
34
-                  name
35
-                }
36
-              }
37
-            }
38
-          }
39
-        }
40
-        QUERY;
41
-
42
-    private string $simpleMutationWithThunkQuery = <<<'MUTATION'
43
-        mutation M {
44
-          simpleMutationWithThunkFields(input: {inputData: %d, clientMutationId: "bac"}) {
45
-            result
46
-            clientMutationId
47
-          }
48
-        }
49
-        MUTATION;
50
-
51
-    public function setUp(): void
52
-    {
53
-        parent::setUp();
54
-        // load types
55
-        $this->loader = function ($class): void {
56
-            if (preg_match('@^'.preg_quote('Overblog\GraphQLBundle\Access\__DEFINITIONS__\\').'(.*)$@', $class, $matches)) {
57
-                $file = sys_get_temp_dir().'/OverblogGraphQLBundle/'.Kernel::VERSION.'/access/cache/testaccess/overblog/graphql-bundle/__definitions__/'.$matches[1].'.php';
58
-                if (file_exists($file)) {
59
-                    require $file;
60
-                }
61
-            }
62
-        };
63
-        spl_autoload_register($this->loader);
64
-    }
65
-
66
-    public function testCustomClassLoaderNotRegister(): void
67
-    {
68
-        $this->expectException(Error::class);
69
-        if ((int) phpversion() <= 7) {
70
-            $this->expectExceptionMessage('Class \'Overblog\GraphQLBundle\Access\__DEFINITIONS__\RootQueryType\' not found');
71
-        } else {
72
-            $this->expectExceptionMessage('Class "Overblog\GraphQLBundle\Access\__DEFINITIONS__\RootQueryType" not found');
73
-        }
74
-        spl_autoload_unregister($this->loader);
75
-        $this->assertResponse($this->userNameQuery, [], static::ANONYMOUS_USER, 'access');
76
-    }
77
-
78
-    public function testNotAuthenticatedUserAccessAsPromisedFulfilledTrue(): void
79
-    {
80
-        $this->assertResponse(
81
-            $this->userIsEnabledQuery,
82
-            ['data' => ['user' => ['isEnabled' => true]]],
83
-            static::ANONYMOUS_USER,
84
-            'access'
85
-        );
86
-    }
87
-
88
-    public function testNotAuthenticatedUserAccessAsPromisedFulfilledFalse(): void
89
-    {
90
-        $this->assertResponse(
91
-            $this->userIsEnabledQuery,
92
-            [
93
-                'data' => [
94
-                    'user' => [
95
-                        'isEnabled' => null,
96
-                    ],
97
-                ],
98
-                'extensions' => [
99
-                    'warnings' => [
100
-                        [
101
-                            'message' => 'Access denied to this field.',
102
-                            'locations' => [['line' => 1, 'column' => 45]],
103
-                            'path' => ['user', 'isEnabled'],
104
-                        ],
105
-                    ],
106
-                ],
107
-            ],
108
-            static::ANONYMOUS_USER,
109
-            'access',
110
-            '',
111
-            ['hasAccess' => false]
112
-        );
113
-    }
114
-
115
-    public function testNotAuthenticatedUserAccessToUserName(): void
116
-    {
117
-        $expected = [
118
-            'data' => [
119
-                'user' => [
120
-                    'name' => null,
121
-                ],
122
-            ],
123
-            'extensions' => [
124
-                'warnings' => [
125
-                    [
126
-                        'message' => 'Access denied to this field.',
127
-                        'locations' => [['line' => 1, 'column' => 16]],
128
-                        'path' => ['user', 'name'],
129
-                    ],
130
-                ],
131
-            ],
132
-        ];
133
-
134
-        $this->assertResponse($this->userNameQuery, $expected, static::ANONYMOUS_USER, 'access');
135
-    }
136
-
137
-    public function testNonAuthenticatedUserAccessSecuredFieldWhichInitiallyResolvesToArray(): void
138
-    {
139
-        $expected = [
140
-            'data' => [
141
-                'youShallNotSeeThisUnauthenticated' => null,
142
-            ],
143
-            'extensions' => [
144
-                'warnings' => [
145
-                    [
146
-                        'message' => 'Access denied to this field.',
147
-                        'locations' => [
148
-                            [
149
-                                'line' => 2,
150
-                                'column' => 3,
151
-                            ],
152
-                        ],
153
-                        'path' => ['youShallNotSeeThisUnauthenticated'],
154
-                    ],
155
-                ],
156
-            ],
157
-        ];
158
-
159
-        $query = <<<'QUERY'
160
-            {
161
-              youShallNotSeeThisUnauthenticated {
162
-                secretValue
163
-                youAreAuthenticated
164
-              }
165
-            }
166
-            QUERY;
167
-
168
-        $this->assertResponse($query, $expected, static::ANONYMOUS_USER, 'access');
169
-    }
170
-
171
-    public function testFullyAuthenticatedUserAccessToUserName(): void
172
-    {
173
-        $expected = [
174
-            'data' => [
175
-                'user' => [
176
-                    'name' => 'Dan',
177
-                ],
178
-            ],
179
-        ];
180
-
181
-        $this->assertResponse($this->userNameQuery, $expected, static::USER_RYAN, 'access');
182
-    }
183
-
184
-    public function testNotAuthenticatedUserAccessToUserRoles(): void
185
-    {
186
-        $this->assertResponse($this->userRolesQuery, $this->expectedFailedUserRoles(), static::ANONYMOUS_USER, 'access');
187
-    }
188
-
189
-    public function testAuthenticatedUserAccessToUserRolesWithoutEnoughRights(): void
190
-    {
191
-        $this->assertResponse($this->userRolesQuery, $this->expectedFailedUserRoles(), static::USER_RYAN, 'access');
192
-    }
193
-
194
-    public function testUserWithCorrectRightsAccessToUserRoles(): void
195
-    {
196
-        $expected = [
197
-            'data' => [
198
-                'user' => [
199
-                    'roles' => ['ROLE_USER'],
200
-                ],
201
-            ],
202
-        ];
203
-
204
-        $this->assertResponse($this->userRolesQuery, $expected, static::USER_ADMIN, 'access');
205
-    }
206
-
207
-    public function testUserForbiddenField(): void
208
-    {
209
-        $expected = [
210
-            'data' => [
211
-                'user' => null,
212
-            ],
213
-            'extensions' => [
214
-                'warnings' => [
215
-                    [
216
-                        'message' => 'Access denied to this field.',
217
-                        'locations' => [
218
-                            [
219
-                                'line' => 3,
220
-                                'column' => 5,
221
-                            ],
222
-                        ],
223
-                        'path' => ['user', 'forbidden'],
224
-                    ],
225
-                ],
226
-            ],
227
-        ];
228
-
229
-        $query = <<<'QUERY'
230
-            query MyQuery {
231
-              user {
232
-                forbidden
233
-              }
234
-            }
235
-            QUERY;
236
-
237
-        $this->assertResponse($query, $expected, static::USER_ADMIN, 'access');
238
-    }
239
-
240
-    public function testUserAccessToUserFriends(): void
241
-    {
242
-        $expected = [
243
-            'data' => [
244
-                'user' => [
245
-                    'friends' => [
246
-                        'edges' => [
247
-                            ['node' => ['name' => 'Nick']],
248
-                            ['node' => null],
249
-                        ],
250
-                    ],
251
-                ],
252
-            ],
253
-        ];
254
-
255
-        $this->assertResponse($this->userFriendsQuery, $expected, static::USER_ADMIN, 'access');
256
-    }
257
-
258
-    public function testUserAccessToUserFriendsAsArray(): void
259
-    {
260
-        $expected = [
261
-            'data' => [
262
-                'user' => [
263
-                    'friendsAsArray' => [1, null, 3],
264
-                ],
265
-            ],
266
-        ];
267
-
268
-        $this->assertResponse('query { user { friendsAsArray } }', $expected, static::USER_ADMIN, 'access');
269
-    }
270
-
271
-    public function testMutationAllowedUser(): void
272
-    {
273
-        $result = 123;
274
-
275
-        $expected = [
276
-            'data' => [
277
-                'simpleMutationWithThunkFields' => [
278
-                    'result' => $result,
279
-                    'clientMutationId' => 'bac',
280
-                ],
281
-            ],
282
-        ];
283
-
284
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, $result), $expected, static::USER_ADMIN, 'access');
285
-        $this->assertTrue(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
286
-    }
287
-
288
-    public function testMutationAllowedButNoRightsToDisplayPayload(): void
289
-    {
290
-        $expected = [
291
-            'data' => [
292
-                'simpleMutationWithThunkFields' => [
293
-                    'result' => null,
294
-                    'clientMutationId' => 'bac',
295
-                ],
296
-            ],
297
-            'extensions' => [
298
-                'warnings' => [
299
-                    [
300
-                        'message' => 'Access denied to this field.',
301
-                        'locations' => [
302
-                            [
303
-                                'line' => 3,
304
-                                'column' => 5,
305
-                            ],
306
-                        ],
307
-                        'path' => ['simpleMutationWithThunkFields', 'result'],
308
-                    ],
309
-                ],
310
-            ],
311
-        ];
312
-
313
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, 321), $expected, static::USER_ADMIN, 'access');
314
-        $this->assertTrue(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
315
-    }
316
-
317
-    public function testMutationNotAllowedUser(): void
318
-    {
319
-        $expected = [
320
-            'errors' => [
321
-                [
322
-                    'message' => 'Access denied to this field.',
323
-                    'locations' => [
324
-                        [
325
-                            'line' => 2,
326
-                            'column' => 3,
327
-                        ],
328
-                    ],
329
-                    'path' => ['simpleMutationWithThunkFields'],
330
-                ],
331
-            ],
332
-            'data' => [
333
-                'simpleMutationWithThunkFields' => null,
334
-            ],
335
-        ];
336
-
337
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, 123), $expected, static::USER_RYAN, 'access');
338
-        $this->assertFalse(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
339
-    }
340
-
341
-    private function expectedFailedUserRoles(): array
342
-    {
343
-        return [
344
-            'data' => [
345
-                'user' => [
346
-                    'roles' => null,
347
-                ],
348
-            ],
349
-            'extensions' => [
350
-                'warnings' => [
351
-                    [
352
-                        'message' => 'Access denied to this field.',
353
-                        'locations' => [
354
-                            [
355
-                                'line' => 1,
356
-                                'column' => 16,
357
-                            ],
358
-                        ],
359
-                        'path' => [
360
-                            'user',
361
-                            'roles',
362
-                        ],
363
-                    ],
364
-                ],
365
-            ],
366
-        ];
367
-    }
368
-}
Please login to merge, or discard this patch.
Upper-Lower-Casing   -340 removed lines patch added patch discarded remove patch
@@ -26,343 +26,3 @@
 block discarded – undo
26 26
     private string $userIsEnabledQuery = 'query ($hasAccess: Boolean = true) { user { isEnabled(hasAccess: $hasAccess) } }';
27 27
 
28 28
     private string $userFriendsQuery = <<<'QUERY'
29
-        query {
30
-          user {
31
-            friends(first: 2) {
32
-              edges {
33
-                node {
34
-                  name
35
-                }
36
-              }
37
-            }
38
-          }
39
-        }
40
-        QUERY;
41
-
42
-    private string $simpleMutationWithThunkQuery = <<<'MUTATION'
43
-        mutation M {
44
-          simpleMutationWithThunkFields(input: {inputData: %d, clientMutationId: "bac"}) {
45
-            result
46
-            clientMutationId
47
-          }
48
-        }
49
-        MUTATION;
50
-
51
-    public function setUp(): void
52
-    {
53
-        parent::setUp();
54
-        // load types
55
-        $this->loader = function ($class): void {
56
-            if (preg_match('@^'.preg_quote('Overblog\GraphQLBundle\Access\__DEFINITIONS__\\').'(.*)$@', $class, $matches)) {
57
-                $file = sys_get_temp_dir().'/OverblogGraphQLBundle/'.Kernel::VERSION.'/access/cache/testaccess/overblog/graphql-bundle/__definitions__/'.$matches[1].'.php';
58
-                if (file_exists($file)) {
59
-                    require $file;
60
-                }
61
-            }
62
-        };
63
-        spl_autoload_register($this->loader);
64
-    }
65
-
66
-    public function testCustomClassLoaderNotRegister(): void
67
-    {
68
-        $this->expectException(Error::class);
69
-        if ((int) phpversion() <= 7) {
70
-            $this->expectExceptionMessage('Class \'Overblog\GraphQLBundle\Access\__DEFINITIONS__\RootQueryType\' not found');
71
-        } else {
72
-            $this->expectExceptionMessage('Class "Overblog\GraphQLBundle\Access\__DEFINITIONS__\RootQueryType" not found');
73
-        }
74
-        spl_autoload_unregister($this->loader);
75
-        $this->assertResponse($this->userNameQuery, [], static::ANONYMOUS_USER, 'access');
76
-    }
77
-
78
-    public function testNotAuthenticatedUserAccessAsPromisedFulfilledTrue(): void
79
-    {
80
-        $this->assertResponse(
81
-            $this->userIsEnabledQuery,
82
-            ['data' => ['user' => ['isEnabled' => true]]],
83
-            static::ANONYMOUS_USER,
84
-            'access'
85
-        );
86
-    }
87
-
88
-    public function testNotAuthenticatedUserAccessAsPromisedFulfilledFalse(): void
89
-    {
90
-        $this->assertResponse(
91
-            $this->userIsEnabledQuery,
92
-            [
93
-                'data' => [
94
-                    'user' => [
95
-                        'isEnabled' => null,
96
-                    ],
97
-                ],
98
-                'extensions' => [
99
-                    'warnings' => [
100
-                        [
101
-                            'message' => 'Access denied to this field.',
102
-                            'locations' => [['line' => 1, 'column' => 45]],
103
-                            'path' => ['user', 'isEnabled'],
104
-                        ],
105
-                    ],
106
-                ],
107
-            ],
108
-            static::ANONYMOUS_USER,
109
-            'access',
110
-            '',
111
-            ['hasAccess' => false]
112
-        );
113
-    }
114
-
115
-    public function testNotAuthenticatedUserAccessToUserName(): void
116
-    {
117
-        $expected = [
118
-            'data' => [
119
-                'user' => [
120
-                    'name' => null,
121
-                ],
122
-            ],
123
-            'extensions' => [
124
-                'warnings' => [
125
-                    [
126
-                        'message' => 'Access denied to this field.',
127
-                        'locations' => [['line' => 1, 'column' => 16]],
128
-                        'path' => ['user', 'name'],
129
-                    ],
130
-                ],
131
-            ],
132
-        ];
133
-
134
-        $this->assertResponse($this->userNameQuery, $expected, static::ANONYMOUS_USER, 'access');
135
-    }
136
-
137
-    public function testNonAuthenticatedUserAccessSecuredFieldWhichInitiallyResolvesToArray(): void
138
-    {
139
-        $expected = [
140
-            'data' => [
141
-                'youShallNotSeeThisUnauthenticated' => null,
142
-            ],
143
-            'extensions' => [
144
-                'warnings' => [
145
-                    [
146
-                        'message' => 'Access denied to this field.',
147
-                        'locations' => [
148
-                            [
149
-                                'line' => 2,
150
-                                'column' => 3,
151
-                            ],
152
-                        ],
153
-                        'path' => ['youShallNotSeeThisUnauthenticated'],
154
-                    ],
155
-                ],
156
-            ],
157
-        ];
158
-
159
-        $query = <<<'QUERY'
160
-            {
161
-              youShallNotSeeThisUnauthenticated {
162
-                secretValue
163
-                youAreAuthenticated
164
-              }
165
-            }
166
-            QUERY;
167
-
168
-        $this->assertResponse($query, $expected, static::ANONYMOUS_USER, 'access');
169
-    }
170
-
171
-    public function testFullyAuthenticatedUserAccessToUserName(): void
172
-    {
173
-        $expected = [
174
-            'data' => [
175
-                'user' => [
176
-                    'name' => 'Dan',
177
-                ],
178
-            ],
179
-        ];
180
-
181
-        $this->assertResponse($this->userNameQuery, $expected, static::USER_RYAN, 'access');
182
-    }
183
-
184
-    public function testNotAuthenticatedUserAccessToUserRoles(): void
185
-    {
186
-        $this->assertResponse($this->userRolesQuery, $this->expectedFailedUserRoles(), static::ANONYMOUS_USER, 'access');
187
-    }
188
-
189
-    public function testAuthenticatedUserAccessToUserRolesWithoutEnoughRights(): void
190
-    {
191
-        $this->assertResponse($this->userRolesQuery, $this->expectedFailedUserRoles(), static::USER_RYAN, 'access');
192
-    }
193
-
194
-    public function testUserWithCorrectRightsAccessToUserRoles(): void
195
-    {
196
-        $expected = [
197
-            'data' => [
198
-                'user' => [
199
-                    'roles' => ['ROLE_USER'],
200
-                ],
201
-            ],
202
-        ];
203
-
204
-        $this->assertResponse($this->userRolesQuery, $expected, static::USER_ADMIN, 'access');
205
-    }
206
-
207
-    public function testUserForbiddenField(): void
208
-    {
209
-        $expected = [
210
-            'data' => [
211
-                'user' => null,
212
-            ],
213
-            'extensions' => [
214
-                'warnings' => [
215
-                    [
216
-                        'message' => 'Access denied to this field.',
217
-                        'locations' => [
218
-                            [
219
-                                'line' => 3,
220
-                                'column' => 5,
221
-                            ],
222
-                        ],
223
-                        'path' => ['user', 'forbidden'],
224
-                    ],
225
-                ],
226
-            ],
227
-        ];
228
-
229
-        $query = <<<'QUERY'
230
-            query MyQuery {
231
-              user {
232
-                forbidden
233
-              }
234
-            }
235
-            QUERY;
236
-
237
-        $this->assertResponse($query, $expected, static::USER_ADMIN, 'access');
238
-    }
239
-
240
-    public function testUserAccessToUserFriends(): void
241
-    {
242
-        $expected = [
243
-            'data' => [
244
-                'user' => [
245
-                    'friends' => [
246
-                        'edges' => [
247
-                            ['node' => ['name' => 'Nick']],
248
-                            ['node' => null],
249
-                        ],
250
-                    ],
251
-                ],
252
-            ],
253
-        ];
254
-
255
-        $this->assertResponse($this->userFriendsQuery, $expected, static::USER_ADMIN, 'access');
256
-    }
257
-
258
-    public function testUserAccessToUserFriendsAsArray(): void
259
-    {
260
-        $expected = [
261
-            'data' => [
262
-                'user' => [
263
-                    'friendsAsArray' => [1, null, 3],
264
-                ],
265
-            ],
266
-        ];
267
-
268
-        $this->assertResponse('query { user { friendsAsArray } }', $expected, static::USER_ADMIN, 'access');
269
-    }
270
-
271
-    public function testMutationAllowedUser(): void
272
-    {
273
-        $result = 123;
274
-
275
-        $expected = [
276
-            'data' => [
277
-                'simpleMutationWithThunkFields' => [
278
-                    'result' => $result,
279
-                    'clientMutationId' => 'bac',
280
-                ],
281
-            ],
282
-        ];
283
-
284
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, $result), $expected, static::USER_ADMIN, 'access');
285
-        $this->assertTrue(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
286
-    }
287
-
288
-    public function testMutationAllowedButNoRightsToDisplayPayload(): void
289
-    {
290
-        $expected = [
291
-            'data' => [
292
-                'simpleMutationWithThunkFields' => [
293
-                    'result' => null,
294
-                    'clientMutationId' => 'bac',
295
-                ],
296
-            ],
297
-            'extensions' => [
298
-                'warnings' => [
299
-                    [
300
-                        'message' => 'Access denied to this field.',
301
-                        'locations' => [
302
-                            [
303
-                                'line' => 3,
304
-                                'column' => 5,
305
-                            ],
306
-                        ],
307
-                        'path' => ['simpleMutationWithThunkFields', 'result'],
308
-                    ],
309
-                ],
310
-            ],
311
-        ];
312
-
313
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, 321), $expected, static::USER_ADMIN, 'access');
314
-        $this->assertTrue(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
315
-    }
316
-
317
-    public function testMutationNotAllowedUser(): void
318
-    {
319
-        $expected = [
320
-            'errors' => [
321
-                [
322
-                    'message' => 'Access denied to this field.',
323
-                    'locations' => [
324
-                        [
325
-                            'line' => 2,
326
-                            'column' => 3,
327
-                        ],
328
-                    ],
329
-                    'path' => ['simpleMutationWithThunkFields'],
330
-                ],
331
-            ],
332
-            'data' => [
333
-                'simpleMutationWithThunkFields' => null,
334
-            ],
335
-        ];
336
-
337
-        $this->assertResponse(sprintf($this->simpleMutationWithThunkQuery, 123), $expected, static::USER_RYAN, 'access');
338
-        $this->assertFalse(SimpleMutationWithThunkFieldsMutation::hasMutate(true));
339
-    }
340
-
341
-    private function expectedFailedUserRoles(): array
342
-    {
343
-        return [
344
-            'data' => [
345
-                'user' => [
346
-                    'roles' => null,
347
-                ],
348
-            ],
349
-            'extensions' => [
350
-                'warnings' => [
351
-                    [
352
-                        'message' => 'Access denied to this field.',
353
-                        'locations' => [
354
-                            [
355
-                                'line' => 1,
356
-                                'column' => 16,
357
-                            ],
358
-                        ],
359
-                        'path' => [
360
-                            'user',
361
-                            'roles',
362
-                        ],
363
-                    ],
364
-                ],
365
-            ],
366
-        ];
367
-    }
368
-}
Please login to merge, or discard this patch.
tests/Functional/Exception/ExceptionTest.php 5 patches
Indentation   -25 removed lines patch added patch discarded remove patch
@@ -18,28 +18,3 @@
 block discarded – undo
18 18
     public function testExceptionIsMappedToAWarning(): void
19 19
     {
20 20
         $query = <<<'EOF'
21
-            query ExceptionQuery {
22
-                test
23
-            }
24
-            EOF;
25
-
26
-        $expectedData = [
27
-            'test' => null,
28
-        ];
29
-
30
-        $expectedErrors = [
31
-            [
32
-                'message' => 'Invalid argument exception',
33
-                'locations' => [
34
-                    [
35
-                        'line' => 2,
36
-                        'column' => 5,
37
-                    ],
38
-                ],
39
-                'path' => ['test'],
40
-            ],
41
-        ];
42
-
43
-        $this->assertGraphQL($query, $expectedData, $expectedErrors);
44
-    }
45
-}
Please login to merge, or discard this patch.
Switch Indentation   -25 removed lines patch added patch discarded remove patch
@@ -18,28 +18,3 @@
 block discarded – undo
18 18
     public function testExceptionIsMappedToAWarning(): void
19 19
     {
20 20
         $query = <<<'EOF'
21
-            query ExceptionQuery {
22
-                test
23
-            }
24
-            EOF;
25
-
26
-        $expectedData = [
27
-            'test' => null,
28
-        ];
29
-
30
-        $expectedErrors = [
31
-            [
32
-                'message' => 'Invalid argument exception',
33
-                'locations' => [
34
-                    [
35
-                        'line' => 2,
36
-                        'column' => 5,
37
-                    ],
38
-                ],
39
-                'path' => ['test'],
40
-            ],
41
-        ];
42
-
43
-        $this->assertGraphQL($query, $expectedData, $expectedErrors);
44
-    }
45
-}
Please login to merge, or discard this patch.
Spacing   -25 removed lines patch added patch discarded remove patch
@@ -18,28 +18,3 @@
 block discarded – undo
18 18
     public function testExceptionIsMappedToAWarning(): void
19 19
     {
20 20
         $query = <<<'EOF'
21
-            query ExceptionQuery {
22
-                test
23
-            }
24
-            EOF;
25
-
26
-        $expectedData = [
27
-            'test' => null,
28
-        ];
29
-
30
-        $expectedErrors = [
31
-            [
32
-                'message' => 'Invalid argument exception',
33
-                'locations' => [
34
-                    [
35
-                        'line' => 2,
36
-                        'column' => 5,
37
-                    ],
38
-                ],
39
-                'path' => ['test'],
40
-            ],
41
-        ];
42
-
43
-        $this->assertGraphQL($query, $expectedData, $expectedErrors);
44
-    }
45
-}
Please login to merge, or discard this patch.
Braces   -25 removed lines patch added patch discarded remove patch
@@ -18,28 +18,3 @@
 block discarded – undo
18 18
     public function testExceptionIsMappedToAWarning(): void
19 19
     {
20 20
         $query = <<<'EOF'
21
-            query ExceptionQuery {
22
-                test
23
-            }
24
-            EOF;
25
-
26
-        $expectedData = [
27
-            'test' => null,
28
-        ];
29
-
30
-        $expectedErrors = [
31
-            [
32
-                'message' => 'Invalid argument exception',
33
-                'locations' => [
34
-                    [
35
-                        'line' => 2,
36
-                        'column' => 5,
37
-                    ],
38
-                ],
39
-                'path' => ['test'],
40
-            ],
41
-        ];
42
-
43
-        $this->assertGraphQL($query, $expectedData, $expectedErrors);
44
-    }
45
-}
Please login to merge, or discard this patch.
Upper-Lower-Casing   -25 removed lines patch added patch discarded remove patch
@@ -18,28 +18,3 @@
 block discarded – undo
18 18
     public function testExceptionIsMappedToAWarning(): void
19 19
     {
20 20
         $query = <<<'EOF'
21
-            query ExceptionQuery {
22
-                test
23
-            }
24
-            EOF;
25
-
26
-        $expectedData = [
27
-            'test' => null,
28
-        ];
29
-
30
-        $expectedErrors = [
31
-            [
32
-                'message' => 'Invalid argument exception',
33
-                'locations' => [
34
-                    [
35
-                        'line' => 2,
36
-                        'column' => 5,
37
-                    ],
38
-                ],
39
-                'path' => ['test'],
40
-            ],
41
-        ];
42
-
43
-        $this->assertGraphQL($query, $expectedData, $expectedErrors);
44
-    }
45
-}
Please login to merge, or discard this patch.
src/Annotation/Mutation.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -34,7 +34,7 @@
 block discarded – undo
34 34
         ?string $type = null,
35 35
         ?string $resolve = null,
36 36
         ?string $complexity = null,
37
-        array|string|null $targetTypes = null
37
+        array | string | null $targetTypes = null
38 38
     ) {
39 39
         parent::__construct($name, $type, $resolve, $complexity);
40 40
         if ($targetTypes) {
Please login to merge, or discard this patch.
src/Config/Parser/MetadataParser/MetadataParser.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -346,7 +346,7 @@  discard block
 block discarded – undo
346 346
 
347 347
         $buildersAnnotations = self::getMetadataMatching($metadatas, Metadata\FieldsBuilder::class);
348 348
         if (!empty($buildersAnnotations)) {
349
-            $typeConfiguration['builders'] = array_map(fn ($fieldsBuilderAnnotation) => ['builder' => $fieldsBuilderAnnotation->name, 'builderConfig' => $fieldsBuilderAnnotation->config], $buildersAnnotations);
349
+            $typeConfiguration['builders'] = array_map(fn($fieldsBuilderAnnotation) => ['builder' => $fieldsBuilderAnnotation->name, 'builderConfig' => $fieldsBuilderAnnotation->config], $buildersAnnotations);
350 350
         }
351 351
 
352 352
         if (isset($typeAnnotation->isTypeOf)) {
@@ -440,7 +440,7 @@  discard block
 block discarded – undo
440 440
             $reflectionConstant = new ReflectionClassConstant($reflectionClass->getName(), $name);
441 441
             $valueConfig = self::getDescriptionConfiguration(static::getMetadatas($reflectionConstant), true);
442 442
 
443
-            $enumValueAnnotation = current(array_filter($enumValues, fn ($enumValueAnnotation) => $enumValueAnnotation->name === $name));
443
+            $enumValueAnnotation = current(array_filter($enumValues, fn($enumValueAnnotation) => $enumValueAnnotation->name === $name));
444 444
             $valueConfig['value'] = $value;
445 445
 
446 446
             if (false !== $enumValueAnnotation) {
Please login to merge, or discard this patch.
src/Annotation/Query.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -34,7 +34,7 @@
 block discarded – undo
34 34
         ?string $type = null,
35 35
         ?string $resolve = null,
36 36
         ?string $complexity = null,
37
-        array|string|null $targetTypes = null
37
+        array | string | null $targetTypes = null
38 38
     ) {
39 39
         parent::__construct($name, $type, $resolve, $complexity);
40 40
         if ($targetTypes) {
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
 final 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
 final 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
 final 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
 final 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
 final 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.
tests/Functional/Security/QueryComplexityTest.php 5 patches
Indentation   -70 removed lines patch added patch discarded remove patch
@@ -9,73 +9,3 @@
 block discarded – undo
9 9
 final class QueryComplexityTest extends TestCase
10 10
 {
11 11
     private string $userFriendsWithoutLimitQuery = <<<'EOF'
12
-        query {
13
-          user {
14
-            friends {
15
-              edges {
16
-                node {
17
-                  name
18
-                }
19
-              }
20
-            }
21
-          }
22
-        }
23
-        EOF;
24
-
25
-    private string $userFriendsWithLimitQuery = <<<'EOF'
26
-        query {
27
-          user {
28
-            friends(first: 1) {
29
-              edges {
30
-                node {
31
-                  name
32
-                }
33
-              }
34
-            }
35
-          }
36
-        }
37
-        EOF;
38
-
39
-    public function testComplexityReachLimitation(): void
40
-    {
41
-        $expected = [
42
-            'errors' => [
43
-                [
44
-                    'message' => 'Max query complexity should be 10 but got 54.',
45
-                ],
46
-            ],
47
-        ];
48
-
49
-        $this->assertResponse($this->userFriendsWithoutLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexity');
50
-    }
51
-
52
-    public function testComplexityReachLimitationEnv(): void
53
-    {
54
-        $expected = [
55
-            'errors' => [
56
-                [
57
-                    'message' => 'Max query complexity should be 10 but got 54.',
58
-                ],
59
-            ],
60
-        ];
61
-
62
-        $this->assertResponse($this->userFriendsWithoutLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexityEnv');
63
-    }
64
-
65
-    public function testComplexityUnderLimitation(): void
66
-    {
67
-        $expected = [
68
-            'data' => [
69
-                'user' => [
70
-                    'friends' => [
71
-                        'edges' => [
72
-                            ['node' => ['name' => 'Nick']],
73
-                        ],
74
-                    ],
75
-                ],
76
-            ],
77
-        ];
78
-
79
-        $this->assertResponse($this->userFriendsWithLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexity');
80
-    }
81
-}
Please login to merge, or discard this patch.
Switch Indentation   -70 removed lines patch added patch discarded remove patch
@@ -9,73 +9,3 @@
 block discarded – undo
9 9
 final class QueryComplexityTest extends TestCase
10 10
 {
11 11
     private string $userFriendsWithoutLimitQuery = <<<'EOF'
12
-        query {
13
-          user {
14
-            friends {
15
-              edges {
16
-                node {
17
-                  name
18
-                }
19
-              }
20
-            }
21
-          }
22
-        }
23
-        EOF;
24
-
25
-    private string $userFriendsWithLimitQuery = <<<'EOF'
26
-        query {
27
-          user {
28
-            friends(first: 1) {
29
-              edges {
30
-                node {
31
-                  name
32
-                }
33
-              }
34
-            }
35
-          }
36
-        }
37
-        EOF;
38
-
39
-    public function testComplexityReachLimitation(): void
40
-    {
41
-        $expected = [
42
-            'errors' => [
43
-                [
44
-                    'message' => 'Max query complexity should be 10 but got 54.',
45
-                ],
46
-            ],
47
-        ];
48
-
49
-        $this->assertResponse($this->userFriendsWithoutLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexity');
50
-    }
51
-
52
-    public function testComplexityReachLimitationEnv(): void
53
-    {
54
-        $expected = [
55
-            'errors' => [
56
-                [
57
-                    'message' => 'Max query complexity should be 10 but got 54.',
58
-                ],
59
-            ],
60
-        ];
61
-
62
-        $this->assertResponse($this->userFriendsWithoutLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexityEnv');
63
-    }
64
-
65
-    public function testComplexityUnderLimitation(): void
66
-    {
67
-        $expected = [
68
-            'data' => [
69
-                'user' => [
70
-                    'friends' => [
71
-                        'edges' => [
72
-                            ['node' => ['name' => 'Nick']],
73
-                        ],
74
-                    ],
75
-                ],
76
-            ],
77
-        ];
78
-
79
-        $this->assertResponse($this->userFriendsWithLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexity');
80
-    }
81
-}
Please login to merge, or discard this patch.
Spacing   -70 removed lines patch added patch discarded remove patch
@@ -9,73 +9,3 @@
 block discarded – undo
9 9
 final class QueryComplexityTest extends TestCase
10 10
 {
11 11
     private string $userFriendsWithoutLimitQuery = <<<'EOF'
12
-        query {
13
-          user {
14
-            friends {
15
-              edges {
16
-                node {
17
-                  name
18
-                }
19
-              }
20
-            }
21
-          }
22
-        }
23
-        EOF;
24
-
25
-    private string $userFriendsWithLimitQuery = <<<'EOF'
26
-        query {
27
-          user {
28
-            friends(first: 1) {
29
-              edges {
30
-                node {
31
-                  name
32
-                }
33
-              }
34
-            }
35
-          }
36
-        }
37
-        EOF;
38
-
39
-    public function testComplexityReachLimitation(): void
40
-    {
41
-        $expected = [
42
-            'errors' => [
43
-                [
44
-                    'message' => 'Max query complexity should be 10 but got 54.',
45
-                ],
46
-            ],
47
-        ];
48
-
49
-        $this->assertResponse($this->userFriendsWithoutLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexity');
50
-    }
51
-
52
-    public function testComplexityReachLimitationEnv(): void
53
-    {
54
-        $expected = [
55
-            'errors' => [
56
-                [
57
-                    'message' => 'Max query complexity should be 10 but got 54.',
58
-                ],
59
-            ],
60
-        ];
61
-
62
-        $this->assertResponse($this->userFriendsWithoutLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexityEnv');
63
-    }
64
-
65
-    public function testComplexityUnderLimitation(): void
66
-    {
67
-        $expected = [
68
-            'data' => [
69
-                'user' => [
70
-                    'friends' => [
71
-                        'edges' => [
72
-                            ['node' => ['name' => 'Nick']],
73
-                        ],
74
-                    ],
75
-                ],
76
-            ],
77
-        ];
78
-
79
-        $this->assertResponse($this->userFriendsWithLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexity');
80
-    }
81
-}
Please login to merge, or discard this patch.
Braces   -70 removed lines patch added patch discarded remove patch
@@ -9,73 +9,3 @@
 block discarded – undo
9 9
 final class QueryComplexityTest extends TestCase
10 10
 {
11 11
     private string $userFriendsWithoutLimitQuery = <<<'EOF'
12
-        query {
13
-          user {
14
-            friends {
15
-              edges {
16
-                node {
17
-                  name
18
-                }
19
-              }
20
-            }
21
-          }
22
-        }
23
-        EOF;
24
-
25
-    private string $userFriendsWithLimitQuery = <<<'EOF'
26
-        query {
27
-          user {
28
-            friends(first: 1) {
29
-              edges {
30
-                node {
31
-                  name
32
-                }
33
-              }
34
-            }
35
-          }
36
-        }
37
-        EOF;
38
-
39
-    public function testComplexityReachLimitation(): void
40
-    {
41
-        $expected = [
42
-            'errors' => [
43
-                [
44
-                    'message' => 'Max query complexity should be 10 but got 54.',
45
-                ],
46
-            ],
47
-        ];
48
-
49
-        $this->assertResponse($this->userFriendsWithoutLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexity');
50
-    }
51
-
52
-    public function testComplexityReachLimitationEnv(): void
53
-    {
54
-        $expected = [
55
-            'errors' => [
56
-                [
57
-                    'message' => 'Max query complexity should be 10 but got 54.',
58
-                ],
59
-            ],
60
-        ];
61
-
62
-        $this->assertResponse($this->userFriendsWithoutLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexityEnv');
63
-    }
64
-
65
-    public function testComplexityUnderLimitation(): void
66
-    {
67
-        $expected = [
68
-            'data' => [
69
-                'user' => [
70
-                    'friends' => [
71
-                        'edges' => [
72
-                            ['node' => ['name' => 'Nick']],
73
-                        ],
74
-                    ],
75
-                ],
76
-            ],
77
-        ];
78
-
79
-        $this->assertResponse($this->userFriendsWithLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexity');
80
-    }
81
-}
Please login to merge, or discard this patch.
Upper-Lower-Casing   -70 removed lines patch added patch discarded remove patch
@@ -9,73 +9,3 @@
 block discarded – undo
9 9
 final class QueryComplexityTest extends TestCase
10 10
 {
11 11
     private string $userFriendsWithoutLimitQuery = <<<'EOF'
12
-        query {
13
-          user {
14
-            friends {
15
-              edges {
16
-                node {
17
-                  name
18
-                }
19
-              }
20
-            }
21
-          }
22
-        }
23
-        EOF;
24
-
25
-    private string $userFriendsWithLimitQuery = <<<'EOF'
26
-        query {
27
-          user {
28
-            friends(first: 1) {
29
-              edges {
30
-                node {
31
-                  name
32
-                }
33
-              }
34
-            }
35
-          }
36
-        }
37
-        EOF;
38
-
39
-    public function testComplexityReachLimitation(): void
40
-    {
41
-        $expected = [
42
-            'errors' => [
43
-                [
44
-                    'message' => 'Max query complexity should be 10 but got 54.',
45
-                ],
46
-            ],
47
-        ];
48
-
49
-        $this->assertResponse($this->userFriendsWithoutLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexity');
50
-    }
51
-
52
-    public function testComplexityReachLimitationEnv(): void
53
-    {
54
-        $expected = [
55
-            'errors' => [
56
-                [
57
-                    'message' => 'Max query complexity should be 10 but got 54.',
58
-                ],
59
-            ],
60
-        ];
61
-
62
-        $this->assertResponse($this->userFriendsWithoutLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexityEnv');
63
-    }
64
-
65
-    public function testComplexityUnderLimitation(): void
66
-    {
67
-        $expected = [
68
-            'data' => [
69
-                'user' => [
70
-                    'friends' => [
71
-                        'edges' => [
72
-                            ['node' => ['name' => 'Nick']],
73
-                        ],
74
-                    ],
75
-                ],
76
-            ],
77
-        ];
78
-
79
-        $this->assertResponse($this->userFriendsWithLimitQuery, $expected, self::ANONYMOUS_USER, 'queryComplexity');
80
-    }
81
-}
Please login to merge, or discard this patch.