File: ConformanceTests.EventHubConsumerClient.cs
Web Access
Project: src\tests\Aspire.Azure.Messaging.EventHubs.Tests\Aspire.Azure.Messaging.EventHubs.Tests.csproj (Aspire.Azure.Messaging.EventHubs.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Azure.Identity;
using Azure.Messaging.EventHubs.Consumer;
using Microsoft.Extensions.Hosting;
 
namespace Aspire.Azure.Messaging.EventHubs.Tests;
 
public class ConformanceTests_EventHubConsumerClient : ConformanceTestsBase<EventHubConsumerClient, AzureMessagingEventHubsConsumerSettings>
{
    protected override void SetHealthCheck(AzureMessagingEventHubsConsumerSettings options, bool enabled)
        => options.DisableHealthChecks = !enabled;
 
    protected override void SetMetrics(AzureMessagingEventHubsConsumerSettings options, bool enabled)
        => throw new NotImplementedException();
 
    protected override void SetTracing(AzureMessagingEventHubsConsumerSettings options, bool enabled)
        => options.DisableTracing = !enabled;
 
    protected override void RegisterComponent(HostApplicationBuilder builder, Action<AzureMessagingEventHubsConsumerSettings>? configure = null, string? key = null)
    {
        if (key is null)
        {
            builder.AddAzureEventHubConsumerClient("ehprc", settings => ConfigureCredentials(configure, settings));
        }
        else
        {
            builder.AddKeyedAzureEventHubConsumerClient(key, settings => ConfigureCredentials(configure, settings));
        }
 
        void ConfigureCredentials(Action<AzureMessagingEventHubsConsumerSettings>? configure, AzureMessagingEventHubsConsumerSettings settings)
        {
            if (CanConnectToServer)
            {
                settings.Credential = new DefaultAzureCredential();
            }
            configure?.Invoke(settings);
        }
    }
 
    protected override void TriggerActivity(EventHubConsumerClient service)
    {
        try
        {
            _ = service.ReadEventsAsync().ToBlockingEnumerable().ToArray();
        }
        catch (Exception)
        {
            // Expected exception
        }
    }
}