/// <summary>
		/// Initializes a new instance of the <see cref="T:Chat.Common.Presenter.BasePresenter"/> class.
		/// </summary>
		public BasePresenter()
		{
			_webApiAccess = new WebApiAccess();

			_signalREvents = new Dictionary<string, Action<string>>()
			{
				{"clients", (data) => 
					{
						var list = JsonConvert.DeserializeObject<IEnumerable<string>>(data);

						if (ConnectedClientsUpdated != null)
						{
							ConnectedClientsUpdated(this, new ConnectedClientsUpdatedEventArgs(list.Select(x => new Client
							{
								Username = x,
							})));
						}
					}
				},
				{"chat", (data) => 
					{
						if (ChatReceived != null)
						{
							ChatReceived(this, new ChatEventArgs(data));
						}
					}
				},
			};
		}
        public void Setup()
        {
            PacketFactory.Initialize <NoS0575Packet>();
            var builder = new ConfigurationBuilder();
            var databaseConfiguration = new SqlConnectionConfiguration();

            builder.SetBasePath(Directory.GetCurrentDirectory() + ConfigurationPath);
            builder.AddJsonFile("database.json", false);
            builder.Build().Bind(databaseConfiguration);
            databaseConfiguration.Database = "postgresunittest";
            var sqlconnect = databaseConfiguration;

            DataAccessHelper.Instance.EnsureDeleted(sqlconnect);
            var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo(ConfigurationPath + "/log4net.config"));
            Logger.InitializeLogger(LogManager.GetLogger(typeof(LoginPacketController)));
            DataAccessHelper.Instance.Initialize(sqlconnect);
            DAOFactory.RegisterMapping(typeof(GameObject.Character).Assembly);
            var map = new MapDTO {
                MapId = 1
            };

            DAOFactory.MapDAO.InsertOrUpdate(ref map);
            _acc = new AccountDTO {
                Name = Name, Password = EncryptionHelper.Sha512("test")
            };
            DAOFactory.AccountDAO.InsertOrUpdate(ref _acc);
            _session.InitializeAccount(_acc);
            _handler = new LoginPacketController(new LoginConfiguration());
            _handler.RegisterSession(_session);
            WebApiAccess.RegisterBaseAdress();
            WebApiAccess.Instance.MockValues = new Dictionary <string, object>();
        }
 public void GetRatings()
 {
     foreach (var bar in this)
     {
         bar.Ratings = WebApiAccess.GetBarRatings(bar);
     }
 }
        public void Setup()
        {
            PacketFactory.Initialize <NoS0575Packet>();
            var builder        = new ConfigurationBuilder();
            var contextBuilder = new DbContextOptionsBuilder <NosCoreContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString());

            DataAccessHelper.Instance.InitializeForTest(contextBuilder.Options);
            var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo(ConfigurationPath + "/log4net.config"));
            Logger.InitializeLogger(LogManager.GetLogger(typeof(LoginPacketController)));
            var map = new MapDTO {
                MapId = 1
            };

            DAOFactory.MapDAO.InsertOrUpdate(ref map);
            _acc = new AccountDTO {
                Name = Name, Password = EncryptionHelper.Sha512("test")
            };
            DAOFactory.AccountDAO.InsertOrUpdate(ref _acc);
            _session.InitializeAccount(_acc);
            _handler = new LoginPacketController(new LoginConfiguration());
            _handler.RegisterSession(_session);
            WebApiAccess.RegisterBaseAdress();
            WebApiAccess.Instance.MockValues = new Dictionary <string, object>();
        }
