File: Microsoft.NetCore.Analyzers\Usage\ProvideHttpClientHandlerMaxResponseHeaderLengthValueCorrectlyTests.cs
Web Access
Project: ..\..\..\src\Microsoft.CodeAnalysis.NetAnalyzers\tests\Microsoft.CodeAnalysis.NetAnalyzers.UnitTests\Microsoft.CodeAnalysis.NetAnalyzers.UnitTests.csproj (Microsoft.CodeAnalysis.NetAnalyzers.UnitTests)
// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the MIT license.  See License.txt in the project root for license information.
 
using System.Threading.Tasks;
using Xunit;
using VerifyCS = Test.Utilities.CSharpCodeFixVerifier<
    Microsoft.NetCore.Analyzers.Usage.ProvideHttpClientHandlerMaxResponseHeaderLengthValueCorrectly,
    Microsoft.CodeAnalysis.Testing.EmptyCodeFixProvider>;
 
using VerifyVB = Test.Utilities.VisualBasicCodeFixVerifier<
    Microsoft.NetCore.Analyzers.Usage.ProvideHttpClientHandlerMaxResponseHeaderLengthValueCorrectly,
    Microsoft.CodeAnalysis.Testing.EmptyCodeFixProvider>;
namespace Microsoft.NetCore.Analyzers.Usage.UnitTests
{
    public class ProvideHttpClientHandlerMaxResponseHeaderLengthValueCorrectlyTests
    {
        [Fact]
        public async Task CA2262_ProvideCorrectValueFor_HttpClientHandlerMaxResponseHeader_DiagnosticAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(@"
                using System;
                using System.Net.Http;
 
                public class TestClass {
                    
                    static int GetValue() => 1414;
                    const int val = 121212 * 2;
 
                    public void TestMethod() {
 
                        HttpClientHandler handler = new HttpClientHandler()
                        {
                            MaxResponseHeadersLength = GetValue()
                        };
 
                        HttpClientHandler handler2 = new HttpClientHandler()
                        {
                            {|#0:MaxResponseHeadersLength = 2 * 121213|}
                        };
 
                        HttpClientHandler handler3 = new HttpClientHandler()
                        {
                            {|#1:MaxResponseHeadersLength = val|}
                        };
 
                        HttpClientHandler handler4 = new HttpClientHandler()
                        {
                            {|#2:MaxResponseHeadersLength = 1414|}
                        };
 
                        HttpClientHandler handler5 = new HttpClientHandler()
                        {
                            MaxResponseHeadersLength  = int.MaxValue
                        };
      
                        SocketsHttpHandler handler6 = new SocketsHttpHandler() 
                        {
                            MaxResponseHeadersLength  = int.MaxValue
                        };
 
                        SocketsHttpHandler handler7 = new SocketsHttpHandler() 
                        {
                            {|#3:MaxResponseHeadersLength = 1000|}
                        };
                    }
                }
                        
                ",
            VerifyCS.Diagnostic(ProvideHttpClientHandlerMaxResponseHeaderLengthValueCorrectly.RuleId).WithLocation(0).WithArguments(242426),
            VerifyCS.Diagnostic(ProvideHttpClientHandlerMaxResponseHeaderLengthValueCorrectly.RuleId).WithLocation(1).WithArguments(242424),
            VerifyCS.Diagnostic(ProvideHttpClientHandlerMaxResponseHeaderLengthValueCorrectly.RuleId).WithLocation(2).WithArguments(1414),
            VerifyCS.Diagnostic(ProvideHttpClientHandlerMaxResponseHeaderLengthValueCorrectly.RuleId).WithLocation(3).WithArguments(1000)
            );
 
            await VerifyVB.VerifyAnalyzerAsync(@"
                Imports System.Net.Http
                
                Public Class MainClass
                    Public Shared Sub Main()
                        Dim httpClientHandler As New HttpClientHandler()
 
                        {|#0:httpClientHandler.MaxResponseHeadersLength = 65536|}
 
                        Dim httpClient As New HttpClient(httpClientHandler)
 
                        httpClient.Dispose()
                        httpClientHandler.Dispose()
                    End Sub
                End Class
                ",
            VerifyVB.Diagnostic(ProvideHttpClientHandlerMaxResponseHeaderLengthValueCorrectly.RuleId).WithLocation(0).WithArguments(65536)
            );
        }
    }
}