Files
IBKRTrader/tests/IBKRTrader.Tests/Web/LogStreamServiceTests.cs
T
Richard f923721784
Build & Test / build (ubuntu-latest) (push) Canceled after 0s
Build & Test / build (windows-latest) (push) Canceled after 0s
feat: Web-UI als zweiter Ausgabeweg neben Avalonia-Shell (#490)
- Einheitlicher WebserverWorker in IBKRTrader.Hosting auf Kestrel-Basis
- Token-Authentifizierung (AuthService) mit zeitkonstantem Vergleich und HMAC-Session-Tokens
- OrderManager im Core fuer Bestands- und Reservierungsabgleich offener Broker-Orders
- SettingsSchema fuer reflexionsbasiertes Auslesen und sichere Aktualisierung ohne Klartext-Passwoerter
- SSE-Streaming (LogStreamService) fuer Echtzeit-Logs ueber isolierte Channels
- Statische Single-Page-Application in wwwroot (Avalonia Fluent / Polytrader Theme) fuer alle 9 Ansichten
- Unit-Tests fuer OrderManager, AuthService, SettingsSchema, LogStreamService und WebserverWorker (498 Tests gruen)
2026-09-06 19:55:40 +02:00

40 lines
951 B
C#

using FluentAssertions;
using IBKRTrader.Core.Logging;
using IBKRTrader.Hosting.Web;
namespace IBKRTrader.Tests.Web;
[Trait("cat", "unit")]
public class LogStreamServiceTests
{
[Fact]
public void GetRecent_CapturesLogEntries_AndCapsAtRingBufferSize()
{
var logger = new LoggingService();
using var sut = new LogStreamService(logger);
for (int i = 0; i < 150; i++)
{
logger.Info("TestModule", $"Message {i}");
}
var recent = sut.GetRecent();
recent.Count.Should().Be(100);
}
[Fact]
public void Dispose_UnsubscribesFromLogger()
{
var logger = new LoggingService();
var sut = new LogStreamService(logger);
logger.Info("TestModule", "Before dispose");
sut.GetRecent().Count.Should().Be(1);
sut.Dispose();
logger.Info("TestModule", "After dispose");
sut.GetRecent().Count.Should().Be(1);
}
}