using MeetingAssistant.Recording; using MeetingAssistant.Transcription; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Options; namespace MeetingAssistant.Tests; public sealed class AzureSpeechStreamingTranscriptionProviderTests { [Fact] public async Task TranscribeFailsClearlyWhenKeyIsMissing() { var provider = new AzureSpeechStreamingTranscriptionProvider( Options.Create(new MeetingAssistantOptions { AzureSpeech = new AzureSpeechOptions { Region = "germanywestcentral", KeyEnv = $"MEETING_ASSISTANT_MISSING_AZURE_KEY_{Guid.NewGuid():N}" } }), NullLogger.Instance); var exception = await Assert.ThrowsAsync(async () => { await foreach (var _ in provider.TranscribeAsync(ReadSingleChunk(), CancellationToken.None)) { } }); Assert.Contains("Azure Speech key is not configured", exception.Message); } private static async IAsyncEnumerable ReadSingleChunk() { await Task.Yield(); yield return new AudioChunk(new byte[320], 16000, 1); } }