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);
        }
Esempio n. 3
0
        /// <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);
            }
        }