1
0
Fork 0
mirror of synced 2024-07-01 04:30:59 +12:00

Account for limit param when calculating query complexity

This commit is contained in:
Jake Barnby 2022-07-18 19:30:54 +12:00
parent 03a2a00b30
commit adbb1a1d79
3 changed files with 54 additions and 3 deletions

View file

@ -216,7 +216,8 @@ class SchemaBuilder
$dbForProject,
$databaseId,
$collectionId
)
),
'complexity' => fn (int $complexity, array $args) => $complexity * $args['limit'],
];
$mutationFields[$collectionId . 'Create'] = [
'type' => $objectType,

View file

@ -43,9 +43,9 @@ class GraphQLAbuseTest extends Scope
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
\var_dump($response);
$max = App::getEnv('_APP_GRAPHQL_MAX_QUERY_COMPLEXITY', 50);
$this->assertEquals('Too many queries.', $response['body']['message']);
$this->assertEquals('Max query complexity should be ' . $max . ' but got 51.', $response['body']['errors'][0]['message']);
}
public function testTooManyQueriesBlocked()

View file

@ -1356,8 +1356,58 @@ trait GraphQLBase
}
databasesCreateCollection(databaseId: $databaseId, collectionId: $collectionId, name: $collectionName, permission: $collectionPermission, read: $collectionRead, write: $collectionWrite) {
_id
_createdAt
_updatedAt
_read
_write
databaseId
name
permission
attributes {
key
type
status
}
indexes {
key
type
status
}
}
databasesCreateStringAttribute(databaseId: $databaseId, collectionId: $collectionId, key: "name", size: 255, required: true) {
key
type
status
size
required
default
array
}
databasesCreateIntegerAttribute(databaseId: $databaseId, collectionId: $collectionId, key: "age", min: 0, max: 150, required: true) {
key
type
status
required
min
max
default
array
}
usersCreate(userId: "unique()", email: "test1@appwrite.io", password: "password", name: "Tester 1") {
_id
_createdAt
_updatedAt
name
registration
status
passwordUpdate
email
emailVerification
phone
phoneVerification
prefs {
data
}
}
}';
}