Beispiel #5
0
        private void ConnectMaster()
        {
            async Task RunMasterClient(string targetHost, int port, string password, MasterClient clientType,
                                       int connectedAccountLimit = 0, int clientPort = 0, byte serverGroup = 0, string serverHost = "")
            {
                var group = new MultithreadEventLoopGroup();

                var bootstrap = new Bootstrap();

                bootstrap
                .Group(group)
                .Channel <TcpSocketChannel>()
                .Option(ChannelOption.TcpNodelay, true)
                .Handler(new ActionChannelInitializer <ISocketChannel>(channel =>
                {
                    var pipeline = channel.Pipeline;

                    pipeline.AddLast(new LengthFieldPrepender(2));
                    pipeline.AddLast(new LengthFieldBasedFrameDecoder(ushort.MaxValue, 0, 2, 0, 2));

                    pipeline.AddLast(new StringEncoder(), new StringDecoder());
                    pipeline.AddLast(new MasterClientSession(password));
                }));
                var connection = await bootstrap.ConnectAsync(new IPEndPoint(IPAddress.Parse(targetHost), port))
                                 .ConfigureAwait(false);

                await connection.WriteAndFlushAsync(new Channel
                {
                    Password               = password,
                    ClientName             = clientType.Name,
                    ClientType             = (byte)clientType.Type,
                    ConnectedAccountsLimit = connectedAccountLimit,
                    Port        = clientPort,
                    ServerGroup = serverGroup,
                    Host        = serverHost
                }).ConfigureAwait(false);
            }

            while (true)
            {
                try
                {
                    WebApiAccess.RegisterBaseAdress(_loginConfiguration.MasterCommunication.WebApi.ToString(),
                                                    _loginConfiguration.MasterCommunication.Password);
                    RunMasterClient(_loginConfiguration.MasterCommunication.Host,
                                    Convert.ToInt32(_loginConfiguration.MasterCommunication.Port),
                                    _loginConfiguration.MasterCommunication.Password,
                                    new MasterClient {
                        Name = "LoginServer", Type = ServerType.LoginServer
                    }).Wait();
                    break;
                }
                catch
                {
                    Logger.Log.Error(LogLanguage.Instance.GetMessageFromKey(LanguageKey.MASTER_SERVER_RETRY));
                    Thread.Sleep(5000);
                }
            }
        }
Beispiel #6
0
        private void ConnectMaster()
        {
            async Task RunMasterClient(string targetHost, int port, string password, MasterClient clientType,
                                       ServerConfiguration webApi, int connectedAccountLimit = 0, int clientPort = 0, byte serverGroup = 0,
                                       string serverHost = "")
            {
                var group = new MultithreadEventLoopGroup();

                var bootstrap = new Bootstrap();

                bootstrap
                .Group(group)
                .Channel <TcpSocketChannel>()
                .Option(ChannelOption.TcpNodelay, true)
                .Handler(new ActionChannelInitializer <ISocketChannel>(channel =>
                {
                    var pipeline = channel.Pipeline;

                    pipeline.AddLast(new LengthFieldPrepender(2));
                    pipeline.AddLast(new LengthFieldBasedFrameDecoder(ushort.MaxValue, 0, 2, 0, 2));

                    pipeline.AddLast(new StringEncoder(), new StringDecoder());
                    pipeline.AddLast(new MasterClientSession(password, ConnectMaster));
                }));
                var connection = await bootstrap.ConnectAsync(new IPEndPoint(IPAddress.Parse(targetHost), port));

                await connection.WriteAndFlushAsync(new Channel
                {
                    Password              = password,
                    ClientName            = clientType.Name,
                    ClientType            = (byte)clientType.Type,
                    connectedAccountLimit = connectedAccountLimit,
                    Port        = clientPort,
                    ServerGroup = serverGroup,
                    Host        = serverHost,
                    WebApi      = webApi
                });
            }

            WebApiAccess.RegisterBaseAdress(_worldConfiguration.MasterCommunication.WebApi.ToString(), _worldConfiguration.MasterCommunication.Password);
            Policy
            .Handle <Exception>()
            .WaitAndRetryForeverAsync(retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (_, __, timeSpan) =>
                                      Logger.Log.Error(string.Format(LogLanguage.Instance.GetMessageFromKey(LanguageKey.MASTER_SERVER_RETRY), timeSpan.TotalSeconds))
                                      ).ExecuteAsync(() => RunMasterClient(_worldConfiguration.MasterCommunication.Host,
                                                                           Convert.ToInt32(_worldConfiguration.MasterCommunication.Port),
                                                                           _worldConfiguration.MasterCommunication.Password,
                                                                           new MasterClient
            {
                Name   = _worldConfiguration.ServerName,
                Type   = ServerType.WorldServer,
                WebApi = _worldConfiguration.WebApi
            }, _worldConfiguration.WebApi, _worldConfiguration.ConnectedAccountLimit,
                                                                           _worldConfiguration.Port, _worldConfiguration.ServerGroup, _worldConfiguration.Host)
                                                     ).Wait();
        }
