File: KustoPublicApiTests.cs
Web Access
Project: src\tests\Aspire.Hosting.Azure.Kusto.Tests\Aspire.Hosting.Azure.Kusto.Tests.csproj (Aspire.Hosting.Azure.Kusto.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Aspire.Hosting.Azure.Kusto.Tests;
 
public class KustoPublicApiTests
{
    [Fact]
    public void AzureKustoClusterResourceShouldThrowWhenNameIsNull()
    {
        // Act
        var action = () => new AzureKustoClusterResource(null!, _ => { });
 
        // Assert
        Assert.Throws<ArgumentNullException>(action);
    }
 
    [Theory]
    [InlineData("")]
    [InlineData(" ")]
    public void AzureKustoClusterResourceShouldThrowWhenNameIsInvalid(string name)
    {
        // Act
        var action = () => new AzureKustoClusterResource(name, _ => { });
 
        // Assert
        Assert.Throws<ArgumentException>(action);
    }
 
    [Fact]
    public void AzureKustoClusterResourceShouldReturnValidReferenceExpression()
    {
        // Arrange
        var resource = new AzureKustoClusterResource("test-kusto", _ => { });
 
        // Act
        var connectionStringExpression = resource.ConnectionStringExpression;
 
        // Assert
        // For Azure provisioned resources (default when directly constructed), should use cluster URI output
        Assert.Equal("{test-kusto.outputs.clusterUri}", connectionStringExpression.ValueExpression);
    }
 
    [Fact]
    public void AzureKustoDatabaseResourceShouldThrowWhenNameIsNull()
    {
        // Arrange
        var parentResource = new AzureKustoClusterResource("kusto", _ => { });
 
        // Act
        var action = () => new AzureKustoReadWriteDatabaseResource(null!, "db", parentResource);
 
        // Assert
        Assert.Throws<ArgumentNullException>(action);
    }
 
    [Theory]
    [InlineData("")]
    [InlineData(" ")]
    public void AzureKustoDatabaseResourceShouldThrowWhenNameIsInvalid(string name)
    {
        // Arrange
        var parentResource = new AzureKustoClusterResource("kusto", _ => { });
 
        // Act
        var action = () => new AzureKustoReadWriteDatabaseResource("kusto-db", name, parentResource);
 
        // Assert
        Assert.Throws<ArgumentException>(action);
    }
 
    [Fact]
    public void AzureKustoDatabaseResourceShouldThrowWhenDatabaseNameIsNull()
    {
        // Arrange
        var parentResource = new AzureKustoClusterResource("kusto", _ => { });
 
        // Act
        var action = () => new AzureKustoReadWriteDatabaseResource("kusto-db", null!, parentResource);
 
        // Assert
        Assert.Throws<ArgumentNullException>(action);
    }
 
    [Theory]
    [InlineData("")]
    [InlineData(" ")]
    public void AzureKustoDatabaseResourceShouldThrowWhenDatabaseNameIsInvalid(string name)
    {
        // Arrange
        var parentResource = new AzureKustoClusterResource("kusto", _ => { });
 
        // Act
        var action = () => new AzureKustoReadWriteDatabaseResource("kusto-db", name, parentResource);
 
        // Assert
        Assert.Throws<ArgumentException>(action);
    }
 
    [Fact]
    public void AzureKustoDatabaseResourceShouldThrowWhenKustoParentResourceIsNull()
    {
        // Arrange
        AzureKustoClusterResource kustoParentResource = null!;
 
        // Act
        var action = () => new AzureKustoReadWriteDatabaseResource("kusto-db", "db1", kustoParentResource);
 
        // Assert
        Assert.Throws<ArgumentNullException>(action);
    }
 
    [Fact]
    public void AzureKustoDatabaseResourceShouldReturnValidReferenceExpression()
    {
        // Arrange
        var resource = new AzureKustoReadWriteDatabaseResource("kusto-db", "myDatabase", new AzureKustoClusterResource("kusto", _ => { }));
 
        // Act
        var connectionStringExpression = resource.ConnectionStringExpression;
 
        // Assert
        Assert.Equal("{kusto.connectionString};Initial Catalog=myDatabase", connectionStringExpression.ValueExpression);
    }
 
    [Fact]
    public void KustoEmulatorResourceShouldThrowWhenInnerResourceIsNull()
    {
        // Act
        var action = () => new AzureKustoEmulatorResource(null!);
 
        // Assert
        Assert.Throws<ArgumentNullException>(action);
    }
}