File: Resilience\UriExtensionsTests.cs
Web Access
Project: src\test\Libraries\Microsoft.Extensions.Http.Resilience.Tests\Microsoft.Extensions.Http.Resilience.Tests.csproj (Microsoft.Extensions.Http.Resilience.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;
using FluentAssertions;
using Microsoft.Extensions.Http.Resilience.Internal;
using Xunit;
 
namespace Microsoft.Extensions.Http.Resilience.Test.Resilience;
 
#pragma warning disable CA2000 // Test class
 
public class UriExtensionsTests
{
    [Theory]
    [InlineData("https://initial.uri", "https://fallback-uri.com")]
    [InlineData("https://initial.uri/somepath", "https://fallback-uri.com/somepath")]
    [InlineData("https://initial.uri/somepath/someotherpath", "https://fallback-uri.com/somepath/someotherpath")]
    [InlineData("https://initial.uri:2030/somepath", "https://fallback-uri.com/somepath")]
    [InlineData("https://initial.uri:2030/somepath?query=value", "https://fallback-uri.com/somepath?query=value")]
    [InlineData("https://initial.uri?a=1&b=2&c=3", "https://fallback-uri.com?a=1&b=2&c=3")]
    [InlineData("https://initial.uri?", "https://fallback-uri.com")]
    public void ReplaceHost_ValidArguments_ShouldReplaceUri(string initialUriString, string expectedUriString)
    {
        var fallbackUri = new Uri("https://fallback-uri.com");
        var initialUri = new Uri(initialUriString);
 
        initialUri.ReplaceHost(fallbackUri).Should().Be(new Uri(expectedUriString));
    }
 
    [Theory]
    [InlineData("https://initial.uri", "https://initial.uri", true)]
    [InlineData("https://initial.uri:123", "https://initial.uri:123", true)]
    [InlineData("http://initial.uri:123", "http://initial.uri:123", true)]
    [InlineData("https://initial.uri", "https://initial.uri:123", false)]
    [InlineData("https://initial.uri:123", "https://initial.uri:123/some-path", false)]
    [InlineData("http://initial.uri:123", "https://initial.uri:123", false)]
    public void ReplaceHost_TargetHostSame_ShouldReturnInitialUri(string initialUriString, string replacementUri, bool shouldBeSame)
    {
        var initialUri = new Uri(initialUriString);
 
        if (shouldBeSame)
        {
            initialUri.ReplaceHost(new Uri(replacementUri)).Should().BeSameAs(initialUri);
        }
        else
        {
            initialUri.ReplaceHost(new Uri(replacementUri)).Should().NotBeSameAs(initialUri);
        }
    }
}