Beispiel #7
0
 private void ConnectMaster()
 {
     WebApiAccess.RegisterBaseAdress(new Channel
     {
         MasterCommunication = _friendServerConfiguration.MasterCommunication,
         ClientType          = ServerType.FriendServer,
         ServerGroup         = 0,
         WebApi = _friendServerConfiguration.WebApi
     });
 }
Beispiel #8
0
 private void ConnectMaster()
 {
     WebApiAccess.RegisterBaseAdress(new Channel
     {
         MasterCommunication = _loginConfiguration.MasterCommunication,
         ClientType          = ServerType.LoginServer,
         ClientName          = $"{ServerType.LoginServer}({_loginConfiguration.UserLanguage})",
         Port = _loginConfiguration.Port,
         Host = _loginConfiguration.Host
     });
 }
 private void ConnectMaster()
 {
     WebApiAccess.RegisterBaseAdress(new Channel
     {
         MasterCommunication   = _worldConfiguration.MasterCommunication,
         ClientName            = _worldConfiguration.ServerName,
         ClientType            = ServerType.WorldServer,
         ConnectedAccountLimit = _worldConfiguration.ConnectedAccountLimit,
         Port        = _worldConfiguration.Port,
         ServerGroup = _worldConfiguration.ServerGroup,
         Host        = _worldConfiguration.Host,
         WebApi      = _worldConfiguration.WebApi
     });
 }
Beispiel #10
0
 private static void connectMaster()
 {
     while (true)
     {
         try
         {
             WebApiAccess.RegisterBaseAdress(_loginConfiguration.MasterCommunication.WebApi.ToString());
             RunMasterClient(_loginConfiguration.MasterCommunication.Host, Convert.ToInt32(_loginConfiguration.MasterCommunication.Port), _loginConfiguration.MasterCommunication.Password, new MasterClient()
             {
                 Name = "LoginServer", Type = ServerType.LoginServer
             }).Wait();
             break;
         }
         catch
         {
             Logger.Log.Error(LogLanguage.Instance.GetMessageFromKey("MASTER_SERVER_RETRY"));
             Thread.Sleep(5000);
         }
     }
 }
