protected override void Context()
        {
            Username = "******";
            base.Context();

            _createAccountInputModel = new CreateAccountInputModel
                                           {
                                               FirstName = "Catherine",
                                               LastName = "Weir",
                                               EmailAddress = "*****@*****.**",
                                               Username = "******",
                                               Role = Role.Administrator,
                                           };

            _createAccountRequestReturnedFromMappingEngine = new CreateAccountRequest
            {
                FirstName = _createAccountInputModel.FirstName,
                LastName = _createAccountInputModel.LastName,
                EmailAddress = _createAccountInputModel.LastName,
                Username = _createAccountInputModel.Username,
                Role = _createAccountInputModel.Role,
            };

            MappingEngine.Stub(
                x => x.Map<CreateAccountInputModel, CreateAccountRequest>(
                    Arg<CreateAccountInputModel>.Is.Equal(_createAccountInputModel)))
                .Return(_createAccountRequestReturnedFromMappingEngine);

            AccountCreator.Stub(
                x => x.Execute(Arg<string>.Is.Anything, Arg<CreateAccountRequest>.Is.Anything))
                .Throw(_exceptionThrownByDomain);

            Logger.Stub(x => x.LogException(Arg<Exception>.Is.Equal(_exceptionThrownByDomain)))
                .WhenCalled(x => _exceptionPassedToLogger = x.Arguments[0] as Exception);
        }
        protected override void Context()
        {
            Username = "******";
            base.Context();
            _createAccountInputModel = new CreateAccountInputModel
                                           {
                                               FirstName = "Catherine",
                                               LastName = "Weir",
                                               EmailAddress = "*****@*****.**",
                                               Username = "******",
                                               Role = Role.Administrator,
                                           };

            _createAccountRequestReturnedFromMappingEngine = new CreateAccountRequest
                                                                 {
                                                                     FirstName = _createAccountInputModel.FirstName,
                                                                     LastName = _createAccountInputModel.LastName,
                                                                     EmailAddress = _createAccountInputModel.LastName,
                                                                     Username = _createAccountInputModel.Username,
                                                                     Role = _createAccountInputModel.Role,
                                                                 };
            MappingEngine.Stub(
                x =>
                x.Map<CreateAccountInputModel, CreateAccountRequest>(
                    Arg<CreateAccountInputModel>.Is.Equal(_createAccountInputModel)))
                .Return(_createAccountRequestReturnedFromMappingEngine);

            AccountCreator.Stub(
                x => x.Execute(Arg<string>.Is.Anything, Arg<CreateAccountRequest>.Is.Anything))
                .WhenCalled(
                    x => _actualCreateAccountRequestPassedToDomainService = x.Arguments[1] as CreateAccountRequest)
                .Return(new CreateAccountResponse {Success = true,});
        }
        public ActionResult ProcessCreateAccountInput(CreateAccountInputModel createAccountInputModel)
        {
            try
            {
                CreateAccountRequest request =
                    _mappingEngine.Map<CreateAccountInputModel, CreateAccountRequest>(createAccountInputModel);

                CreateAccountResponse response =
                    _accountCreator.Execute(User.Identity.Name, request);

                if (!response.Success)
                {
                    object viewModel =
                        _mappingEngine.Map(createAccountInputModel, new CreateAccountViewModel(response.Errors));

                    return View("CreateAccount", viewModel);
                }
            }
            catch (Exception e)
            {
                _logger.LogException(e);
                return RedirectToAction("Generic", "Error");
            }

            TempData["Message"] = "Account was added successfully";
            return RedirectToAction("AccountManagement");
        }