Exemplo n.º 1
0
        public void EngineShouldHandleNewRequests()
        {
            var logger = MockRepository.GenerateMock<ILogger>();
            var routeRegister = MockRepository.GenerateMock<IRouteRegister>();
            var hostConfiguration = MockRepository.GenerateMock<IHostConfiguration>();

            var socketListener = MockRepository.GenerateStrictMock<ISocketListener>();
            socketListener.Expect(s => s.RemoteIpAddress).Return("ip");
            socketListener.Expect(s => s.RemotePort).Return(80);
            socketListener.Expect(s => s.Start());
            socketListener.Expect(s => s.Accept())
                          .Return(new Task<ISocketListener>(() => socketListener))
                          .Repeat.Once();
            socketListener.Expect(s => s.Accept())
                          .Return(new Task<ISocketListener>(() => socketListener));

            var engine = MockRepository.GenerateStrictMock<IStyxEngine>();
            engine.Expect(e => e.HandleRequest(Arg<ISocketListener>.Is.NotNull));

            var bootstrapper = MockRepository.GenerateStrictMock<IBootstrapper>();
            bootstrapper.Expect(b => b.Logger).Return(logger);
            bootstrapper.Expect(b => b.Engine).Return(engine);
            bootstrapper.Expect(b => b.RouteRegister).Return(routeRegister);
            bootstrapper.Expect(b => b.SocketListener).Return(socketListener);
            bootstrapper.Expect(b => b.HostConfiguration).Return(hostConfiguration);

            var uri = new Uri("ws://localhost");

            var host = new StyxHost(uri, bootstrapper: bootstrapper);

            host.Start();
        }
        public void RegisterHandlerOverloadsShouldRegisterWithRouteRegister()
        {
            var logger = MockRepository.GenerateMock<ILogger>();
            var engine = MockRepository.GenerateMock<IStyxEngine>();
            var socketListener = MockRepository.GenerateMock<ISocketListener>();
            var hostConfiguration = MockRepository.GenerateMock<IHostConfiguration>();

            var routeRegister = MockRepository.GenerateStrictMock<IRouteRegister>();
            routeRegister.Expect(r => r.Register(Arg<string>.Is.Equal("onOpen"), Arg<Func<IWebSocketHandler>>.Is.NotNull));
            routeRegister.Expect(r => r.Register(Arg<string>.Is.Equal("onError"), Arg<Func<IWebSocketHandler>>.Is.NotNull));
            routeRegister.Expect(r => r.Register(Arg<string>.Is.Equal("onClose"), Arg<Func<IWebSocketHandler>>.Is.NotNull));
            routeRegister.Expect(r => r.Register(Arg<string>.Is.Equal("all"), Arg<Func<IWebSocketHandler>>.Is.NotNull));

            var bootstrapper = MockRepository.GenerateStrictMock<IBootstrapper>();
            bootstrapper.Expect(b => b.Logger).Return(logger);
            bootstrapper.Expect(b => b.Engine).Return(engine);
            bootstrapper.Expect(b => b.RouteRegister).Return(routeRegister);
            bootstrapper.Expect(b => b.SocketListener).Return(socketListener);
            bootstrapper.Expect(b => b.HostConfiguration).Return(hostConfiguration);

            var uri = new Uri("ws://localhost");

            var host = new StyxHost(uri, bootstrapper: bootstrapper);

            host.RegisterRoute("onOpen", ws => {});
            host.RegisterRoute("onError", ws => {}, ex => {});
            host.RegisterRoute("onClose", ws => {}, () => {});
            host.RegisterRoute("all", ws => {}, () => {}, ex => {});
        }
        public void UsageTest()
        {
            var resetEvent = new ManualResetEvent(false);

            var location = new Uri("ws://localhost");

            var host = new StyxHost(location);
            host.RegisterRoute("/test", () => new TestRoute());
            host.RegisterRoute("/test/{message}", h =>
            {
                h.Send(h.Route.Message as string);
                h.OnMessage = h.Send;
            });
            host.RegisterRoute("/test/ahoy", c => c.Send("ahoy"), () => Console.WriteLine("Closed"));
            host.RegisterRoute("/test/query", h =>
            {
                foreach (string key in h.Query.Keys)
                    h.Send(key);
            });
            host.Start();

            resetEvent.WaitOne(TimeSpan.FromMinutes(15));

            host.Dispose();
        }
        public void HostTest()
        {
            var manualResetEvent = new ManualResetEventSlim();

            var uri = new Uri("ws://localhost");

            var logger = new NLogger();

            var host = new StyxHost(uri, logger: logger);

            host.Start();

            manualResetEvent.Wait();
        }
        public void RegisterHandlerOverloadsShouldThrowAnArgumentNullExceptionOnNullArguments()
        {
            var bootstrapper = MockRepository.GenerateMock<IBootstrapper>();

            var uri = new Uri("ws://localhost");

            var host = new StyxHost(uri, bootstrapper:bootstrapper);

            Assert.Throws<ArgumentNullException>(() => host.RegisterRoute(null, ws => { }));
            Assert.Throws<ArgumentNullException>(() => host.RegisterRoute("route", ((Action<IWebSocketHandler>)null)));
            Assert.Throws<ArgumentNullException>(() => host.RegisterRoute("route", ws => { }, ((Action)null)));
            Assert.Throws<ArgumentNullException>(() => host.RegisterRoute("route", ws => { }, ((Action<Exception>)null)));
            Assert.Throws<ArgumentNullException>(() => host.RegisterRoute("route", null, () => { }, ex => { }));
            Assert.Throws<ArgumentNullException>(() => host.RegisterRoute("route", ws => { }, null, ex => { }));
            Assert.Throws<ArgumentNullException>(() => host.RegisterRoute("route", ws => { }, () => { }, null));
        }
