diff --git a/app/graphql/consul_schema.rb b/app/graphql/consul_schema.rb index e7a44581d..ecb40227f 100644 --- a/app/graphql/consul_schema.rb +++ b/app/graphql/consul_schema.rb @@ -2,5 +2,7 @@ class ConsulSchema < GraphQL::Schema mutation(Types::MutationType) query(Types::QueryType) + default_max_page_size 25 + max_complexity 2500 max_depth 8 end diff --git a/spec/graphql/consul_schema_spec.rb b/spec/graphql/consul_schema_spec.rb index b0bfae536..15c367c5c 100644 --- a/spec/graphql/consul_schema_spec.rb +++ b/spec/graphql/consul_schema_spec.rb @@ -34,4 +34,43 @@ describe ConsulSchema do expect(response["errors"]).not_to be nil expect(response["errors"].first["message"]).to match(/exceeds max depth/) end + + it "returns an error for queries requesting all records from more than 2 collections" do + query = <<~GRAPHQL + { + users { + edges { + node { + public_debates { + edges { + node { + title + } + } + } + public_proposals { + edges { + node { + title + } + } + } + public_comments { + edges { + node { + body + } + } + } + } + } + } + } + GRAPHQL + + response = execute(query) + + expect(response["errors"]).not_to be nil + expect(response["errors"].first["message"]).to match(/Query has complexity/) + end end