File: HttpMethodslTests.cs
Web Access
Project: src\src\Http\Http.Abstractions\test\Microsoft.AspNetCore.Http.Abstractions.Tests.csproj (Microsoft.AspNetCore.Http.Abstractions.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Text;
 
namespace Microsoft.AspNetCore.Http.Abstractions;
 
public class HttpMethodslTests
{
    [Fact]
    public void CanonicalizedValue_Success()
    {
        var testCases = new List<(string[] methods, string expectedMethod)>
            {
                (new string[] { "GET", "Get", "get" }, HttpMethods.Get),
                (new string[] { "POST", "Post", "post" }, HttpMethods.Post),
                (new string[] { "PUT", "Put", "put" }, HttpMethods.Put),
                (new string[] { "DELETE", "Delete", "delete" }, HttpMethods.Delete),
                (new string[] { "HEAD", "Head", "head" }, HttpMethods.Head),
                (new string[] { "CONNECT", "Connect", "connect" }, HttpMethods.Connect),
                (new string[] { "OPTIONS", "Options", "options" }, HttpMethods.Options),
                (new string[] { "PATCH", "Patch", "patch" }, HttpMethods.Patch),
                (new string[] { "TRACE", "Trace", "trace" }, HttpMethods.Trace)
            };
 
        for (int i = 0; i < testCases.Count; i++)
        {
            var testCase = testCases[i];
            for (int j = 0; j < testCase.methods.Length; j++)
            {
                CanonicalizedValueTest(testCase.methods[j], testCase.expectedMethod);
            }
        }
    }
 
    private void CanonicalizedValueTest(string method, string expectedMethod)
    {
        string inputMethod = CreateStringAtRuntime(method);
        var canonicalizedValue = HttpMethods.GetCanonicalizedValue(inputMethod);
 
        Assert.Same(expectedMethod, canonicalizedValue);
    }
 
    private string CreateStringAtRuntime(string input)
    {
        return new StringBuilder(input).ToString();
    }
}