Exemplo n.º 1
6
        public static TestableChat GetTestableChat(string connectionId, StateChangeTracker clientState, ChatUser user, IDictionary<string, Cookie> cookies)
        {
            // setup things needed for chat
            var repository = new InMemoryRepository();
            var resourceProcessor = new Mock<IResourceProcessor>();
            var chatService = new Mock<IChatService>();
            var connection = new Mock<IConnection>();
            var settings = new Mock<IApplicationSettings>();
            var mockPipeline = new Mock<IHubPipelineInvoker>();

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(settings, resourceProcessor, chatService, repository, connection);
            var mockedConnectionObject = chat.MockedConnection.Object;

            chat.Clients = new HubConnectionContext(mockPipeline.Object, mockedConnectionObject, "Chat", connectionId, clientState);

            var prinicipal = new Mock<IPrincipal>();

            var request = new Mock<IRequest>();
            request.Setup(m => m.Cookies).Returns(cookies);
            request.Setup(m => m.User).Returns(prinicipal.Object);

            // setup context
            chat.Context = new HubCallerContext(request.Object, connectionId);

            return chat;
        }
Exemplo n.º 2
1
        public static TestableChat GetTestableChat(string clientId, TrackingDictionary clientState, ChatUser user, NameValueCollection cookies)
        {
            // setup things needed for chat
            var repository = new InMemoryRepository();
            var resourceProcessor = new Mock<IResourceProcessor>();
            var chatService = new Mock<IChatService>();
            var connection = new Mock<IConnection>();

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(resourceProcessor, chatService, repository, connection);
            var mockedConnectionObject = chat.MockedConnection.Object;

            // setup client agent
            chat.Agent = new ClientAgent(mockedConnectionObject, "Chat");

            var request = new Mock<IRequest>();
            request.Setup(m => m.Cookies).Returns(cookies);

            // setup signal agent
            var prinicipal = new Mock<IPrincipal>();
            chat.Caller = new SignalAgent(mockedConnectionObject, clientId, "Chat", clientState);

            // setup context
            chat.Context = new HubContext(new HostContext(request.Object, null, prinicipal.Object), clientId);

            return chat;
        }
Exemplo n.º 3
0
            public void CanDeserializeClientState()
            {
                var    clientState = new TrackingDictionary();
                string clientId    = "1";
                var    user        = new ChatUser
                {
                    Id       = "1234",
                    Name     = "John",
                    Identity = "foo"
                };

                var cookies = new NameValueCollection();

                cookies["jabbr.state"] = JsonConvert.SerializeObject(new ClientState {
                    UserId = user.Id
                });


                TestableChat chat = GetTestableChat(clientId, clientState, user, cookies);

                bool result = chat.Join();

                Assert.Equal("1234", clientState["id"]);
                Assert.Equal("John", clientState["name"]);
                Assert.True(result);
            }
Exemplo n.º 4
0
        public static TestableChat GetTestableChat(string clientId, TrackingDictionary clientState, ChatUser user, NameValueCollection cookies)
        {
            // setup things needed for chat
            var repository        = new InMemoryRepository();
            var resourceProcessor = new Mock <IResourceProcessor>();
            var chatService       = new Mock <IChatService>();
            var connection        = new Mock <IConnection>();

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(resourceProcessor, chatService, repository, connection);
            var mockedConnectionObject = chat.MockedConnection.Object;

            // setup client agent
            chat.Agent = new ClientAgent(mockedConnectionObject, "Chat");

            var request = new Mock <IRequest>();

            request.Setup(m => m.Cookies).Returns(cookies);

            // setup signal agent
            var prinicipal = new Mock <IPrincipal>();

            chat.Caller = new SignalAgent(mockedConnectionObject, clientId, "Chat", clientState);

            // setup context
            chat.Context = new HubContext(new HostContext(request.Object, null, prinicipal.Object), clientId);

            return(chat);
        }
