mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-15 17:00:03 +08:00
64 lines
2.6 KiB
C#
64 lines
2.6 KiB
C#
using System.Threading.Tasks;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using MQTTnet.Client;
|
|
using MQTTnet.Server;
|
|
|
|
namespace MQTTnet.Tests.Server
|
|
{
|
|
[TestClass]
|
|
public sealed class Injection_Tests : BaseTestClass
|
|
{
|
|
[TestMethod]
|
|
public async Task Inject_Application_Message_At_Session_Level()
|
|
{
|
|
using (var testEnvironment = CreateTestEnvironment())
|
|
{
|
|
var server = await testEnvironment.StartServer();
|
|
var receiver1 = await testEnvironment.ConnectClient();
|
|
var receiver2 = await testEnvironment.ConnectClient();
|
|
var messageReceivedHandler1 = testEnvironment.CreateApplicationMessageHandler(receiver1);
|
|
var messageReceivedHandler2 = testEnvironment.CreateApplicationMessageHandler(receiver2);
|
|
|
|
var status = await server.GetSessionsAsync();
|
|
var clientStatus = status[0];
|
|
|
|
await receiver1.SubscribeAsync("#");
|
|
await receiver2.SubscribeAsync("#");
|
|
|
|
await clientStatus.EnqueueApplicationMessageAsync(new MqttApplicationMessageBuilder().WithTopic("InjectedOne").Build());
|
|
|
|
await LongTestDelay();
|
|
|
|
Assert.AreEqual(1, messageReceivedHandler1.ReceivedEventArgs.Count);
|
|
Assert.AreEqual("InjectedOne", messageReceivedHandler1.ReceivedEventArgs[0].ApplicationMessage.Topic);
|
|
|
|
// The second receiver should NOT receive the message.
|
|
Assert.AreEqual(0, messageReceivedHandler2.ReceivedEventArgs.Count);
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task Inject_ApplicationMessage_At_Server_Level()
|
|
{
|
|
using (var testEnvironment = CreateTestEnvironment())
|
|
{
|
|
var server = await testEnvironment.StartServer();
|
|
|
|
var receiver = await testEnvironment.ConnectClient();
|
|
|
|
var messageReceivedHandler = testEnvironment.CreateApplicationMessageHandler(receiver);
|
|
|
|
await receiver.SubscribeAsync("#");
|
|
|
|
var injectedApplicationMessage = new MqttApplicationMessageBuilder().WithTopic("InjectedOne").Build();
|
|
|
|
await server.InjectApplicationMessage(new InjectedMqttApplicationMessage(injectedApplicationMessage));
|
|
|
|
await LongTestDelay();
|
|
|
|
Assert.AreEqual(1, messageReceivedHandler.ReceivedEventArgs.Count);
|
|
Assert.AreEqual("InjectedOne", messageReceivedHandler.ReceivedEventArgs[0].ApplicationMessage.Topic);
|
|
}
|
|
}
|
|
}
|
|
} |