Comments (3)
There is a test for this, perhaps you can add a failing test case for your scenario?
lighthouse/tests/Unit/Auth/CanDirectiveTest.php
Lines 251 to 282 in 7b774a8
from lighthouse.
Thanks for the quick response, that test doesn't cover the case, as it doesn't use variables to pass in the arguments.
Once I am back in the office on Monday I'll attempt to put together something.
But generally speaking, it looks something like the following, for a query using Type rather than a mutation using Input:
public function testInjectArgsPassesClientArgumentToPolicy(): void
{
$this->be(new User());
$this->mockResolver(fn (): User => $this->resolveUser());
$this->schema = /** @lang GraphQL */ '
type Query {
user(foo: String): User!
@can(ability: "injectArgs", injectArgs: true)
@mock
}
type User {
name: String
}
type Foo { # Here we define the type to use as a variable.
foo: String
}
';
$this->graphQL(/** @lang GraphQL */ '
query getUser($foo: Foo) { # Here we set the query operation and tell it use to our Foo type as a variable.
user(foo: $foo) {
name
}
}
', ['foo' => 'bar'] # Here we pass the variables into the graphQL helper
)->assertJson([
'data' => [
'user' => [
'name' => 'foo',
],
],
]);
}
from lighthouse.
The actual test is:
public function testInjectArgsPassesClientVariablesToPolicy(): void
{
$this->be(new User());
$this->mockResolver(fn (): User => $this->resolveUser());
$this->schema = /** @lang GraphQL */ '
type Query {
user(foo: String): User!
@can(ability: "injectArgs", injectArgs: true)
@mock
}
type User {
name: String
}
';
$this->graphQL(/** @lang GraphQL */ '
query getUser($foo: String) {
user(foo: $foo) {
name
}
}
', ['foo' => 'bar']
)->assertJson([
'data' => [
'user' => [
'name' => 'foo',
],
],
]);
}
and what would you know, it passes.
OK (1 test, 2 assertions)
Because I am an idiot. and I am using @spread
on the Input so the outer associate key doesn't exist.
Sorry for wasting your time.
from lighthouse.
Related Issues (20)
- Generate schema fail! HOT 1
- Exception Undefined array key "schemaExtensions" HOT 1
- Clear Cache (private) HOT 1
- Segmentation fault when handling large payloads HOT 8
- Requesting local scopes can pass parameters HOT 1
- New directive that mirrors functionality of `whereHas` for relations (not `@whereHasConditions`) HOT 1
- `make setup` failed on macOS
- Access context in `FieldMiddleware` HOT 3
- CanArgs is defined twice in schema-directives.graphql
- `extend scalar X` directives are lost
- @canFind is missing "model" argument in graphql definition HOT 1
- Allow to customize the unique key for `PaginatedModelsLoader`
- artisan lighthouse:union stub appears to be incorrect HOT 1
- Problem with subscription middleware HOT 2
- An error occurs in the SubscriptionRegistry when sending a subscription event via Subscription::broadcast with Laravel Octane (Swoole) HOT 5
- Laravel v11 support dependancy missing
- Enum Support for Morph Types HOT 1
- Mutation transaction seem not work HOT 4
- Failed to find class App\GraphQl\Queries\TodoQuery in namespaces [] for directive @paginate
- @whereNull and @whereNotNull No directive found!
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lighthouse.