Exemplo n.º 5
0
        public static TestableChat GetTestableChat(string connectionId, TrackingDictionary clientState, ChatUser user, NameValueCollection cookies)
        {
            // setup things needed for chat
            var repository        = new InMemoryRepository();
            var resourceProcessor = new Mock <IResourceProcessor>();
            var chatService       = new Mock <IChatService>();
            var connection        = new Mock <IConnection>();
            var settings          = new Mock <IApplicationSettings>();
            var mockPipeline      = new Mock <IHubPipelineInvoker>();

            settings.Setup(m => m.AuthApiKey).Returns("key");

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(settings, resourceProcessor, chatService, repository, connection);
            var mockedConnectionObject = chat.MockedConnection.Object;

            chat.Clients = new HubConnectionContext(mockPipeline.Object, mockedConnectionObject, "Chat", connectionId, clientState);

            var prinicipal = new Mock <IPrincipal>();

            var request = new Mock <IRequest>();

            request.Setup(m => m.Cookies).Returns(new Cookies(cookies));
            request.Setup(m => m.User).Returns(prinicipal.Object);

            // setup context
            chat.Context = new HubCallerContext(request.Object, connectionId);

            return(chat);
        }
Exemplo n.º 6
0
            public void CanJoinChatIfIdentitySet()
            {
                var    clientState = new TrackingDictionary();
                string clientId    = "1";
                var    user        = new ChatUser
                {
                    Id       = "1234",
                    Name     = "John",
                    Identity = "foo"
                };

                TestableChat chat = GetTestableChat(clientId, clientState, user);

                chat.Caller.id = "1234";

                bool result = chat.Join();

                Assert.Equal("1234", clientState["id"]);
                Assert.Equal("John", clientState["name"]);
                Assert.True(result);
                // TODO: find out why these don't work
                //Assert.Equal(1, user.ConnectedClients.Count);
                //Assert.Equal("1", user.ConnectedClients.First().Id);

                chat.MockedConnection.Verify(m => m.Broadcast("Chat." + clientId, It.IsAny <object>()), Times.Once());
            }
Exemplo n.º 7
0
            public void CanDeserializeClientState()
            {
                var    clientState = new TrackingDictionary();
                string clientId    = "1";
                var    user        = new ChatUser
                {
                    Id   = "1234",
                    Name = "John"
                };

                var cookies = new NameValueCollection();

                cookies["jabbr.state"] = JsonConvert.SerializeObject(new ClientState {
                    UserId = user.Id
                });


                TestableChat chat = GetTestableChat(clientId, clientState, user, cookies);

                bool result = chat.Join();

                Assert.Equal("1234", clientState["id"]);
                Assert.Equal("John", clientState["name"]);
                Assert.True(result);

                chat.MockedConnection.Verify(m => m.Broadcast("Chat." + clientId, It.IsAny <object>()), Times.Once());
                chat.MockedChatService.Verify(c => c.UpdateActivity(user, clientId), Times.Once());
            }
Exemplo n.º 8
0
            public void CanDeserializeClientState()
            {
                var    clientState = new StateChangeTracker();
                string clientId    = "1";
                var    user        = new ChatUser
                {
                    Id       = "1234",
                    Name     = "John",
                    Identity = "foo"
                };

                var cookies = new Dictionary <string, Cookie>();
                var cookie  = new Cookie("jabbr.state", JsonConvert.SerializeObject(new ClientState {
                    UserId = user.Id
                }));

                cookies[cookie.Name] = cookie;


                TestableChat chat = GetTestableChat(clientId, clientState, user, cookies);

                bool result = chat.Join();

                Assert.Equal("1234", clientState["id"]);
                Assert.Equal("John", clientState["name"]);
                Assert.True(result);
            }
Exemplo n.º 9
0
        public static TestableChat GetTestableChat(string connectionId, TrackingDictionary clientState, ChatUser user, NameValueCollection cookies)
        {
            // setup things needed for chat
            var repository = new InMemoryRepository();
            var resourceProcessor = new Mock<IResourceProcessor>();
            var chatService = new Mock<IChatService>();
            var connection = new Mock<IConnection>();
            var settings = new Mock<IApplicationSettings>();

            settings.Setup(m => m.AuthApiKey).Returns("key");

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(settings, resourceProcessor, chatService, repository, connection);
            var mockedConnectionObject = chat.MockedConnection.Object;

            // setup client agent
            chat.Clients = new ClientProxy(mockedConnectionObject, "Chat");

            // setup signal agent
            var prinicipal = new Mock<IPrincipal>();

            var request = new Mock<IRequest>();
            request.Setup(m => m.Cookies).Returns(new Cookies(cookies));
            request.Setup(m => m.User).Returns(prinicipal.Object);

            chat.Caller = new StatefulSignalProxy(mockedConnectionObject, connectionId, "Chat", clientState);

            // setup context
            chat.Context = new HubCallerContext(request.Object, connectionId);

            return chat;
        }
