public void TestTLSIdentity()
        {
            // TLS is disabled
            _listener = CreateListener(false);
            _listener.TlsIdentity.Should().BeNull();
            _listener.Stop();
            _listener.TlsIdentity.Should().BeNull();

            // Anonymous Identity
            _listener = CreateListener(true);
            _listener.TlsIdentity.Should().NotBeNull();
            _listener.Stop();
            _listener.TlsIdentity.Should().BeNull();

            // User Identity
            TLSIdentity.DeleteIdentity(_store, ServerCertLabel, null);
            var id = TLSIdentity.CreateIdentity(false,
                                                new Dictionary <string, string>()
            {
                { Certificate.CommonNameAttribute, "CBL-Server" }
            },
                                                null,
                                                _store,
                                                ServerCertLabel,
                                                null);
            var config = CreateListenerConfig(true, true, null, id);

            _listener = new URLEndpointListener(config);
            _listener.TlsIdentity.Should().BeNull();
            _listener.Start();
            _listener.TlsIdentity.Should().NotBeNull();
            _listener.TlsIdentity.Should().BeEquivalentTo(config.TlsIdentity);
            _listener.Stop();
            _listener.TlsIdentity.Should().BeNull();
        }
        private URLEndpointListener Listen(URLEndpointListenerConfiguration config,
                                           int expectedErrCode = 0, CouchbaseLiteErrorType expectedErrDomain = 0)
        {
            _listener?.Stop();

            _listener = new URLEndpointListener(config);

            _listener.Port.Should().Be(0, "Listener's port should be 0 because the listener has not yet started.");
            _listener.Urls.Count.Should().Be(0, "Listener's Urls count should be 0 because the listener has not yet started.");
            _listener.TlsIdentity.Should().BeNull("Listener's TlsIdentity should be null because the listener has not yet started.");
            _listener.Status.ConnectionCount.Should().Be(0, "Listener's connection count should be 0 because the listener has not yet started.");
            _listener.Status.ActiveConnectionCount.Should().Be(0, "Listener's active connection count should be 0 because the listener has not yet started.");

            try {
                _listener.Start();
            } catch (CouchbaseLiteException e) {
                if (expectedErrCode == 0)
                {
                    throw;
                }

                e.Domain.Should().Be(expectedErrDomain);
                e.Error.Should().Be(expectedErrCode);
            } catch (CouchbaseNetworkException ne) {
                if (expectedErrCode == 0)
                {
                    throw;
                }

                ne.Domain.Should().Be(expectedErrDomain);
                ne.Error.Should().Be(expectedErrCode);
            }

            return(_listener);
        }
Пример #3
0
        private void ExecuteStartListenerCommand()
        {
            if (!IsListening)
            {
                try {
                    CreateListener();
                    //tag::StartListener[]
                    _urlEndpointListener.Start();
                    //end::StartListener[]
                    if (CoreApp.IsDebugging)
                    {
                        PrintListener(_urlEndpointListener);
                    }
                } catch (Exception ex) {
                    Debug.WriteLine($"Fail starting listener : {ex}");
                    return;
                }

                IsListening = true;
                Broadcast();
                ListenerStatus = $"Listening on {_urlEndpointListener.Urls[0]}";
            }
            else
            {
                //tag::StopListener[]
                _urlEndpointListener.Stop();
                _urlEndpointListener.Dispose();
                //end::StopListener[]
                IsListening    = false;
                ListenerStatus = "";
            }
        }
Пример #4
0
        private URLEndpointListener CreateNewListener()
        {
            var config   = new URLEndpointListenerConfiguration(OtherDb);
            var listener = new URLEndpointListener(config);

            listener.Start();
            return(_listener);
        }
        private URLEndpointListener CreateNewListener()
        {
            var config = new URLEndpointListenerConfiguration(OtherDb);

            config.Port       = 0;
            config.DisableTLS = false;

            var listener = new URLEndpointListener(config);

            listener.Start();
            return(_listener);
        }
        public void TestBusyPort()
        {
            _listener = CreateListener(false, false);
            _listener.Start();

            //listener1 uses the same port as listener
            var config    = CreateListenerConfig(false, false, stopListener: false);
            var listener1 = Listen(config, GetEADDRINUSECode(), CouchbaseLiteErrorType.POSIX, stopListener: false);

            _listener.Stop();
            listener1.Stop();
            listener1.Dispose();
        }