public void SetMinimumTlsVersions_CannotSetOther(SslProtocols protocol)
        {
            // arrange
            var tlsVersions = new TlsVersions();

            // act
            tlsVersions.SetMinimumTlsVersions(protocol);

            // assert
            tlsVersions.MinimumTlsVersions.Should().Be(SslProtocols.Tls12);
            tlsVersions.Preferred.Should().Be(SslProtocols.None);
        }
        public void SetMinimumTlsVersions_CanSetToOlderTls(SslProtocols protocol)
        {
            // arrange
            var          tlsVersions = new TlsVersions();
            SslProtocols expected    = protocol | SslProtocols.Tls12;

            // act
            tlsVersions.SetMinimumTlsVersions(protocol);

            // assert
            tlsVersions.MinimumTlsVersions.Should().Be(expected);
            tlsVersions.Preferred.Should().Be(expected);
        }
        public void SetMinimumTlsVersions_CanSetToTls12()
        {
            // arrange
            var tlsVersions             = new TlsVersions();
            const SslProtocols expected = SslProtocols.Tls12;

            // act
            tlsVersions.SetMinimumTlsVersions(expected);

            // assert
            tlsVersions.MinimumTlsVersions.Should().Be(expected);
            tlsVersions.Preferred.Should().Be(expected);
        }
        public void SetMinimumTlsVersions_CanSetToNone()
        {
            // arrange
            var tlsVersions = new TlsVersions();

            // Need to change it to something other than none to know that it can be set back
            tlsVersions.SetMinimumTlsVersions(SslProtocols.Tls12);

            // act
            tlsVersions.SetMinimumTlsVersions(SslProtocols.None);

            // assert
            tlsVersions.MinimumTlsVersions.Should().Be(SslProtocols.Tls12);
            tlsVersions.Preferred.Should().Be(SslProtocols.None);
        }
        public void SetMinimumTlsVersions_CannotSetDefault()
        {
            // arrange
            var tlsVersions = new TlsVersions();

            // act

            // SslProtocols.Default is a combination of Ssl3 and Tls (1.0).
            // Ssl3 is not allowed, but Tls (1.0) is, so Ssl3 should be filtered out.
            tlsVersions.SetMinimumTlsVersions(SslProtocols.Default);

            // assert
            var expected = SslProtocols.Tls | SslProtocols.Tls12;

            tlsVersions.MinimumTlsVersions.Should().Be(expected);
            tlsVersions.Preferred.Should().Be(expected);
        }
    public ServerOptionsViewModel()
    {
        Host = "localhost";
        Port = 1883;
        CommunicationTimeout = 10;

        Transports.Add(new TransportViewModel("TCP", Transport.TCP));
        Transports.Add(new TransportViewModel("WebSocket", Transport.WebSocket));
        Transports.SelectedItem = Transports.FirstOrDefault() !;

        TlsVersions.Add(new TlsVersionViewModel("no TLS", SslProtocols.None));
        TlsVersions.Add(new TlsVersionViewModel("TLS 1.0", SslProtocols.Tls));
        TlsVersions.Add(new TlsVersionViewModel("TLS 1.1", SslProtocols.Tls11));
        TlsVersions.Add(new TlsVersionViewModel("TLS 1.2", SslProtocols.Tls12));
        TlsVersions.Add(new TlsVersionViewModel("TLS 1.3", SslProtocols.Tls13));

        TlsVersions.SelectedItem = TlsVersions.FirstOrDefault() !;
    }