File: AzureStorageQueueSettingsTests.cs
Web Access
Project: src\tests\Aspire.Azure.Storage.Queues.Tests\Aspire.Azure.Storage.Queues.Tests.csproj (Aspire.Azure.Storage.Queues.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Aspire.Azure.Common;
using Aspire.Azure.Storage.Queues;
using Xunit;
 
namespace Aspire.Hosting.Azure.Tests;
 
public class AzureStorageQueueSettingsTests
{
    private const string EmulatorConnectionString = "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;QueueEndpoint=http://127.0.0.1:10000/devstoreaccount1";
 
    [Fact]
    public void ParseConnectionString_invalid_input_results_in_AE()
    {
        var settings = new AzureStorageQueueSettings();
        string connectionString = "InvalidConnectionString";
 
        Assert.Throws<ArgumentException>(() => ((IConnectionStringSettings)settings).ParseConnectionString(connectionString));
    }
 
    [Theory]
    [InlineData("Endpoint=https://example.queueName.core.windows.net;QueueName=my-queue")]
    [InlineData("Endpoint=https://example.queueName.core.windows.net;QueueName=my-queue;ExtraParam=value")]
    [InlineData("endpoint=https://example.queueName.core.windows.net;queuename=my-queue")]
    [InlineData("ENDPOINT=https://example.queueName.core.windows.net;QUEUENAME=my-queue")]
    [InlineData("Endpoint=\"https://example.queueName.core.windows.net\";QueueName=\"my-queue\"")]
    public void ParseConnectionString_With_ServiceUri(string connectionString)
    {
        var settings = new AzureStorageQueueSettings();
 
        ((IConnectionStringSettings)settings).ParseConnectionString(connectionString);
 
        Assert.Equal("https://example.queuename.core.windows.net/", settings.ServiceUri?.ToString());
        Assert.Equal("my-queue", settings.QueueName);
    }
 
    [Theory]
    [InlineData($"{EmulatorConnectionString};QueueName=my-queue")]
    [InlineData($"{EmulatorConnectionString};QueueName=\"my-queue\"")]
    public void ParseConnectionString_With_ConnectionString(string connectionString)
    {
        var settings = new AzureStorageQueueSettings();
 
        ((IConnectionStringSettings)settings).ParseConnectionString(connectionString);
 
        Assert.Contains(EmulatorConnectionString, settings.ConnectionString, StringComparison.OrdinalIgnoreCase);
        Assert.DoesNotContain("QueueName", settings.ConnectionString, StringComparison.OrdinalIgnoreCase);
        Assert.Equal("my-queue", settings.QueueName);
        Assert.Null(settings.ServiceUri);
    }
 
    [Theory]
    [InlineData($"Endpoint=not-a-uri;QueueName=my-queue")]
    public void ParseConnectionString_With_NotAUri(string connectionString)
    {
        var settings = new AzureStorageQueueSettings();
 
        ((IConnectionStringSettings)settings).ParseConnectionString(connectionString);
 
        Assert.True(string.IsNullOrEmpty(settings.ConnectionString));
        Assert.Equal("my-queue", settings.QueueName);
        Assert.Null(settings.ServiceUri);
    }
}