Beispiel #11
0
        public void Setup()
        {
            PacketFactory.Initialize <NoS0575Packet>();
            var contextBuilder =
                new DbContextOptionsBuilder <NosCoreContext>().UseInMemoryDatabase(
                    databaseName: Guid.NewGuid().ToString());

            DataAccessHelper.Instance.InitializeForTest(contextBuilder.Options);
            var map = new MapDto {
                MapId = 1
            };

            DaoFactory.MapDao.InsertOrUpdate(ref map);
            _acc = new AccountDto {
                Name = Name, Password = EncryptionHelper.Sha512("test")
            };
            DaoFactory.AccountDao.InsertOrUpdate(ref _acc);
            _session.InitializeAccount(_acc);
            _handler = new LoginPacketController(new LoginConfiguration());
            _handler.RegisterSession(_session);
            WebApiAccess.RegisterBaseAdress();
            WebApiAccess.Instance.MockValues = new Dictionary <string, object>();
        }
        public void Setup()
        {
            PacketFactory.Initialize <NoS0575Packet>();
            Broadcaster.Instance.Reset();
            var contextBuilder = new DbContextOptionsBuilder <NosCoreContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString());

            DataAccessHelper.Instance.InitializeForTest(contextBuilder.Options);
            var map = new MapDto {
                MapId = 1
            };

            DaoFactory.MapDao.InsertOrUpdate(ref map);
            var account = new AccountDto {
                Name = "AccountTest", Password = EncryptionHelper.Sha512("test")
            };
            var targetAccount = new AccountDto {
                Name = "test2", Password = EncryptionHelper.Sha512("test")
            };

            DaoFactory.AccountDao.InsertOrUpdate(ref account);
            DaoFactory.AccountDao.InsertOrUpdate(ref targetAccount);
            WebApiAccess.RegisterBaseAdress();
            WebApiAccess.Instance.MockValues =
                new Dictionary <string, object>
            {
                { "api/channels", new List <WorldServerInfo> {
                      new WorldServerInfo()
                  } },
                { "api/connectedAccount", new List <ConnectedAccount>() }
            };

            _chara = new CharacterDto
            {
                CharacterId = 0,
                Name        = "TestExistingCharacter",
                Slot        = 1,
                AccountId   = account.AccountId,
                MapId       = 1,
                State       = CharacterState.Active
            };

            _targetChar = new CharacterDto
            {
                CharacterId = 1,
                Name        = "TestChar2",
                Slot        = 1,
                AccountId   = targetAccount.AccountId,
                MapId       = 1,
                State       = CharacterState.Active
            };

            DaoFactory.CharacterDao.InsertOrUpdate(ref _chara);
            _session.InitializeAccount(account);
            _session.SessionId = 1;
            _handler           = new DefaultPacketController(null, null);
            _handler.RegisterSession(_session);

            _targetSession.InitializeAccount(targetAccount);
            _targetSession.SessionId = 2;
            _handler2 = new DefaultPacketController(null, null);
            _handler2.RegisterSession(_targetSession);

            DaoFactory.CharacterDao.InsertOrUpdate(ref _targetChar);
            _targetSession.InitializeAccount(targetAccount);

            _session.SetCharacter(_chara.Adapt <Character>());
            _session.Character.MapInstance = new MapInstance(new Map(), Guid.NewGuid(), true, MapInstanceType.BaseMapInstance, null);

            _targetSession.SetCharacter(_targetChar.Adapt <Character>());
            _targetSession.Character.MapInstance = new MapInstance(new Map(), Guid.NewGuid(), true, MapInstanceType.BaseMapInstance, null);

            Broadcaster.Instance.RegisterSession(_session);
            Broadcaster.Instance.RegisterSession(_targetSession);
        }
        public void Setup()
        {
            TypeAdapterConfig.GlobalSettings.ForDestinationType <IInitializable>().AfterMapping(dest => Task.Run(() => dest.Initialize()));
            PacketFactory.Initialize <NoS0575Packet>();
            Broadcaster.Reset();
            var contextBuilder =
                new DbContextOptionsBuilder <NosCoreContext>().UseInMemoryDatabase(
                    databaseName: Guid.NewGuid().ToString());

            DataAccessHelper.Instance.InitializeForTest(contextBuilder.Options);
            var map = new MapDto {
                MapId = 1
            };

            _mapDao.InsertOrUpdate(ref map);
            var account = new AccountDto {
                Name = "AccountTest", Password = "******".ToSha512()
            };

            _accountDao.InsertOrUpdate(ref account);
            WebApiAccess.RegisterBaseAdress();
            WebApiAccess.Instance.MockValues =
                new Dictionary <WebApiRoute, object>
            {
                { WebApiRoute.Channel, new List <ChannelInfo> {
                      new ChannelInfo()
                  } },
                { WebApiRoute.ConnectedAccount, new List <ConnectedAccount>() }
            };

            var conf = new WorldConfiguration {
                BackpackSize = 3, MaxItemAmount = 999, MaxGoldAmount = 999_999_999
            };
            var _chara = new Character(new InventoryService(new List <ItemDto>(), conf, _logger), null, null, _characterRelationDao, _characterDao, _itemInstanceDao, _accountDao, _logger)
            {
                CharacterId = 1,
                Name        = "TestExistingCharacter",
                Slot        = 1,
                AccountId   = account.AccountId,
                MapId       = 1,
                State       = CharacterState.Active
            };

            ItemProvider itemProvider = new ItemProvider(new List <ItemDto>(),
                                                         new List <IHandler <Item, Tuple <IItemInstance, UseItemPacket> > >());

            _instanceProvider = new MapInstanceProvider(new List <MapDto> {
                _map, _mapShop
            },
                                                        new MapItemProvider(new List <IHandler <MapItem, Tuple <MapItem, GetPacket> > >()),
                                                        _mapNpcDao,
                                                        _mapMonsterDao, _portalDao, new Adapter(), _logger);
            _instanceProvider.Initialize();
            var channelMock = new Mock <IChannel>();

            _session = new ClientSession(null,
                                         new List <PacketController> {
                new DefaultPacketController(null, _instanceProvider, null, _logger)
            },
                                         _instanceProvider, null, _logger);
            _session.RegisterChannel(channelMock.Object);
            _session.InitializeAccount(account);
            _session.SessionId = 1;
            _handler           = new NpcPacketController(conf,
                                                         new NrunProvider(
                                                             new List <IHandler <Tuple <IAliveEntity, NrunPacket>, Tuple <IAliveEntity, NrunPacket> > >()), _logger);
            _handler.RegisterSession(_session);
            _session.SetCharacter(_chara);
            var mapinstance = _instanceProvider.GetBaseMapById(0);

            _session.Character.Account             = account;
            _session.Character.MapInstance         = mapinstance;
            _session.Character.MapInstance.Portals = new List <Portal>
            {
                new Portal
                {
                    DestinationMapId         = _map.MapId,
                    Type                     = PortalType.Open,
                    SourceMapInstanceId      = mapinstance.MapInstanceId,
                    DestinationMapInstanceId = mapinstance.MapInstanceId,
                    DestinationX             = 5,
                    DestinationY             = 5,
                    PortalId                 = 1,
                    SourceMapId              = _map.MapId,
                    SourceX                  = 0,
                    SourceY                  = 0,
                }
            };

            Broadcaster.Instance.RegisterSession(_session);
        }