Exemplo n.º 6
0
        public void DisposingTheHostShouldDisposeTheSocketListener()
        {
            var logger = MockRepository.GenerateMock<ILogger>();
            var engine = MockRepository.GenerateMock<IStyxEngine>();
            var routeRegister = MockRepository.GenerateMock<IRouteRegister>();
            var hostConfiguration = MockRepository.GenerateMock<IHostConfiguration>();

            var socketListener = MockRepository.GenerateStrictMock<ISocketListener>();
            socketListener.Expect(s => s.Dispose()).Repeat.Once();

            var bootstrapper = MockRepository.GenerateStrictMock<IBootstrapper>();
            bootstrapper.Expect(b => b.Logger).Return(logger);
            bootstrapper.Expect(b => b.Engine).Return(engine);
            bootstrapper.Expect(b => b.RouteRegister).Return(routeRegister);
            bootstrapper.Expect(b => b.SocketListener).Return(socketListener);
            bootstrapper.Expect(b => b.HostConfiguration).Return(hostConfiguration);

            var uri = new Uri("ws://localhost");

            var host = new StyxHost(uri, bootstrapper: bootstrapper);

            host.Dispose();
        }
Exemplo n.º 7
0
        public void RegisteringARouteShouldDelegateToTheRouteRegister()
        {
            var logger = MockRepository.GenerateMock<ILogger>();
            var engine = MockRepository.GenerateMock<IStyxEngine>();
            var hostConfiguration = MockRepository.GenerateMock<IHostConfiguration>();
            var socketListener = MockRepository.GenerateMock<ISocketListener>();

            var routeRegister = MockRepository.GenerateMock<IRouteRegister>();
            routeRegister.Expect(r => r.Register(Arg<string>.Is.Equal("test"), Arg<Func<IWebSocketHandler>>.Is.NotNull));

            var bootstrapper = MockRepository.GenerateStrictMock<IBootstrapper>();
            bootstrapper.Expect(b => b.Logger).Return(logger);
            bootstrapper.Expect(b => b.Engine).Return(engine);
            bootstrapper.Expect(b => b.RouteRegister).Return(routeRegister);
            bootstrapper.Expect(b => b.SocketListener).Return(socketListener);
            bootstrapper.Expect(b => b.HostConfiguration).Return(hostConfiguration);

            var uri = new Uri("ws://localhost");

            var host = new StyxHost(uri, bootstrapper: bootstrapper);

            host.RegisterRoute("test", h => {});
        }
Exemplo n.º 8
0
        public void PassingNullForTheLocationShouldThrowAnArgumentNullException()
        {
            var host = new StyxHost(null);

            host.Start();
        }
Exemplo n.º 9
0
        public void ShouldThrowAnArgumentNullExceptionWhenRegisteringANullRouteHandler()
        {
            var logger = MockRepository.GenerateMock<ILogger>();
            var engine = MockRepository.GenerateMock<IStyxEngine>();
            var hostConfiguration = MockRepository.GenerateMock<IHostConfiguration>();
            var socketListener = MockRepository.GenerateMock<ISocketListener>();
            var routeRegister = MockRepository.GenerateMock<IRouteRegister>();

            var bootstrapper = MockRepository.GenerateStrictMock<IBootstrapper>();
            bootstrapper.Expect(b => b.Logger).Return(logger);
            bootstrapper.Expect(b => b.Engine).Return(engine);
            bootstrapper.Expect(b => b.RouteRegister).Return(routeRegister);
            bootstrapper.Expect(b => b.SocketListener).Return(socketListener);
            bootstrapper.Expect(b => b.HostConfiguration).Return(hostConfiguration);

            var uri = new Uri("ws://localhost");

            var host = new StyxHost(uri, bootstrapper: bootstrapper);

            host.RegisterRoute("route", null);
        }
Exemplo n.º 10
0
        public void ShouldThrowAnApplicationExceptionIfSecureButMissingCertificate()
        {
            var logger = MockRepository.GenerateMock<ILogger>();
            var engine = MockRepository.GenerateMock<IStyxEngine>();
            var routeRegister = MockRepository.GenerateMock<IRouteRegister>();
            var socketListener = MockRepository.GenerateMock<ISocketListener>();

            var hostConfiguration = MockRepository.GenerateMock<IHostConfiguration>();
            hostConfiguration.Expect(h => h.Certificate).Return(null);
            hostConfiguration.Expect(h => h.Scheme).Return("wss");

            var bootstrapper = MockRepository.GenerateStrictMock<IBootstrapper>();
            bootstrapper.Expect(b => b.Logger).Return(logger);
            bootstrapper.Expect(b => b.Engine).Return(engine);
            bootstrapper.Expect(b => b.RouteRegister).Return(routeRegister);
            bootstrapper.Expect(b => b.SocketListener).Return(socketListener);
            bootstrapper.Expect(b => b.HostConfiguration).Return(hostConfiguration);

            var uri = new Uri("wss://localhost");

            var host = new StyxHost(uri, bootstrapper: bootstrapper);

            host.Start();
        }