From 393c73c95febe62b7549dc0abd59a420f4e724ad Mon Sep 17 00:00:00 2001
From: Kevin BEAUGRAND <9513635+kbeaugrand@users.noreply.github.com>
Date: Fri, 28 Oct 2022 13:26:09 +0200
Subject: [PATCH] Fix #1472 - Remove DeviceModelCommandManager class (#1475)
---
.../Factories/TableClientFactory.cs | 3 -
.../Managers/DeviceModelCommandsManager.cs | 74 ----------
.../Managers/IDeviceModelCommandsManager.cs | 15 --
src/AzureIoTHub.Portal.Server/Startup.cs | 3 -
.../DeviceModelCommandsManagerTests.cs | 135 ------------------
.../Server/Mappers/DeviceTwinMapperTests.cs | 2 -
6 files changed, 232 deletions(-)
delete mode 100644 src/AzureIoTHub.Portal.Server/Managers/DeviceModelCommandsManager.cs
delete mode 100644 src/AzureIoTHub.Portal.Server/Managers/IDeviceModelCommandsManager.cs
delete mode 100644 src/AzureIoTHub.Portal.Tests.Unit/Server/Managers/DeviceModelCommandsManagerTests.cs
diff --git a/src/AzureIoTHub.Portal.Infrastructure/Factories/TableClientFactory.cs b/src/AzureIoTHub.Portal.Infrastructure/Factories/TableClientFactory.cs
index 741958475..0a0d7ac7e 100644
--- a/src/AzureIoTHub.Portal.Infrastructure/Factories/TableClientFactory.cs
+++ b/src/AzureIoTHub.Portal.Infrastructure/Factories/TableClientFactory.cs
@@ -3,11 +3,8 @@
namespace AzureIoTHub.Portal.Infrastructure.Factories
{
- using System;
- using Azure;
using Azure.Data.Tables;
using AzureIoTHub.Portal.Domain;
- using AzureIoTHub.Portal.Domain.Exceptions;
public class TableClientFactory : ITableClientFactory
{
diff --git a/src/AzureIoTHub.Portal.Server/Managers/DeviceModelCommandsManager.cs b/src/AzureIoTHub.Portal.Server/Managers/DeviceModelCommandsManager.cs
deleted file mode 100644
index 124e9c4f3..000000000
--- a/src/AzureIoTHub.Portal.Server/Managers/DeviceModelCommandsManager.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) CGI France. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-
-namespace AzureIoTHub.Portal.Server.Managers
-{
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using Azure.Data.Tables;
- using AzureIoTHub.Portal.Domain;
- using AzureIoTHub.Portal.Models.v10.LoRaWAN;
- using AzureIoTHub.Portal.Server.Mappers;
-
- public class DeviceModelCommandsManager : IDeviceModelCommandsManager
- {
- private readonly ITableClientFactory tableClientFactory;
- private readonly IDeviceModelCommandMapper deviceModelCommandMapper;
-
- public DeviceModelCommandsManager(ITableClientFactory tableClientFactory, IDeviceModelCommandMapper deviceModelCommandMapper)
- {
- this.tableClientFactory = tableClientFactory;
- this.deviceModelCommandMapper = deviceModelCommandMapper;
- }
-
- ///
- /// Retrieve all the commands from a devicemodel.
- ///
- /// the model type of the device.
- /// Corresponding list of commands or an empty list if it doesn't have any command.
- public ReadOnlyCollection RetrieveCommands(string deviceModel)
- {
- var commands = new List();
-
- if (deviceModel == null)
- {
- return commands.AsReadOnly();
- }
-
- var queryResultsFilter = this.tableClientFactory
- .GetDeviceCommands()
- .Query(filter: $"PartitionKey eq '{deviceModel}'");
-
- foreach (var qEntity in queryResultsFilter)
- {
- commands.Add(
- new Command()
- {
- CommandId = qEntity.RowKey,
- Frame = qEntity[nameof(Command.Frame)].ToString()
- });
- }
-
- return commands.AsReadOnly();
- }
-
- public ReadOnlyCollection RetrieveDeviceModelCommands(string deviceModel)
- {
- var commands = new List();
-
- if (deviceModel == null)
- {
- return commands.AsReadOnly();
- }
-
- var queryResultsFilter = this.tableClientFactory
- .GetDeviceCommands()
- .Query(filter: $"PartitionKey eq '{deviceModel}'");
-
- commands.AddRange(queryResultsFilter.Select(this.deviceModelCommandMapper.GetDeviceModelCommand));
-
- return commands.AsReadOnly();
- }
- }
-}
diff --git a/src/AzureIoTHub.Portal.Server/Managers/IDeviceModelCommandsManager.cs b/src/AzureIoTHub.Portal.Server/Managers/IDeviceModelCommandsManager.cs
deleted file mode 100644
index c436977da..000000000
--- a/src/AzureIoTHub.Portal.Server/Managers/IDeviceModelCommandsManager.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) CGI France. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-
-namespace AzureIoTHub.Portal.Server.Managers
-{
- using System.Collections.ObjectModel;
- using AzureIoTHub.Portal.Models.v10.LoRaWAN;
-
- public interface IDeviceModelCommandsManager
- {
- ReadOnlyCollection RetrieveCommands(string deviceModel);
-
- ReadOnlyCollection RetrieveDeviceModelCommands(string deviceModel);
- }
-}
diff --git a/src/AzureIoTHub.Portal.Server/Startup.cs b/src/AzureIoTHub.Portal.Server/Startup.cs
index 90bb698a5..de8e6d7f5 100644
--- a/src/AzureIoTHub.Portal.Server/Startup.cs
+++ b/src/AzureIoTHub.Portal.Server/Startup.cs
@@ -16,7 +16,6 @@ namespace AzureIoTHub.Portal.Server
using Hellang.Middleware.ProblemDetails.Mvc;
using Identity;
using Infrastructure;
- using Infrastructure.Factories;
using Infrastructure.Repositories;
using Infrastructure.Seeds;
using Jobs;
@@ -117,11 +116,9 @@ public void ConfigureServices(IServiceCollection services)
_ = services.AddTransient();
_ = services.AddTransient(_ => new BlobServiceClient(configuration.StorageAccountConnectionString));
- _ = services.AddTransient(_ => new TableClientFactory(configuration.StorageAccountConnectionString));
_ = services.AddTransient();
_ = services.AddTransient();
_ = services.AddTransient();
- _ = services.AddTransient();
_ = services.AddTransient();
_ = services.AddTransient();
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Server/Managers/DeviceModelCommandsManagerTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Server/Managers/DeviceModelCommandsManagerTests.cs
deleted file mode 100644
index 7480d9f67..000000000
--- a/src/AzureIoTHub.Portal.Tests.Unit/Server/Managers/DeviceModelCommandsManagerTests.cs
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright (c) CGI France. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-
-namespace AzureIoTHub.Portal.Tests.Unit.Server.Managers
-{
- using System.Collections.Generic;
- using System.Threading;
- using Azure;
- using Azure.Data.Tables;
- using AzureIoTHub.Portal.Domain;
- using AzureIoTHub.Portal.Server.Managers;
- using AzureIoTHub.Portal.Server.Mappers;
- using Models.v10.LoRaWAN;
- using Moq;
- using NUnit.Framework;
-
- [TestFixture]
- public class DeviceModelCommandsManagerTests
- {
- private MockRepository mockRepository;
-
- private Mock mockTableClientFactory;
-
- [SetUp]
- public void SetUp()
- {
- this.mockRepository = new MockRepository(MockBehavior.Strict);
-
- this.mockTableClientFactory = this.mockRepository.Create();
- }
-
- private DeviceModelCommandsManager CreateManager()
- {
- return new DeviceModelCommandsManager(
- this.mockTableClientFactory.Object,
- new DeviceModelCommandMapper());
- }
-
- [Test]
- public void RetrieveCommandsStateUnderTestExpectedBehavior()
- {
- // Arrange
- var manager = CreateManager();
- const string deviceModel = "aaa";
- var resultReturned = false;
-
- var entityMock = new TableEntity(deviceModel, "bbbb");
- _ = entityMock.TryAdd(nameof(Command.Frame), "ADETRDTHDFG");
-
- var mockTable = this.mockRepository.Create();
- var mockTableResponse = this.mockRepository.Create>();
- var mockEnumerator = this.mockRepository.Create>();
- _ = mockEnumerator.Setup(x => x.Dispose()).Callback(() => { });
- _ = mockEnumerator.Setup(x => x.MoveNext()).Returns(() =>
- {
- resultReturned = !resultReturned;
- return resultReturned;
- });
-
- _ = mockEnumerator.Setup(x => x.Current).Returns(entityMock);
-
- _ = mockTableResponse.Setup(x => x.GetEnumerator())
- .Returns(mockEnumerator.Object);
-
- _ = mockTable.Setup(x => x.Query(It.Is(x => x.StartsWith($"PartitionKey eq '{deviceModel}'")),
- It.IsAny(),
- It.IsAny>(),
- It.IsAny()))
- .Returns(mockTableResponse.Object);
-
- _ = this.mockTableClientFactory.Setup(x => x.GetDeviceCommands())
- .Returns(mockTable.Object);
-
- // Act
- var result = manager.RetrieveCommands(deviceModel);
-
- // Assert
- Assert.IsNotNull(result);
- Assert.AreEqual(1, result.Count);
- Assert.AreEqual("bbbb", result[0].CommandId);
- Assert.AreEqual("ADETRDTHDFG", result[0].Frame);
-
- this.mockRepository.VerifyAll();
- }
-
- [Test]
- public void RetrieveDeviceModelCommandsStateUnderTestExpectedBehavior()
- {
- // Arrange
- var manager = CreateManager();
- const string deviceModel = "aaa";
- var resultReturned = false;
-
- var entityMock = new TableEntity(deviceModel, "bbbb");
- _ = entityMock.TryAdd(nameof(DeviceModelCommandDto.Frame), "ADETRDTHDFG");
- _ = entityMock.TryAdd(nameof(DeviceModelCommandDto.Port), 125);
-
- var mockTable = this.mockRepository.Create();
- var mockTableResponse = this.mockRepository.Create>();
- var mockEnumerator = this.mockRepository.Create>();
- _ = mockEnumerator.Setup(x => x.Dispose()).Callback(() => { });
- _ = mockEnumerator.Setup(x => x.MoveNext()).Returns(() =>
- {
- resultReturned = !resultReturned;
- return resultReturned;
- });
-
- _ = mockEnumerator.Setup(x => x.Current).Returns(entityMock);
-
- _ = mockTableResponse.Setup(x => x.GetEnumerator())
- .Returns(mockEnumerator.Object);
-
- _ = mockTable.Setup(x => x.Query(It.Is(x => x.StartsWith($"PartitionKey eq '{deviceModel}'")),
- It.IsAny(),
- It.IsAny>(),
- It.IsAny()))
- .Returns(mockTableResponse.Object);
-
- _ = this.mockTableClientFactory.Setup(x => x.GetDeviceCommands())
- .Returns(mockTable.Object);
-
- // Act
- var result = manager.RetrieveDeviceModelCommands(deviceModel);
-
- // Assert
- Assert.IsNotNull(result);
- Assert.AreEqual(1, result.Count);
- Assert.AreEqual("bbbb", result[0].Name);
- Assert.AreEqual(125, result[0].Port);
- Assert.AreEqual("ADETRDTHDFG", result[0].Frame);
-
- this.mockRepository.VerifyAll();
- }
- }
-}
diff --git a/src/AzureIoTHub.Portal.Tests.Unit/Server/Mappers/DeviceTwinMapperTests.cs b/src/AzureIoTHub.Portal.Tests.Unit/Server/Mappers/DeviceTwinMapperTests.cs
index 8461ede11..aba4a59c1 100644
--- a/src/AzureIoTHub.Portal.Tests.Unit/Server/Mappers/DeviceTwinMapperTests.cs
+++ b/src/AzureIoTHub.Portal.Tests.Unit/Server/Mappers/DeviceTwinMapperTests.cs
@@ -21,7 +21,6 @@ public class DeviceTwinMapperTests
private MockRepository mockRepository;
private Mock mockDeviceModelImageManager;
- private Mock mockDeviceModelCommandsManager;
private Mock mockTableClientFactory;
[SetUp]
@@ -30,7 +29,6 @@ public void SetUp()
this.mockRepository = new MockRepository(MockBehavior.Strict);
this.mockDeviceModelImageManager = this.mockRepository.Create();
- this.mockDeviceModelCommandsManager = this.mockRepository.Create();
this.mockTableClientFactory = this.mockRepository.Create();
}