diff --git a/src/HotChocolate/AspNetCore/test/AspNetCore.Tests/HttpPostMiddlewareTests.cs b/src/HotChocolate/AspNetCore/test/AspNetCore.Tests/HttpPostMiddlewareTests.cs index ed350cd0bb0..686b845005b 100644 --- a/src/HotChocolate/AspNetCore/test/AspNetCore.Tests/HttpPostMiddlewareTests.cs +++ b/src/HotChocolate/AspNetCore/test/AspNetCore.Tests/HttpPostMiddlewareTests.cs @@ -154,6 +154,33 @@ public async Task SingleRequest_GetHeroName_Casing_Is_Preserved() result.MatchSnapshot(); } + [Fact] + public async Task Complexity_Exceeded() + { + // arrange + TestServer server = CreateStarWarsServer( + configureServices: c => c.AddGraphQLServer().ModifyRequestOptions(o=> + { + o.Complexity.Enable = true; + o.Complexity.MaximumAllowed = 1; + })); + + // act + ClientQueryResult result = + await server.PostAsync(new ClientQueryRequest + { + Query = @" + { + HERO: hero { + name + } + }" + }); + + // assert + result.MatchSnapshot(); + } + [Fact] public async Task SingleRequest_GetHeroName_With_EnumVariable() { diff --git a/src/HotChocolate/AspNetCore/test/AspNetCore.Tests/__snapshots__/HttpPostMiddlewareTests.Complexity_Exceeded.snap b/src/HotChocolate/AspNetCore/test/AspNetCore.Tests/__snapshots__/HttpPostMiddlewareTests.Complexity_Exceeded.snap new file mode 100644 index 00000000000..68f91300354 --- /dev/null +++ b/src/HotChocolate/AspNetCore/test/AspNetCore.Tests/__snapshots__/HttpPostMiddlewareTests.Complexity_Exceeded.snap @@ -0,0 +1,16 @@ +{ + "ContentType": "application/json; charset=utf-8", + "StatusCode": "BadRequest", + "Data": null, + "Errors": [ + { + "message": "The maximum allowed operation complexity was exceeded.", + "extensions": { + "complexity": 2, + "allowedComplexity": 1, + "code": "HC0047" + } + } + ], + "Extensions": null +} diff --git a/src/HotChocolate/Core/src/Execution/ErrorHelper.cs b/src/HotChocolate/Core/src/Execution/ErrorHelper.cs index 6bc863cec4e..7ecc2aa9ce4 100644 --- a/src/HotChocolate/Core/src/Execution/ErrorHelper.cs +++ b/src/HotChocolate/Core/src/Execution/ErrorHelper.cs @@ -198,9 +198,13 @@ internal static class ErrorHelper ErrorCodes.Execution.ComplexityExceeded, extensions: new Dictionary { - { nameof(complexity), complexity }, - { nameof(allowedComplexity), allowedComplexity } - })); + { nameof(complexity), complexity }, + { nameof(allowedComplexity), allowedComplexity } + }), + contextData: new Dictionary + { + { WellKnownContextData.ValidationErrors, true } + }); public static IQueryResult StateInvalidForComplexityAnalyzer() => QueryResultBuilder.CreateError(