Beispiel #14
0
        public void Setup()
        {
            PacketFactory.Initialize <NoS0575Packet>();
            var contextBuilder = new DbContextOptionsBuilder <NosCoreContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString());

            DataAccessHelper.Instance.InitializeForTest(contextBuilder.Options);
            var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo(ConfigurationPath + "/log4net.config"));
            Logger.InitializeLogger(LogManager.GetLogger(typeof(DefaultPacketControllerTests)));
            var map = new MapDto {
                MapId = 1
            };

            DaoFactory.MapDao.InsertOrUpdate(ref map);
            var account = new AccountDto {
                Name = "AccountTest", Password = EncryptionHelper.Sha512("test")
            };
            var targetAccount = new AccountDto {
                Name = "test2", Password = EncryptionHelper.Sha512("test")
            };

            DaoFactory.AccountDao.InsertOrUpdate(ref account);
            DaoFactory.AccountDao.InsertOrUpdate(ref targetAccount);

            _chara = new CharacterDto
            {
                Name      = "TestExistingCharacter",
                Slot      = 1,
                AccountId = account.AccountId,
                MapId     = 1,
                State     = CharacterState.Active
            };

            _targetChar = new CharacterDto
            {
                Name      = "TestChar2",
                Slot      = 1,
                AccountId = targetAccount.AccountId,
                MapId     = 1,
                State     = CharacterState.Active
            };

            DaoFactory.CharacterDao.InsertOrUpdate(ref _chara);
            _session.InitializeAccount(account);
            _handler = new DefaultPacketController(null, null);
            _handler.RegisterSession(_session);

            DaoFactory.CharacterDao.InsertOrUpdate(ref _targetChar);
            _targetSession.InitializeAccount(targetAccount);

            WebApiAccess.RegisterBaseAdress();
            WebApiAccess.Instance.MockValues =
                new Dictionary <string, object>
            {
                { "api/channels", new List <WorldServerInfo> {
                      new WorldServerInfo()
                  } },
                { "api/connectedAccount", new List <ConnectedAccount>() }
            };

            _session.SetCharacter(_chara.Adapt <Character>());
            _session.Character.MapInstance = new MapInstance(new Map(), Guid.NewGuid(), true, MapInstanceType.BaseMapInstance, null);
            _targetSession.SetCharacter(_targetChar.Adapt <Character>());
            _targetSession.Character.MapInstance = new MapInstance(new Map(), Guid.NewGuid(), true, MapInstanceType.BaseMapInstance, null);
            ServerManager.Instance.Sessions      = new ConcurrentDictionary <long, ClientSession>();
            ServerManager.Instance.Sessions.TryAdd(_chara.CharacterId, _session);
            ServerManager.Instance.Sessions.TryAdd(_targetChar.CharacterId, _targetSession);
        }
