File: Telemetry\TestTelemetryHelper.cs
Web Access
Project: src\tests\Aspire.Cli.Tests\Aspire.Cli.Tests.csproj (Aspire.Cli.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.Cli.Telemetry;
using Microsoft.Extensions.Logging.Abstractions;
 
namespace Aspire.Cli.Tests.Telemetry;
 
/// <summary>
/// Provides test helpers for creating telemetry instances.
/// </summary>
internal static class TestTelemetryHelper
{
    /// <summary>
    /// Creates and initializes an <see cref="AspireCliTelemetry"/> instance for testing.
    /// </summary>
    public static AspireCliTelemetry CreateInitializedTelemetry()
    {
        var provider = new TestMachineInformationProvider();
        var ciDetector = new TestCIEnvironmentDetector();
        var telemetry = new AspireCliTelemetry(NullLogger<AspireCliTelemetry>.Instance, provider, ciDetector);
        telemetry.InitializeAsync().GetAwaiter().GetResult();
        return telemetry;
    }
 
    /// <summary>
    /// Creates and initializes an <see cref="AspireCliTelemetry"/> instance for testing with custom activity source names.
    /// </summary>
    public static AspireCliTelemetry CreateInitializedTelemetry(string reportedSourceName, string diagnosticsSourceName)
    {
        var provider = new TestMachineInformationProvider();
        var ciDetector = new TestCIEnvironmentDetector();
        var telemetry = new AspireCliTelemetry(NullLogger<AspireCliTelemetry>.Instance, provider, ciDetector, reportedSourceName, diagnosticsSourceName);
        telemetry.InitializeAsync().GetAwaiter().GetResult();
        return telemetry;
    }
 
    private sealed class TestMachineInformationProvider : IMachineInformationProvider
    {
        public Task<string?> GetOrCreateDeviceId() => Task.FromResult<string?>("test-device-id");
        public Task<string> GetMacAddressHash() => Task.FromResult("test-mac-hash");
    }
 
    private sealed class TestCIEnvironmentDetector : ICIEnvironmentDetector
    {
        public bool IsCIEnvironment() => false;
    }
}