public async Task SetModelIdTest() { // Arrange string modelId = "com:microsoft:model-id:testModelId"; string clientVersion = $"TestClientVersion{Guid.NewGuid().ToString()}"; var identity = Mock.Of <IDeviceIdentity>(i => i.Id == "d1" && i.DeviceId == "d1"); var deviceListener = Mock.Of <IDeviceListener>(); var connectionHandler = Mock.Of <IConnectionHandler>(c => c.GetDeviceListener() == Task.FromResult(deviceListener)); var amqpAuthenticator = new Mock <IAmqpAuthenticator>(); amqpAuthenticator.Setup(c => c.AuthenticateAsync("d1")).ReturnsAsync(true); Mock <ICbsNode> cbsNodeMock = amqpAuthenticator.As <ICbsNode>(); ICbsNode cbsNode = cbsNodeMock.Object; var amqpConnection = Mock.Of <IAmqpConnection>( c => c.FindExtension <IConnectionHandler>() == connectionHandler && c.FindExtension <ICbsNode>() == cbsNode); var amqpSession = Mock.Of <IAmqpSession>(s => s.Connection == amqpConnection); var amqpLink = Mock.Of <IReceivingAmqpLink>(l => l.Session == amqpSession && l.IsReceiver && l.Settings == new AmqpLinkSettings() && l.State == AmqpObjectState.Opened); var linkSettings = new AmqpLinkSettings { Properties = new Fields() { { IotHubAmqpProperty.ClientVersion, clientVersion }, { IotHubAmqpProperty.ModelId, modelId } } }; Mock.Get(amqpLink).SetupGet(l => l.Settings).Returns(linkSettings); var requestUri = new Uri("amqps://foo.bar/devices/d1/messages/events"); var boundVariables = new Dictionary <string, string> { { "deviceid", "d1" } }; var messageConverter = new AmqpMessageConverter(); var storeProvider = new StoreProvider(new InMemoryDbStoreProvider()); IEntityStore <string, string> store = storeProvider.GetEntityStore <string, string>("modelId"); var productInfoStore = Mock.Of <IProductInfoStore>(); var modelIdStore = new ModelIdStore(store); ILinkHandler linkHandler = new EventsLinkHandler(identity, amqpLink, requestUri, boundVariables, connectionHandler, messageConverter, productInfoStore, modelIdStore); // Act await linkHandler.OpenAsync(TimeSpan.FromSeconds(1)); // Assert Option <string> modelIdFromStore = await modelIdStore.GetModelId(identity.Id); string deviceEdgeProductInfo = await productInfoStore.GetEdgeProductInfo(identity.Id); Assert.True(modelIdFromStore.HasValue); modelIdFromStore.ForEach(m => Assert.Equal(modelId, m)); }
public async Task WhitespaceModelIdTest() { // Arrange var storeProvider = new StoreProvider(new InMemoryDbStoreProvider()); IEntityStore <string, string> store = storeProvider.GetEntityStore <string, string>("modelId"); var modelIdStore = new ModelIdStore(store); // Act await modelIdStore.SetModelId("d1", " "); Option <string> modelId = await modelIdStore.GetModelId("d1"); // Assert Assert.False(modelId.HasValue); }
public async Task SmokeTest() { // Arrange var storeProvider = new StoreProvider(new InMemoryDbStoreProvider()); IEntityStore <string, string> store = storeProvider.GetEntityStore <string, string>("modelId"); var modelIdStore = new ModelIdStore(store); var deviceToModelIds = new Dictionary <string, string> { ["d1"] = "dtmi:example:capabailityModels:MXChip;1", ["d2"] = "dtmi:example2:capabailityModels:MXChip;1", ["d3"] = "dtmi:example3:capabailityModels:MXChip;1", ["d3/m1"] = "dtmi:example4:capabailityModels:MXChip;1", ["d3/m2"] = "dtmi:example5:capabailityModels:MXChip;1" }; // Act foreach (KeyValuePair <string, string> kvp in deviceToModelIds) { await modelIdStore.SetModelId(kvp.Key, kvp.Value); } var receivedDeviceModelIds = new Dictionary <string, string>(); foreach (string id in deviceToModelIds.Keys) { Option <string> modelId = await modelIdStore.GetModelId(id); modelId.ForEach(m => receivedDeviceModelIds.Add(id, m)); } // Assert Assert.Equal(deviceToModelIds.Count, receivedDeviceModelIds.Count); foreach (KeyValuePair <string, string> kvp in deviceToModelIds) { Assert.Equal(kvp.Value, receivedDeviceModelIds[kvp.Key]); } }