Exemplo n.º 10
0
            public void CanJoinChat()
            {
                var    clientState = new TrackingDictionary();
                string clientId    = "1";
                var    user        = new ChatUser
                {
                    Id   = "1234",
                    Name = "John"
                };
                var cookies = new HttpCookieCollection
                {
                    new HttpCookie("userid", "1234")
                };

                TestableChat chat = GetTestableChat(clientId, clientState, user, cookies);

                bool result = chat.Join();

                Assert.Equal("1234", clientState["id"]);
                Assert.Equal("John", clientState["name"]);
                Assert.True(result);
                // TODO: find out why these don't work
                //Assert.Equal(1, user.ConnectedClients.Count);
                //Assert.Equal("1", user.ConnectedClients.First().Id);

                chat.MockedConnection.Verify(m => m.Broadcast("Chat." + clientId, It.IsAny <object>()), Times.Once());
                chat.MockedChatService.Verify(c => c.AddClient(user, clientId), Times.Once());
                chat.MockedChatService.Verify(c => c.UpdateActivity(user), Times.Once());
            }
Exemplo n.º 11
0
        public static TestableChat GetTestableChat(string connectionId, StateChangeTracker clientState, ChatUser user, IDictionary <string, Cookie> cookies)
        {
            // setup things needed for chat
            var repository        = new InMemoryRepository();
            var resourceProcessor = new Mock <ContentProviderProcessor>();
            var chatService       = new Mock <IChatService>();
            var connection        = new Mock <IConnection>();
            var settings          = new ApplicationSettings();
            var mockPipeline      = new Mock <IHubPipelineInvoker>();

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(resourceProcessor, chatService, repository, connection, settings);
            var mockedConnectionObject = chat.MockedConnection.Object;

            chat.Clients = new HubConnectionContext(mockPipeline.Object, mockedConnectionObject, "Chat", connectionId, clientState);

            var principal = new Mock <IPrincipal>();

            var request = new Mock <IRequest>();

            request.Setup(m => m.Cookies).Returns(cookies);
            request.Setup(m => m.User).Returns(principal.Object);

            // setup context
            chat.Context = new HubCallerContext(request.Object, connectionId);

            return(chat);
        }
Exemplo n.º 12
0
            public void MissingUsernameReturnsFalse()
            {
                var    clientState = new TrackingDictionary();
                string clientId    = "1";
                var    user        = new ChatUser();

                TestableChat chat = GetTestableChat(clientId, clientState, user);

                bool result = chat.Join();

                Assert.False(result);
            }
Exemplo n.º 13
0
            public void CannotJoinChat()
            {
                var    clientState = new TrackingDictionary();
                string clientId    = "1";
                var    user        = new ChatUser
                {
                    Id   = "1234",
                    Name = "John"
                };

                TestableChat chat = GetTestableChat(clientId, clientState, user);

                chat.Clients.Caller.id = "1234";

                bool result = chat.Join();

                Assert.False(result);
            }
Exemplo n.º 14
0
            public void CanJoinChatIfIdentitySet()
            {
                var    clientState = new StateChangeTracker();
                string clientId    = "1";
                var    user        = new ChatUser
                {
                    Id       = "1234",
                    Name     = "John",
                    Identity = "foo"
                };

                TestableChat chat = GetTestableChat(clientId, clientState, user);

                chat.Clients.Caller.id = "1234";

                bool result = chat.Join();

                Assert.Equal("1234", clientState["id"]);
                Assert.Equal("John", clientState["name"]);
                Assert.True(result);
                // TODO: find out why these don't work
                //Assert.Equal(1, user.ConnectedClients.Count);
                //Assert.Equal("1", user.ConnectedClients.First().Id);
            }