public async Task retrieve_inactive_character_from_account()
        {
            // Arrange
            var wowId = Guid.NewGuid();
            var wowId2 = Guid.NewGuid();
            IRepoAccount repoAccount = createFakeRepoAccount(wowId, wowId2);
            IRepoUser repoUser = createFakeRepoUser(wowId, wowId2);
            User mutableAccount = null;
            Action<User> saveUserToSession = (account) => mutableAccount = account;
            Func<User> getFromSession = () => mutableAccount;
            IServiceUser serviceUser = new ServiceUser(repoUser, saveUserToSession, getFromSession);
            IServiceAccount serviceAccount = new ServiceAccount(repoAccount);

            serviceUser.authenticate("wow", "wow");
            AccountController controller = new AccountController(serviceUser, serviceAccount);
            var cmd = new CreateCharacterCmd()
            {
                Id = Guid.NewGuid(),
                Name = "Orgrim Doomhammer",
                Class = ClassFactory.Warrior.ToString(),
                Faction = FactionFactory.Horde.ToString(),
                Level = 100,
                Race = RaceFactory.Orc.ToString()
            };
            await controller.AddNewCharacterAsync(cmd);
            var currentUser = serviceUser.getCurrentUser();
            var characters = await serviceAccount.GetCharactersAsync(currentUser.Id);
            var cmdRemove = new RemoveCharacterCmd() { Id = characters.ElementAt(0).Id };

            await controller.RemoveCharacterAsync(cmdRemove);

            var cmdRetrieve = new RetrieveCharacterCmd() { Id = characters.ElementAt(0).Id };
            // Act
            var result = await controller.RetrieveCharacterAsync(cmdRetrieve);

            // Assert
            var response = AssertResponse(result);
            Assert.IsTrue(response.IsOk);
        }
        public async Task<ActionResult> RemoveCharacterAsync(RemoveCharacterCmd cmd)
        {
            var cmdValidation = new CommandValidation();

            cmdValidation.validate(() => cmd.Id==Guid.Empty, "idCharacter cannot be empty");

            if (!cmdValidation.IsValid())
                //todo give back some 4/5xx love?
                return Json( cmdValidation.ToResponse());
            else
            {
                var currentUser = _serviceUser.getCurrentUser();
                var result = await _serviceAccount.RemoveCharacterAsync(currentUser.Id, cmd.Id);

                var executionResult = new ExecutionValidation(result);
                //todo give back some 4/5xx love if it failed?
                return Json(executionResult.ToResponse());
            }
        }