public void Test_Success() { //Arrange var fromUser = new User("from", "fromEmail"); var toUser = new User("to", "toEmail"); SaveEntities(fromUser, toUser); CommitTransactionAndOpenNew(); var expectedConnection = new Connection(fromUser, toUser); var expectedResponse = new BaseResponse(); var request = new ConnectRequest() {FromUserId = fromUser.Id, ToUserId = toUser.Id}; //Act var sut = new ConnectRequestHandler(() => Session); BaseResponse actualResponse = sut.HandleRequest(request); //Assert actualResponse.ShouldEqual(expectedResponse); //Check that the connection was saved in the DB CommitTransactionAndOpenNew(); Connection actualConnection = Session .QueryOver<Connection>() .SingleOrDefault() ; actualConnection.ShouldEqual(expectedConnection); }
public void Test_AlreadyConnected() { //Arrange var fromUser = DefaultTestData.ServiceStackUser1; var toUser = DefaultTestData.ServiceStackUser2; var existingConnection = new Connection(fromUser, toUser); SaveEntities(fromUser, toUser, existingConnection); CommitTransactionAndOpenNew(); var expectedResponse = new BaseResponse(ConnectRequestHandler.AlreadyConnected); var request = new ConnectRequest() { FromUserId = fromUser.Id, ToUserId = toUser.Id }; //Act var sut = new ConnectRequestHandler(() => Session); BaseResponse actualResponse = sut.HandleRequest(request); //Assert actualResponse.ShouldEqual(expectedResponse); //Check that the connection wasn't saved in the DB int numberOfConnections = Session .QueryOver <Connection>() .RowCount() ; Assert.That(numberOfConnections, Is.EqualTo(1)); }
public void Test_AlreadyConnected() { //Arrange var fromUser = new User("from", "fromEmail"); var toUser = new User("to", "toEmail"); var existingConnection = new Connection(fromUser, toUser); SaveEntities(fromUser, toUser, existingConnection); CommitTransactionAndOpenNew(); var expectedResponse = new BaseResponse(ConnectRequestHandler.AlreadyConnected); var request = new ConnectRequest() { FromUserId = fromUser.Id, ToUserId = toUser.Id }; //Act var sut = new ConnectRequestHandler(() => Session); BaseResponse actualResponse = sut.HandleRequest(request); //Assert actualResponse.ShouldEqual(expectedResponse); //Check that the connection wasn't saved in the DB int numberOfConnections = Session .QueryOver<Connection>() .RowCount() ; Assert.That(numberOfConnections, Is.EqualTo(1)); }
internal void RemoveConnectRequestHandler(Reference rf, ConnectRequestHandler handler) { if (rf.IsConnectionCached) { lock (_handlers) { if (_handlers.TryGetValue(rf, out ConnectRequestHandler? h) && h == handler) { _handlers.Remove(rf); } } } }
public void Test_SuccessWithExistingOtherConnection() { //Arrange var fromUser = DefaultTestData.ServiceStackUser1; var toUser = DefaultTestData.ServiceStackUser2; var otherUser = DefaultTestData.ServiceStackUser3; var existingConnection = new Connection(otherUser, toUser); SaveEntities(fromUser, toUser, otherUser, existingConnection); CommitTransactionAndOpenNew(); var expectedConnection = new Connection(fromUser, toUser); var request = new ConnectRequest() { FromUserId = fromUser.Id, ToUserId = toUser.Id }; var expectedResponse = new BaseResponse(); //Act var sut = new ConnectRequestHandler(() => Session); BaseResponse actualResponse = sut.HandleRequest(request); //Assert actualResponse.ShouldEqual(expectedResponse); //Check that the connection was saved in the DB CommitTransactionAndOpenNew(); Connection connectionAlias = null; User user1Alias = null; User user2Alias = null; Connection actualConnection = Session .QueryOver <Connection>(() => connectionAlias) .JoinAlias(() => connectionAlias.User1, () => user1Alias) .JoinAlias(() => connectionAlias.User2, () => user2Alias) .Where(() => (user1Alias.Id == request.FromUserId && user2Alias.Id == request.ToUserId) || (user1Alias.Id == request.ToUserId && user2Alias.Id == request.FromUserId)) .SingleOrDefault() ; actualConnection.ShouldEqual(expectedConnection); }
// All the reference here are routable references. internal IRequestHandler GetRequestHandler(Reference rf) { if (rf.IsCollocationOptimized) { ObjectAdapter?adapter = FindObjectAdapter(rf); if (adapter != null) { return(rf.SetRequestHandler(new CollocatedRequestHandler(rf, adapter))); } } bool connect = false; ConnectRequestHandler?handler; if (rf.IsConnectionCached) { lock (_handlers) { if (!_handlers.TryGetValue(rf, out handler)) { handler = new ConnectRequestHandler(rf); _handlers.Add(rf, handler); connect = true; } } } else { handler = new ConnectRequestHandler(rf); connect = true; } if (connect) { rf.GetConnection(handler); } return(rf.SetRequestHandler(handler.Connect(rf))); }
internal IRequestHandler GetRequestHandler(RoutableReference rf, IObjectPrx proxy) { if (rf.GetCollocationOptimized()) { ObjectAdapter?adapter = FindObjectAdapter(proxy); if (adapter != null) { return(proxy.IceSetRequestHandler(new CollocatedRequestHandler(rf, adapter))); } } bool connect = false; ConnectRequestHandler handler; if (rf.GetCacheConnection()) { lock (_handlers) { if (!_handlers.TryGetValue(rf, out handler)) { handler = new ConnectRequestHandler(rf, proxy); _handlers.Add(rf, handler); connect = true; } } } else { handler = new ConnectRequestHandler(rf, proxy); connect = true; } if (connect) { rf.GetConnection(handler); } return(proxy.IceSetRequestHandler(handler.Connect(proxy))); }
public void Test_Success() { //Arrange var fromUser = DefaultTestData.ServiceStackUser1;; var toUser = DefaultTestData.ServiceStackUser2; SaveEntities(fromUser, toUser); CommitTransactionAndOpenNew(); var expectedConnection = new Connection(fromUser, toUser); var expectedResponse = new BaseResponse(); var request = new ConnectRequest() { FromUserId = fromUser.Id, ToUserId = toUser.Id }; //Act var sut = new ConnectRequestHandler(() => Session); BaseResponse actualResponse = sut.HandleRequest(request); //Assert actualResponse.ShouldEqual(expectedResponse); //Check that the connection was saved in the DB CommitTransactionAndOpenNew(); Connection actualConnection = Session .QueryOver <Connection>() .SingleOrDefault() ; actualConnection.ShouldEqual(expectedConnection); }
private async void HandleRequest(NodeRequest request, NodeConnection current) { try { ICommunicationHandler requestHandler = null; switch (request.RequestType) { case NodeRequestType.CheckToken: { requestHandler = new CheckTokenRequestHandler(request, current, appServiceProvider.TokensService, appServiceProvider.LoadUsersService); } break; case NodeRequestType.Connect: { requestHandler = new ConnectRequestHandler( request, current, appServiceProvider.ConnectionsService, appServiceProvider.NodesService, appServiceProvider.NodeNoticeService); } break; case NodeRequestType.GetInfoBlocks: { requestHandler = new GetInfoBlocksRequestHandler(request, current); } break; case NodeRequestType.GetMessages: { requestHandler = new GetMessagesRequestHandler(request, current, appServiceProvider.LoadMessagesService, appServiceProvider.ConversationsService); } break; case NodeRequestType.Proxy: { requestHandler = new ProxyUsersCommunicationsNodeRequestHandler(request, current, appServiceProvider); } break; case NodeRequestType.GetUsers: case NodeRequestType.GetChats: case NodeRequestType.GetChannels: case NodeRequestType.GetFiles: { requestHandler = new GetObjectsInfoNodeRequestHandler(request, current, appServiceProvider.LoadChatsService, appServiceProvider.LoadUsersService, appServiceProvider.LoadChannelsService, appServiceProvider.PrivacyService, appServiceProvider.FilesService); } break; case NodeRequestType.Search: { requestHandler = new SearchNodeRequestHandler(request, current, appServiceProvider.LoadChatsService, appServiceProvider.LoadUsersService, appServiceProvider.LoadChannelsService, appServiceProvider.PrivacyService); } break; case NodeRequestType.GetFullChatInformation: { requestHandler = new GetFullChatInformationNodeRequestHandler(request, current, appServiceProvider.LoadChatsService); } break; case NodeRequestType.GetChatUsersInformation: { requestHandler = new GetChatUsersInformationNodeRequestHandler(request, current, appServiceProvider.LoadChatsService); } break; case NodeRequestType.GetPublicKey: { requestHandler = new GetPublicKeyNodeRequestHandler(request, current, appServiceProvider.KeysService); } break; case NodeRequestType.GetPolls: { requestHandler = new GetPollInformationNodeRequestHandler(request, current, appServiceProvider.PollsService); } break; case NodeRequestType.BatchPhonesSearch: { requestHandler = new BatchPhonesSearchNodeRequestHandler(request, current, appServiceProvider.LoadUsersService, appServiceProvider.PrivacyService); } break; case NodeRequestType.GetConversationsUsers: { requestHandler = new GetConversationsUsersNodeRequestHandler(request, current, appServiceProvider.LoadChannelsService, appServiceProvider.LoadChatsService); } break; } if (requestHandler.IsObjectValid()) { await requestHandler.HandleAsync().ConfigureAwait(false); } else { ResultNodeResponse response = new ResultNodeResponse(request.RequestId, ErrorCode.InvalidRequestData); SendResponse(response, current); } } catch (Exception ex) { Logger.WriteLog(ex); } }
public void Test_SuccessWithExistingOtherConnection() { //Arrange var fromUser = new User("from", "fromEmail"); var toUser = new User("to", "toEmail"); var otherUser = new User("other", "otherEmail"); var existingConnection = new Connection(otherUser, toUser); SaveEntities(fromUser, toUser, otherUser, existingConnection); CommitTransactionAndOpenNew(); var expectedConnection = new Connection(fromUser, toUser); var request = new ConnectRequest() { FromUserId = fromUser.Id, ToUserId = toUser.Id }; var expectedResponse = new BaseResponse(); //Act var sut = new ConnectRequestHandler(() => Session); BaseResponse actualResponse = sut.HandleRequest(request); //Assert actualResponse.ShouldEqual(expectedResponse); //Check that the connection was saved in the DB CommitTransactionAndOpenNew(); Connection connectionAlias = null; User user1Alias = null; User user2Alias = null; Connection actualConnection = Session .QueryOver<Connection>(() => connectionAlias) .JoinAlias(() => connectionAlias.User1, () => user1Alias) .JoinAlias(() => connectionAlias.User2, () => user2Alias) .Where(() => (user1Alias.Id == request.FromUserId && user2Alias.Id == request.ToUserId) || (user1Alias.Id == request.ToUserId && user2Alias.Id == request.FromUserId)) .SingleOrDefault() ; actualConnection.ShouldEqual(expectedConnection); }