Пример #1
0
        public ChatHub(string username, string password)

        {
            var identity = new GenericIdentity("*****@*****.**");

            identity.AddClaim(new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.NameIdentifier, "2", System.Security.Claims.ClaimValueTypes.Integer));
            identity.AddClaim(new System.Security.Claims.Claim("NickName", "ibrahim", System.Security.Claims.ClaimValueTypes.Integer));
            //Thread.CurrentPrincipal = new GenericPrincipal(identity, null);
            //ApplicationSignInManager c = new ApplicationSignInManager("sa", HttpContext.GetOwinContext().Authentication)
            //SignInManager.PasswordSignIn(username, password, true, true);
            const string connectionId = "1234";
            const string hubName      = "ChatHub";
            var          resolver     = new DefaultDependencyResolver();

            _config = resolver.Resolve <IConfigurationManager>();

            var mockConnection = new Mock <IConnection>();
            var mockUser       = new Mock <IPrincipal>();
            //var mockCookies = new Mock<IRequestCookieCollection>();
            var mockHubPipelineInvoker = new Mock <IHubPipelineInvoker>();
            //IHubPipelineInvoker _pipelineInvoker = resolver.Resolve<IHubPipelineInvoker>();

            var mockRequest = new Mock <IRequest>();

            mockRequest.Setup(r => r.User).Returns(new GenericPrincipal(identity, null));
            //mockRequest.Setup(r => r.Cookies).Returns(mockCookies.Object);

            StateChangeTracker tracker = new StateChangeTracker();

            //Clients = new HubConnectionContext(_pipelineInvoker, mockConnection.Object, hubName, connectionId, tracker);
            Clients = new HubConnectionContext(mockHubPipelineInvoker.Object, mockConnection.Object, hubName, connectionId, tracker);
            Context = new HubCallerContext(mockRequest.Object, connectionId);
            var x = Clients.Caller;
        }
Пример #2
0
 public HubInvokerContext(IHub hub, StateChangeTracker tracker, MethodDescriptor methodDescriptor, object[] args)
 {
     Hub = hub;
     MethodDescriptor = methodDescriptor;
     Args             = args;
     StateTracker     = tracker;
 }
Пример #3
0
        public static TestableChat GetTestableChat(string connectionId, StateChangeTracker 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);
        }
Пример #4
0
            public void CanDeserializeClientState()
            {
                var    clientState = new StateChangeTracker();
                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);
            }
Пример #5
0
        private TestableLobby GetHub(string connectionId,
                                     StateChangeTracker clientState                  = null,
                                     IDictionary <string, Cookie> cookies            = null,
                                     Mock <IGroupManager> groupManager               = null,
                                     Mock <IGameHandler> gameHandler                 = null,
                                     Mock <IRegistrationHandler> registrationHandler = null,
                                     Mock <IUserHandler> userHandler                 = null,
                                     Mock <IMappingHandler> mappingHandler           = null,
                                     Mock <IScenarioHandler> scenarioHandler         = null)
        {
            clientState = clientState ?? new StateChangeTracker();
            cookies     = cookies ?? new Dictionary <string, Cookie>();

            var lobby = new TestableLobby(gameHandler ?? new Mock <IGameHandler>(),
                                          registrationHandler ?? new Mock <IRegistrationHandler>(),
                                          userHandler ?? new Mock <IUserHandler>(),
                                          mappingHandler ?? new Mock <IMappingHandler>(),
                                          scenarioHandler ?? new Mock <IScenarioHandler>());

            lobby.Clients = new HubConnectionContext(new Mock <IHubPipelineInvoker>().Object,
                                                     new Mock <IConnection>().Object,
                                                     "Lobby",
                                                     connectionId,
                                                     clientState);

            var request = new Mock <IRequest>();

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

            lobby.Context = new HubCallerContext(request.Object, connectionId);
            lobby.Groups  = (groupManager ?? new Mock <IGroupManager>()).Object;

            return(lobby);
        }
Пример #6
0
 public HubInvokerContext(IHub hub, StateChangeTracker tracker, MethodDescriptor methodDescriptor, object[] args)
 {
     Hub = hub;
     MethodDescriptor = methodDescriptor;
     Args = args;
     StateTracker = tracker;
 }
Пример #7
0
            public void MissingUsernameReturnsFalse()
            {
                var    clientState = new StateChangeTracker();
                string clientId    = "1";
                var    user        = new ChatUser();

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

                bool result = chat.Join();

                Assert.False(result);
            }
Пример #8
0
            public void CannotJoinChat()
            {
                var    clientState = new StateChangeTracker();
                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);
            }
Пример #9
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);
            }
Пример #10
0
 public static TestableChat GetTestableChat(string clientId, StateChangeTracker clientState, ChatUser user)
 {
     return(GetTestableChat(clientId, clientState, user, new NameValueCollection()));
 }
Пример #11
0
 public static TestableChat GetTestableChat(string clientId, StateChangeTracker clientState, ChatUser user)
 {
     return(GetTestableChat(clientId, clientState, user, new Dictionary <string, Cookie>()));
 }