Beispiel #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="T:Chat.Common.Presenter.LoginPresenter"/> class.
 /// </summary>
 /// <param name="state">State.</param>
 /// <param name="navigationService">Navigation service.</param>
 public LoginPresenter(ApplicationState state, INavigationService navigationService)
 {
     _navigationService = navigationService;
     _state             = state;
     _webApiAccess      = new WebApiAccess();
 }
        public void Setup()
        {
            PacketFactory.Initialize <NoS0575Packet>();
            Broadcaster.Reset();
            var contextBuilder = new DbContextOptionsBuilder <NosCoreContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString());

            DataAccessHelper.Instance.InitializeForTest(contextBuilder.Options);
            var map = new MapDto {
                MapId = 1
            };

            DaoFactory.MapDao.InsertOrUpdate(ref map);
            var account = new AccountDto {
                Name = "AccountTest", Password = "******".ToSha512()
            };

            DaoFactory.AccountDao.InsertOrUpdate(ref account);
            WebApiAccess.RegisterBaseAdress();
            WebApiAccess.Instance.MockValues =
                new Dictionary <WebApiRoute, object>
            {
                { WebApiRoute.Channel, new List <ChannelInfo> {
                      new ChannelInfo()
                  } },
                { WebApiRoute.ConnectedAccount, new List <ConnectedAccount>() }
            };

            var _chara = new Character(null, null, null)
            {
                CharacterId = 1,
                Name        = "TestExistingCharacter",
                Slot        = 1,
                AccountId   = account.AccountId,
                MapId       = 1,
                State       = CharacterState.Active
            };

            _itemProvider = new ItemProvider(new List <Item>(),
                                             new List <IHandler <Item, Tuple <IItemInstance, UseItemPacket> > >());
            var instanceAccessService = new MapInstanceProvider(new List <NpcMonsterDto>(), new List <Map> {
                _map, _map2
            },
                                                                new MapItemProvider(new List <IHandler <MapItem, Tuple <MapItem, GetPacket> > >()),
                                                                new MapNpcProvider(_itemProvider, new List <ShopDto>(), new List <ShopItemDto>(), new List <NpcMonsterDto>(), new List <MapNpcDto>()),
                                                                new MapMonsterProvider(new List <Item>(), new List <ShopDto>(), new List <ShopItemDto>(), new List <NpcMonsterDto>(), new List <MapMonsterDto>()));
            var channelMock = new Mock <IChannel>();

            _session = new ClientSession(null, new List <PacketController> {
                new DefaultPacketController(null, instanceAccessService, null)
            }, instanceAccessService, null);
            _session.RegisterChannel(channelMock.Object);
            _session.InitializeAccount(account);
            _session.SessionId = 1;
            _handler           = new DefaultPacketController(new WorldConfiguration(), instanceAccessService, null);
            _handler.RegisterSession(_session);
            _session.SetCharacter(_chara);
            var mapinstance = instanceAccessService.GetBaseMapById(0);

            _session.Character.MapInstance         = instanceAccessService.GetBaseMapById(0);
            _session.Character.MapInstance         = mapinstance;
            _session.Character.MapInstance.Portals = new List <Portal> {
                new Portal
                {
                    DestinationMapId         = _map2.MapId,
                    Type                     = PortalType.Open,
                    SourceMapInstanceId      = mapinstance.MapInstanceId,
                    DestinationMapInstanceId = instanceAccessService.GetBaseMapById(1).MapInstanceId,
                    DestinationX             = 5,
                    DestinationY             = 5,
                    PortalId                 = 1,
                    SourceMapId              = _map.MapId,
                    SourceX                  = 0,
                    SourceY                  = 0,
                }
            };

            Broadcaster.Instance.RegisterSession(_session);
        }
        public void Setup()
        {
            PacketFactory.Initialize <NoS0575Packet>();
            Broadcaster.Reset();
            var contextBuilder = new DbContextOptionsBuilder <NosCoreContext>().UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString());

            DataAccessHelper.Instance.InitializeForTest(contextBuilder.Options);
            var map = new MapDto {
                MapId = 1
            };

            DaoFactory.MapDao.InsertOrUpdate(ref map);
            var account = new AccountDto {
                Name = "AccountTest", Password = EncryptionHelper.Sha512("test")
            };

            DaoFactory.AccountDao.InsertOrUpdate(ref account);
            WebApiAccess.RegisterBaseAdress();
            WebApiAccess.Instance.MockValues =
                new Dictionary <string, object>
            {
                { "api/channels", new List <WorldServerInfo> {
                      new WorldServerInfo()
                  } },
                { "api/connectedAccount", new List <ConnectedAccount>() }
            };

            var _chara = new CharacterDto
            {
                CharacterId = 1,
                Name        = "TestExistingCharacter",
                Slot        = 1,
                AccountId   = account.AccountId,
                MapId       = 1,
                State       = CharacterState.Active
            };

            DaoFactory.CharacterDao.InsertOrUpdate(ref _chara);
            var instanceAccessService = new MapInstanceAccessService(new List <NpcMonsterDto>(), new List <Map> {
                _map, _map2
            });
            var channelMock = new Mock <IChannel>();

            _session = new ClientSession(null, new List <PacketController> {
                new DefaultPacketController(null, instanceAccessService)
            }, instanceAccessService);
            _session.RegisterChannel(channelMock.Object);
            _session.InitializeAccount(account);
            _session.SessionId = 1;
            _handler           = new DefaultPacketController(null, instanceAccessService);
            _handler.RegisterSession(_session);
            _session.SetCharacter(_chara.Adapt <Character>());
            var mapinstance = instanceAccessService.GetBaseMapById(0);

            _session.Character.MapInstance         = instanceAccessService.GetBaseMapById(0);
            _session.Character.MapInstance         = mapinstance;
            _session.Character.MapInstance.Portals = new List <Portal> {
                new Portal
                {
                    DestinationMapId         = _map2.MapId,
                    Type                     = PortalType.Open,
                    SourceMapInstanceId      = mapinstance.MapInstanceId,
                    DestinationMapInstanceId = instanceAccessService.GetBaseMapById(1).MapInstanceId,
                    DestinationX             = 5,
                    DestinationY             = 5,
                    PortalId                 = 1,
                    SourceMapId              = _map.MapId,
                    SourceX                  = 0,
                    SourceY                  = 0,
                }
            };

            Broadcaster.Instance.RegisterSession(_session);
        }