public void when_getting_server_flow_from_valid_packet_type_then_succeeds(MqttPacketType packetType, Type flowType) { IMqttAuthenticationProvider authenticationProvider = Mock.Of <IMqttAuthenticationProvider>(p => p.Authenticate(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()) == true); ServerProtocolFlowProvider flowProvider = new ServerProtocolFlowProvider(authenticationProvider, Mock.Of <IConnectionProvider>(), Mock.Of <IMqttTopicEvaluator>(), Mock.Of <IRepositoryProvider>(), Mock.Of <IPacketIdProvider>(), Mock.Of <ISubject <MqttUndeliveredMessage> >(), new MqttConfiguration()); IProtocolFlow flow = flowProvider.GetFlow(packetType); flowType.Should().Be(flow.GetType()); }
public void when_getting_explicit_server_flow_from_type_then_succeeds() { IMqttAuthenticationProvider authenticationProvider = Mock.Of <IMqttAuthenticationProvider>(p => p.Authenticate(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()) == true); ServerProtocolFlowProvider flowProvider = new ServerProtocolFlowProvider(authenticationProvider, Mock.Of <IConnectionProvider>(), Mock.Of <IMqttTopicEvaluator>(), Mock.Of <IRepositoryProvider>(), Mock.Of <IPacketIdProvider>(), Mock.Of <ISubject <MqttUndeliveredMessage> >(), new MqttConfiguration()); ServerConnectFlow connectFlow = flowProvider.GetFlow <ServerConnectFlow>(); PublishSenderFlow senderFlow = flowProvider.GetFlow <PublishSenderFlow>(); ServerPublishReceiverFlow receiverFlow = flowProvider.GetFlow <ServerPublishReceiverFlow>(); ServerSubscribeFlow subscribeFlow = flowProvider.GetFlow <ServerSubscribeFlow>(); ServerUnsubscribeFlow unsubscribeFlow = flowProvider.GetFlow <ServerUnsubscribeFlow>(); DisconnectFlow disconnectFlow = flowProvider.GetFlow <DisconnectFlow>(); Assert.NotNull(connectFlow); Assert.NotNull(senderFlow); Assert.NotNull(receiverFlow); Assert.NotNull(subscribeFlow); Assert.NotNull(unsubscribeFlow); Assert.NotNull(disconnectFlow); }
/// <summary> /// Creates an MQTT Server /// </summary> /// <param name="configuration"> /// The configuration used for creating the Server /// See <see cref="MqttConfiguration" /> for more details about the supported values /// </param> /// <returns>A new MQTT Server</returns> /// <exception cref="MqttServerException">MqttServerException</exception> public IMqttServer CreateServer(MqttConfiguration configuration) { try { var topicEvaluator = new MqttTopicEvaluator(configuration); var channelProvider = binding.GetChannelListener(configuration); var channelFactory = new PacketChannelFactory(topicEvaluator, configuration); var repositoryProvider = new InMemoryRepositoryProvider(); var connectionProvider = new ConnectionProvider(); var packetIdProvider = new PacketIdProvider(); var undeliveredMessagesListener = new Subject <MqttUndeliveredMessage> (); var flowProvider = new ServerProtocolFlowProvider(authenticationProvider, connectionProvider, topicEvaluator, repositoryProvider, packetIdProvider, undeliveredMessagesListener, configuration); return(new MqttServerImpl(channelProvider, channelFactory, flowProvider, connectionProvider, undeliveredMessagesListener, configuration)); } catch (Exception ex) { tracer.Error(ex, ServerProperties.Resources.Server_InitializeError); throw new MqttServerException(ServerProperties.Resources.Server_InitializeError, ex); } }