diff --git a/src/Test.Utilities.Sarif/HttpMockHelper.cs b/src/Test.Utilities.Sarif/HttpMockHelper.cs index 001436896..b74a57227 100644 --- a/src/Test.Utilities.Sarif/HttpMockHelper.cs +++ b/src/Test.Utilities.Sarif/HttpMockHelper.cs @@ -2,10 +2,9 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; -using System.Collections.Generic; +using System.Collections.Concurrent; using System.Net; using System.Net.Http; -using System.Net.Http.Headers; using System.Threading; using System.Threading.Tasks; @@ -15,8 +14,6 @@ public class HttpMockHelper : DelegatingHandler { public const string AnyContentText = "29f8354b-8b0d-4d21-91ac-bd04c47b85fb"; - private int callCount = 0; - public static StringContent AnyContent() { return new StringContent(AnyContentText); @@ -62,8 +59,8 @@ public static HttpResponseMessage CreateNonAuthoritativeInformationResponse() return new HttpResponseMessage(HttpStatusCode.NonAuthoritativeInformation); } - private readonly List mockedResponses = - new List(); + private readonly ConcurrentQueue mockedResponses = + new ConcurrentQueue(); public static HttpResponseMessage GetResponseForStatusCode(HttpStatusCode statusCode) { @@ -84,55 +81,28 @@ public static HttpResponseMessage GetResponseForStatusCode(HttpStatusCode status public void Mock(HttpRequestMessage httpRequestMessage, HttpStatusCode httpStatusCode, HttpContent responseContent) { - callCount++; - this.mockedResponses.Add( + this.mockedResponses.Enqueue( new HttpResponseMessage(httpStatusCode) { RequestMessage = httpRequestMessage, Content = responseContent }); } public void Mock(HttpResponseMessage httpResponseMessage) { - callCount++; - this.mockedResponses.Add(httpResponseMessage); + this.mockedResponses.Enqueue(httpResponseMessage); } public void Clear() { - callCount = 0; - this.mockedResponses.Clear(); - } - - private static bool CompareHeaders(HttpRequestHeaders headers1, HttpRequestHeaders headers2) - { - foreach (KeyValuePair> header in headers1) + while (!this.mockedResponses.IsEmpty) { - string headerName = header.Key; - if (!headers2.TryGetValues(headerName, out IEnumerable values)) - { - return false; - } - - string headerContent1 = string.Join(",", header.Value); - string headerContent2 = string.Join(",", values); - - if (headerContent1 != headerContent2) - { - return false; - } + this.mockedResponses.TryDequeue(out _); } - - return true; } protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { - if (this.mockedResponses.Count >= callCount && this.mockedResponses[callCount - 1].RequestMessage != null) - { - return Task.FromResult(this.mockedResponses[callCount - 1]); - } - else - { - return Task.FromResult(this.mockedResponses[callCount - 1]); - } + this.mockedResponses.TryDequeue(out HttpResponseMessage message); + HttpRequestMessage _ = message.RequestMessage; + return Task.FromResult(message); } } }