From b31d9f8e71d4338002ff3bd17a4c3389efc22d6d Mon Sep 17 00:00:00 2001 From: Waldek Mastykarz Date: Tue, 12 Aug 2025 07:46:14 +0200 Subject: [PATCH] Changes failed Graph batch response to 200 OK. Closes #1358 --- .../Models/GraphBatchRequestPayload.cs | 1 + DevProxy.Plugins/Behavior/GraphRandomErrorPlugin.cs | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/DevProxy.Abstractions/Models/GraphBatchRequestPayload.cs b/DevProxy.Abstractions/Models/GraphBatchRequestPayload.cs index ea401f2e..54c79f4b 100644 --- a/DevProxy.Abstractions/Models/GraphBatchRequestPayload.cs +++ b/DevProxy.Abstractions/Models/GraphBatchRequestPayload.cs @@ -12,6 +12,7 @@ public class GraphBatchRequestPayload public class GraphBatchRequestPayloadRequest { public object? Body { get; set; } + public IEnumerable? DependsOn { get; set; } #pragma warning disable CA2227 public Dictionary? Headers { get; set; } = []; #pragma warning restore CA2227 diff --git a/DevProxy.Plugins/Behavior/GraphRandomErrorPlugin.cs b/DevProxy.Plugins/Behavior/GraphRandomErrorPlugin.cs index cc12fe67..b3c6d3fe 100644 --- a/DevProxy.Plugins/Behavior/GraphRandomErrorPlugin.cs +++ b/DevProxy.Plugins/Behavior/GraphRandomErrorPlugin.cs @@ -234,8 +234,12 @@ private void FailBatch(ProxyRequestArgs e) try { // pick a random error response for the current request method + // if the request has dependencies, use FailedDependency status code + // https://learn.microsoft.com/en-us/graph/json-batching?tabs=http#sequencing-requests-with-the-dependson-property var methodStatusCodes = _methodStatusCode[request.Method]; - var errorStatus = methodStatusCodes[_random.Next(0, methodStatusCodes.Length)]; + var errorStatus = request.DependsOn is not null && request.DependsOn.Any() ? + HttpStatusCode.FailedDependency : + methodStatusCodes[_random.Next(0, methodStatusCodes.Length)]; var response = new GraphBatchResponsePayloadResponse { @@ -315,8 +319,8 @@ private void UpdateProxyResponse(ProxyRequestArgs e, HttpStatusCode errorStatus) private void UpdateProxyBatchResponse(ProxyRequestArgs ev, GraphBatchResponsePayload response) { - // failed batch uses a fixed 424 error status code - var errorStatus = HttpStatusCode.FailedDependency; + // failed batch uses 200 OK status code + var errorStatus = HttpStatusCode.OK; var session = ev.Session; var requestId = Guid.NewGuid().ToString();