DeviceBridgeTests/Controllers/ConnectionStatusControllerTests.cs (61 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
using System.Threading;
using System.Threading.Tasks;
using DeviceBridge.Models;
using DeviceBridge.Services;
using Moq;
using NLog;
using NUnit.Framework;
namespace DeviceBridge.Controllers.Tests
{
[TestFixture]
public class ConnectionStatusControllerTests
{
private const string MockDeviceId = "test-device";
private const string MockCallbackUrl = "mock-callback-url";
private Mock<IConnectionStatusSubscriptionService> _connectionStatusSubsciptionServiceMock;
private ConnectionStatusController _connectionStatusController;
private DeviceSubscription _subscription;
private Mock<IConnectionManager> _connectionManagerMock;
[SetUp]
public void Setup()
{
_connectionStatusSubsciptionServiceMock = new Mock<IConnectionStatusSubscriptionService>();
_connectionManagerMock = new Mock<IConnectionManager>();
_connectionStatusController = new ConnectionStatusController(LogManager.GetCurrentClassLogger(), _connectionStatusSubsciptionServiceMock.Object, _connectionManagerMock.Object);
_subscription = new DeviceSubscription();
_connectionStatusSubsciptionServiceMock.Setup(s => s.GetConnectionStatusSubscription(It.IsAny<Logger>(), MockDeviceId, It.IsAny<CancellationToken>())).Returns(Task.FromResult(_subscription));
_connectionStatusSubsciptionServiceMock.Setup(s => s.CreateOrUpdateConnectionStatusSubscription(It.IsAny<Logger>(), MockDeviceId, MockCallbackUrl, It.IsAny<CancellationToken>())).Returns(Task.FromResult(_subscription));
}
[Test]
[Description("GetCurrentConnectionStatus should call ConnectionManager.GetDeviceStatus with correct device id.")]
public void TestGetCurrentConnectionStatus()
{
var deviceSubscription = _connectionStatusController.GetCurrentConnectionStatus(MockDeviceId);
_connectionManagerMock.Verify(p => p.GetDeviceStatus(MockDeviceId));
}
[Test]
[Description("GetConnectionStatusSubscription should call ConnectionStatusSubsciptionService.GetConnectionStatusSubscription with correct device id and returns the correct value.")]
public async Task TestGetConnectionStatusSubscription()
{
var deviceSubscription = await _connectionStatusController.GetConnectionStatusSubscription(MockDeviceId);
_connectionStatusSubsciptionServiceMock.Verify(p => p.GetConnectionStatusSubscription(It.IsAny<Logger>(), MockDeviceId, It.IsAny<CancellationToken>()));
Assert.AreEqual(_subscription, deviceSubscription.Value);
}
[Test]
[Description("CreateOrUpdateConnectionStatusSubscription should call ConnectionStatusSubscriptionService.CreateOrUpdateConnectionStatusSubscription with correct device id and callback url.")]
public async Task TestCreateOrUpdateConnectionStatusSubscription()
{
var body = new SubscriptionCreateOrUpdateBody { CallbackUrl = "testUrl" };
var deviceSubscription = await _connectionStatusController.CreateOrUpdateConnectionStatusSubscription(MockDeviceId, body);
_connectionStatusSubsciptionServiceMock.Verify(p => p.CreateOrUpdateConnectionStatusSubscription(It.IsAny<Logger>(), MockDeviceId, body.CallbackUrl, It.IsAny<CancellationToken>()));
}
[Test]
[Description("DeleteConnectionStatusSubscription should call ConnectionStatusSubscriptionService.DeleteConnectionStatusSubscription with correct device id.")]
public async Task TestDeleteConnectionStatusSubscription()
{
var result = await _connectionStatusController.DeleteConnectionStatusSubscription(MockDeviceId);
_connectionStatusSubsciptionServiceMock.Verify(p => p.DeleteConnectionStatusSubscription(It.IsAny<Logger>(), MockDeviceId, It.IsAny<CancellationToken>()));
}
}
}