File: PublicApiTests\ServiceBusPublicApiTests.cs
Web Access
Project: src\tests\Aspire.Hosting.Azure.Tests\Aspire.Hosting.Azure.Tests.csproj (Aspire.Hosting.Azure.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.Json.Nodes;
using Aspire.Hosting.ApplicationModel;
using Aspire.Hosting.Utils;
using Xunit;
 
namespace Aspire.Hosting.Azure.Tests.PublicApiTests;
 
public class ServiceBusPublicApiTests
{
    [Fact]
    public void CtorAzureServiceBusEmulatorResourceShouldThrowWhenInnerResourceIsNull()
    {
        AzureServiceBusResource innerResource = null!;
 
        var action = () => new AzureServiceBusEmulatorResource(innerResource);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(innerResource), exception.ParamName);
    }
 
    [Fact]
    public void AddAzureServiceBusShouldThrowWhenBuilderIsNull()
    {
        IDistributedApplicationBuilder builder = null!;
        const string name = "service-bus";
 
        var action = () => builder.AddAzureServiceBus(name);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Theory]
    [InlineData(false)]
    [InlineData(true)]
    public void AddAzureServiceBusShouldThrowWhenNameIsNullOrEmpty(bool isNull)
    {
        using var builder = TestDistributedApplicationBuilder.Create();
        var name = isNull ? null! : string.Empty;
 
        var action = () => builder.AddAzureServiceBus(name);
 
        var exception = isNull
           ? Assert.Throws<ArgumentNullException>(action)
           : Assert.Throws<ArgumentException>(action);
        Assert.Equal(nameof(name), exception.ParamName);
    }
 
    [Fact]
    [Obsolete($"This method is obsolete because it has the wrong return type and will be removed in a future version. Use AddServiceBusQueue instead to add an Azure Service Bus Queue.")]
    public void AddQueueShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusResource> builder = null!;
        const string name = "service-queue";
 
        var action = () => builder.AddQueue(name);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Theory]
    [InlineData(false)]
    [InlineData(true)]
    [Obsolete($"This method is obsolete because it has the wrong return type and will be removed in a future version. Use AddServiceBusQueue instead to add an Azure Service Bus Queue.")]
    public void AddQueueShouldThrowWhenNameIsNullOrEmpty(bool isNull)
    {
        using var testBuilder = TestDistributedApplicationBuilder.Create();
        var builder = testBuilder.AddAzureServiceBus("service-bus");
        var name = isNull ? null! : string.Empty;
 
        var action = () => builder.AddQueue(name);
 
        var exception = isNull
           ? Assert.Throws<ArgumentNullException>(action)
           : Assert.Throws<ArgumentException>(action);
        Assert.Equal(nameof(name), exception.ParamName);
    }
 
    [Fact]
    public void AddServiceBusQueueShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusResource> builder = null!;
        const string name = "service-queue";
 
        var action = () => builder.AddServiceBusQueue(name);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Theory]
    [InlineData(false)]
    [InlineData(true)]
    public void AddServiceBusQueueShouldThrowWhenNameIsNullOrEmpty(bool isNull)
    {
        var testBuilder = TestDistributedApplicationBuilder.Create();
        var builder = testBuilder.AddAzureServiceBus("service-bus");
        var name = isNull ? null! : string.Empty;
 
        var action = () => builder.AddServiceBusQueue(name);
 
        var exception = isNull
           ? Assert.Throws<ArgumentNullException>(action)
           : Assert.Throws<ArgumentException>(action);
        Assert.Equal(nameof(name), exception.ParamName);
    }
 
    [Fact]
    public void WithPropertiesShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusQueueResource> builder = null!;
        Action<AzureServiceBusQueueResource> configure = (_) => { };
 
        var action = () => builder.WithProperties(configure);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Fact]
    public void WithPropertiesShouldThrowWhenConfigureIsNull()
    {
        using var testBuilder = TestDistributedApplicationBuilder.Create();
        var builder = testBuilder.AddAzureServiceBus("service-bus").AddServiceBusQueue("service-queue");
        Action<AzureServiceBusQueueResource> configure = null!;
 
        var action = () => builder.WithProperties(configure);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(configure), exception.ParamName);
    }
 
    [Fact]
    public void AddServiceBusTopicShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusResource> builder = null!;
        const string name = "topic";
 
        var action = () => builder.AddServiceBusTopic(name);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Theory]
    [InlineData(false)]
    [InlineData(true)]
    public void AddServiceBusTopicShouldThrowWhenNameIsNullOrEmpty(bool isNull)
    {
        var testBuilder = TestDistributedApplicationBuilder.Create();
        var builder = testBuilder.AddAzureServiceBus("service-bus");
        var name = isNull ? null! : string.Empty;
 
        var action = () => builder.AddServiceBusTopic(name);
 
        var exception = isNull
           ? Assert.Throws<ArgumentNullException>(action)
           : Assert.Throws<ArgumentException>(action);
        Assert.Equal(nameof(name), exception.ParamName);
    }
 
    [Fact]
    public void WithPropertiesTopicShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusTopicResource> builder = null!;
        Action<AzureServiceBusTopicResource> configure = (_) => { };
 
        var action = () => builder.WithProperties(configure);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Fact]
    public void WithPropertiesTopicShouldThrowWhenConfigureIsNull()
    {
        using var testBuilder = TestDistributedApplicationBuilder.Create();
        var builder = testBuilder.AddAzureServiceBus("service-bus").AddServiceBusTopic("service-topic");
        Action<AzureServiceBusTopicResource> configure = null!;
 
        var action = () => builder.WithProperties(configure);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(configure), exception.ParamName);
    }
 
    [Fact]
    public void AddServiceBusSubscriptionShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusTopicResource> builder = null!;
        const string name = "topic";
 
        var action = () => builder.AddServiceBusSubscription(name);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Theory]
    [InlineData(false)]
    [InlineData(true)]
    public void AddServiceBusSubscriptionShouldThrowWhenNameIsNullOrEmpty(bool isNull)
    {
        var testBuilder = TestDistributedApplicationBuilder.Create();
        var builder = testBuilder.AddAzureServiceBus("service-bus")
            .AddServiceBusTopic("service-topic");
        var name = isNull ? null! : string.Empty;
 
        var action = () => builder.AddServiceBusSubscription(name);
 
        var exception = isNull
           ? Assert.Throws<ArgumentNullException>(action)
           : Assert.Throws<ArgumentException>(action);
        Assert.Equal(nameof(name), exception.ParamName);
    }
 
    [Fact]
    public void WithPropertiesSubscriptionShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusSubscriptionResource> builder = null!;
        Action<AzureServiceBusSubscriptionResource> configure = (_) => { };
 
        var action = () => builder.WithProperties(configure);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Fact]
    public void WithPropertiesSubscriptionShouldThrowWhenConfigureIsNull()
    {
        using var testBuilder = TestDistributedApplicationBuilder.Create();
        var builder = testBuilder.AddAzureServiceBus("service-bus")
            .AddServiceBusTopic("service-topic")
            .AddServiceBusSubscription("service-subscription");
        Action<AzureServiceBusSubscriptionResource> configure = null!;
 
        var action = () => builder.WithProperties(configure);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(configure), exception.ParamName);
    }
 
    [Fact]
    public void RunAsEmulatorShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusResource> builder = null!;
 
        var action = () => builder.RunAsEmulator();
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Fact]
    public void WithConfigurationFileShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusEmulatorResource> builder = null!;
        const string path = "/ServiceBus_Emulator/ConfigFiles/Config.json";
 
        var action = () => builder.WithConfigurationFile(path);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Theory]
    [InlineData(false)]
    [InlineData(true)]
    public void WithConfigurationFileShouldThrowWhenNameIsNullOrEmpty(bool isNull)
    {
        using var testBuilder = TestDistributedApplicationBuilder.Create();
        var builder = testBuilder.AddAzureServiceBus("service-bus");
        var path = isNull ? null! : string.Empty;
 
        var action = () => builder.RunAsEmulator(configure => configure.WithConfigurationFile(path));
 
        var exception = isNull
           ? Assert.Throws<ArgumentNullException>(action)
           : Assert.Throws<ArgumentException>(action);
        Assert.Equal(nameof(path), exception.ParamName);
    }
 
    [Fact]
    public void WithConfigurationShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusEmulatorResource> builder = null!;
        Action<JsonNode> configJson = (_) => { };
 
        var action = () => builder.WithConfiguration(configJson);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
 
    [Fact]
    public void WithConfigurationShouldThrowWhenConfigJsonIsNull()
    {
        using var testBuilder = TestDistributedApplicationBuilder.Create();
        var builder = testBuilder.AddAzureServiceBus("service-bus");
        Action<JsonNode> configJson = null!;
 
        var action = () => builder.RunAsEmulator(configure => configure.WithConfiguration(configJson));
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(configJson), exception.ParamName);
    }
 
    [Fact]
    public void WithHostPortShouldThrowWhenBuilderIsNull()
    {
        IResourceBuilder<AzureServiceBusEmulatorResource> builder = null!;
        int? port = null;
 
        var action = () => builder.WithHostPort(port);
 
        var exception = Assert.Throws<ArgumentNullException>(action);
        Assert.Equal(nameof(builder), exception.ParamName);
    }
}