示例#1
0
        static void Main(string[] args)
        {
            // Dependencies.
            IDateTimeGenerator       dateTimeGenerator        = new DateTimeGenerator();
            ITypeConverter           typeConverter            = new TypeConverter();
            ExternalMechanismFactory externalMechanismFactory = new ExternalMechanismFactory();

            SecureConnectionSettings connectionSettings = new SecureConnectionSettings(
                "raspberrypi",
                "/path/to/client/certificate.p12",
                "password");

            ExternalAuthConnectionFactory sslAuthConnectionFactory = new ExternalAuthConnectionFactory(
                "raspberrypi",
                externalMechanismFactory,
                connectionSettings);

            Settings producingSettings = new Settings("Journeys", "journey");

            // Generate journey message.
            Journey            journey = new Journey(150, 35.5, 121.3, "Weather was wet and windy.");
            IMessage <Journey> message = new Message <Journey>(dateTimeGenerator, journey);

            // Produce the message.
            using IMessageProducer messageProducer = new MessageProducer(sslAuthConnectionFactory, typeConverter);
            messageProducer.Produce(producingSettings, message);

            Console.WriteLine($"Message sent. ID: {message.Data.Id}");
            Console.ReadLine();
        }
        public void ExternalAuthConnectionFactory_WhenHostNameIsNotSupplied_ThenArgumentException(string hostname)
        {
            // Arrange
            SecureConnectionSettings settings = GetSecureConnectionSettings();
            ExternalMechanismFactory externalMechanismFactory = new ExternalMechanismFactory();

            // Act
            void instantiation()
            {
                ExternalAuthConnectionFactory externalAuthConnectionFactory = new ExternalAuthConnectionFactory(
                    hostname,
                    externalMechanismFactory,
                    settings);
            }

            // Assert
            Assert.Throws <ArgumentException>(instantiation);
        }
        public void ExternalAuthConnectionFactory_WhenConstructed_ThenExternalAuthMechanismSet()
        {
            // Arrange
            string hostname = "127.0.0.1";
            SecureConnectionSettings settings = GetSecureConnectionSettings();
            ExternalMechanismFactory externalMechanismFactory = new ExternalMechanismFactory();

            // Act
            ExternalAuthConnectionFactory externalAuthConnectionFactory = new ExternalAuthConnectionFactory(
                hostname,
                externalMechanismFactory,
                settings);

            // Assert
            Assert.NotNull(externalAuthConnectionFactory.AuthMechanisms);
            Assert.Single(externalAuthConnectionFactory.AuthMechanisms);
            Assert.Same(externalMechanismFactory, externalAuthConnectionFactory.AuthMechanisms.First());
        }
        public void ExternalAuthConnectionFactory_WhenExternalAuthMechanismNotSupplied_ThenArgumentNullException()
        {
            // Arrange
            string hostname = "127.0.0.1";
            SecureConnectionSettings settings = GetSecureConnectionSettings();
            ExternalMechanismFactory externalMechanismFactory = null;

            // Act
            void instantiation()
            {
                ExternalAuthConnectionFactory externalAuthConnectionFactory = new ExternalAuthConnectionFactory(
                    hostname,
                    externalMechanismFactory,
                    settings);
            }

            // Assert
            Assert.Throws <ArgumentNullException>(instantiation);
        }
        public void ExternalAuthConnectionFactory_WhenConstructed_ThenDetailsSet()
        {
            // Arrange
            string hostname = "127.0.0.1";
            SecureConnectionSettings settings = GetSecureConnectionSettings();
            ExternalMechanismFactory externalMechanismFactory = new ExternalMechanismFactory();

            // Act
            ExternalAuthConnectionFactory externalAuthConnectionFactory = new ExternalAuthConnectionFactory(
                hostname,
                externalMechanismFactory,
                settings);

            // Assert
            Assert.Equal(hostname, externalAuthConnectionFactory.HostName);
            Assert.True(externalAuthConnectionFactory.Ssl.Enabled);
            Assert.Equal(settings.ServerName, externalAuthConnectionFactory.Ssl.ServerName);
            Assert.Equal(settings.CertPath, externalAuthConnectionFactory.Ssl.CertPath);
            Assert.Equal(settings.CertPassphrase, externalAuthConnectionFactory.Ssl.CertPassphrase);
            Assert.Equal(settings.Protocol, externalAuthConnectionFactory.Ssl.Version);
        }