diff --git a/src/Client/NetDaemon.HassClient.Tests/HomeAssistantClientTest/HomeAssistantConnectionTests.cs b/src/Client/NetDaemon.HassClient.Tests/HomeAssistantClientTest/HomeAssistantConnectionTests.cs index 49b7eb31c..6bbea8733 100644 --- a/src/Client/NetDaemon.HassClient.Tests/HomeAssistantClientTest/HomeAssistantConnectionTests.cs +++ b/src/Client/NetDaemon.HassClient.Tests/HomeAssistantClientTest/HomeAssistantConnectionTests.cs @@ -75,6 +75,28 @@ public async Task UsingDisposedConnectionWhenPostApiShouldThrowException() await act.Should().ThrowAsync(); } + [Fact] + public async Task SubscribeToSpecificEventShouldSendRequestedEventType() + { + var pipeline = new TransportPipelineMock(); + SubscribeEventCommand? sentCommand = null; + pipeline + .Setup(n => n.SendMessageAsync(It.IsAny(), It.IsAny())) + .Returns((command, _) => + { + sentCommand = command; + pipeline.AddResponse(new HassMessage { Type = "result", Id = command.Id, Success = true }); + return Task.CompletedTask; + }); + + await using var homeAssistantConnection = CreateHomeAssistantConnection(pipeline); + + _ = await homeAssistantConnection.SubscribeToHomeAssistantEventsAsync("state_changed", CancellationToken.None); + + sentCommand.Should().NotBeNull(); + sentCommand!.EventType.Should().Be("state_changed"); + } + [Fact] public async Task HomeAssistantConnectionDisposedMultipleTimesShouldNotThrow() { diff --git a/src/Client/NetDaemon.HassClient/Internal/HomeAssistantConnection.cs b/src/Client/NetDaemon.HassClient/Internal/HomeAssistantConnection.cs index 3ba2643c1..304023dbf 100644 --- a/src/Client/NetDaemon.HassClient/Internal/HomeAssistantConnection.cs +++ b/src/Client/NetDaemon.HassClient/Internal/HomeAssistantConnection.cs @@ -83,7 +83,10 @@ private async Task> SubscribeToHomeAssistantEventsInterna _internalCancelSource.Token ); - var result = await SendCommandAndReturnHassMessageResponseAsync(new SubscribeEventCommand(), + var result = await SendCommandAndReturnHassMessageResponseAsync(new SubscribeEventCommand + { + EventType = eventType + }, combinedTokenSource.Token).ConfigureAwait(false); // The id if the message we used to subscribe should be used as the filter for the event messages