Beispiel #1
0
        public async Task LoginControllerTwoFactorFailWrongCode()
        {
            var data  = new LoginDataHandler();
            var logic = new CoreApiLogicHandler();

            data.ResultConfig = new UserConfig()
            {
                IsTwoFactor = true, TwoFactorAuth = "654321", IsTwoFactorActive = true
            };

            var login   = LoginData.GetTwoFactor();
            var confirm = ModelConfirm <UserConfig> .CreateSuccess(data.ResultConfig);

            data.Result.Setup(m => m.Execute(It.IsAny <UserById>())).Returns(StandardUser);
            data.Result.Setup(m => m.Execute(It.IsAny <Persist <UserConfig> >())).Returns(confirm);

            var controller = new LoginController(data, Cloud, logic);
            var result     = await controller.TwoFactor(login) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeFalse();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserById>()), Times.Once);
        }
Beispiel #2
0
        public async Task LoginControllerReconnect()
        {
            var data  = new LoginDataHandler();
            var logic = new CoreApiLogicHandler();

            var auth      = LoginData.GetAuth();
            var reconnect = LoginData.GetReconnect();

            data.Result.Setup(m => m.Execute(It.IsAny <UserById>())).Returns(StandardUser);
            logic.Result.Setup(m => m.Execute(It.IsAny <SigninAuth>())).Returns(auth);

            var controller = new LoginController(data, Cloud, logic);
            var result     = await controller.Reconnect(reconnect) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeTrue();
            logic.Result.Verify(s => s.Execute(It.IsAny <SigninAuth>()), Times.Once);

            reconnect.Verification.Should().BeNullOrEmpty();
            reconnect.Id.Should().NotBeEmpty();
            reconnect.Key.Should().NotBeEmpty();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserById>()), Times.Once);
        }
Beispiel #3
0
        public async Task VisibleControllerDeleteFailed()
        {
            var data  = new VisibleApiDataHandler();
            var logic = new CoreApiLogicHandler();
            var model = VisibleData.GetFirst();

            data.Result.Setup(m => m.Execute(It.IsAny <Loader <VisibleFile> >())).Returns(model);

            logic.Result.Setup(m => m.Execute(It.IsAny <FileDelete>()))
            .Returns(ActionConfirm.CreateFailure("It went wrong"));

            var controller = new VisibleController(data, Cloud, logic)
            {
                CurrentUser = StandardUser
            };
            var result = await controller.Delete(VisibleData.FirstId) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            var check = result.Value as ConfirmViewModel;

            check.Success.Should().BeFalse();

            logic.Result.Verify(s => s.Execute(It.IsAny <FileDelete>()), Times.Once());

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <Loader <VisibleFile> >()), Times.Once);
        }
Beispiel #4
0
        public async Task LoginControllerTwoFactorFailNoUser()
        {
            var data  = new LoginDataHandler();
            var logic = new CoreApiLogicHandler();

            data.ResultConfig = new UserConfig()
            {
                IsTwoFactor = true, TwoFactorAuth = "123456", IsTwoFactorActive = true
            };

            var login = LoginData.GetTwoFactor();

            data.Result.Setup(m => m.Execute(It.IsAny <UserById>())).Returns(null);

            var controller = new LoginController(data, Cloud, logic);
            var result     = await controller.TwoFactor(login) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeFalse();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserById>()), Times.Once);
        }
Beispiel #5
0
        public async Task ProcessFileLogicVid()
        {
            var file = new FakeFile {
                ContentType = "video", FileName = "vid.mp4"
            };

            var data  = new FakeApiDataEntityHandler <VisibleFile>();
            var logic = new CoreApiLogicHandler();
            var cloud = new FakeCloudHandler();

            var command = new ProcessFile
            {
                DataHandler  = data,
                Source       = file,
                CloudHandler = cloud,
                LogicHandler = logic,
                CurrentUser  = StandardUser
            };

            await command.Execute();

            cloud.HasExecuted.Should().BeFalse();
            logic.HasExecuted.Should().BeFalse();

            data.HasExecuted.Should().BeFalse();
            data.HasCommitted.Should().BeFalse();
            logic.Result.Verify(s => s.Execute(It.IsAny <ProcessImage>()), Times.Never());
        }
Beispiel #6
0
        public async Task ProcessFileLogicImgNoTag()
        {
            var file = new FakeFile {
                ContentType = string.Empty
            };

            var data  = new FakeApiDataEntityHandler <VisibleFile>();
            var logic = new CoreApiLogicHandler();
            var cloud = new FakeCloudHandler();

            logic.Result.Setup(m => m.Execute(It.IsAny <ProcessImage>()))
            .Returns(ActionConfirm.CreateSuccess("File Processed"));

            var command = new ProcessFile
            {
                DataHandler  = data,
                Source       = file,
                CloudHandler = cloud,
                LogicHandler = logic,
                CurrentUser  = StandardUser
            };

            await command.Execute();

            cloud.HasExecuted.Should().BeFalse();
            logic.HasExecuted.Should().BeTrue();

            data.HasExecuted.Should().BeFalse();
            data.HasCommitted.Should().BeFalse();
            logic.Result.Verify(s => s.Execute(It.IsAny <ProcessImage>()), Times.Once());
        }
Beispiel #7
0
        public async Task SigninAuthLogicSignup()
        {
            var logic = new CoreApiLogicHandler();

            logic.Result.Setup(m => m.Execute(It.IsAny <WriteToken>())).Returns(true);

            var command = new SigninAuth
            {
                LogicHandler = logic,
                Login        = StandardUser,
                Config       = UserConfigData.GetFirst(),
                Tenant       = TenantData.GetFirst(),
                Settings     = new FakeSettings()
            };

            await command.Execute();

            logic.HasExecuted.Should().BeTrue();
            logic.Result.Should().NotBeNull();

            command.Result.Verification.Should().BeNullOrEmpty();
            command.Result.Key.Should().NotBeNullOrEmpty();
            command.Result.Message.Should().BeNullOrEmpty();
            command.Result.Config.Should().NotBeNull();
            command.Result.Id.Should().NotBeNullOrEmpty();
            command.Result.Success.Should().BeTrue();
        }
Beispiel #8
0
        public async Task LoginControllerReconnectInActive()
        {
            var data  = new LoginDataHandler();
            var logic = new CoreApiLogicHandler();

            var model = UserData.GetFirst();

            model.IsActive = false;

            var reconnect = LoginData.GetReconnect();

            data.Result.Setup(m => m.Execute(It.IsAny <UserById>())).Returns(model);

            var controller = new LoginController(data, Cloud, logic);
            var result     = await controller.Reconnect(reconnect) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeFalse();
            logic.Result.Verify(s => s.Execute(It.IsAny <SigninAuth>()), Times.Never);

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserById>()), Times.Once);
        }
Beispiel #9
0
        public async Task LoginControllerAuthTwoFactor()
        {
            var data  = new LoginDataHandler();
            var logic = new CoreApiLogicHandler();

            data.ResultConfig = new UserConfig()
            {
                IsTwoFactor = true
            };

            var login   = LoginData.GetLogin();
            var confirm = ModelConfirm <UserConfig> .CreateSuccess(data.ResultConfig);

            data.Result.Setup(m => m.Execute(It.IsAny <UserByEmail>())).Returns(StandardUser);
            data.Result.Setup(m => m.Execute(It.IsAny <Persist <UserConfig> >())).Returns(confirm);
            logic.Result.Setup(m => m.Execute(It.IsAny <SimpleNotify>())).Returns(ActionConfirm.CreateSuccess("ok"));

            var controller = new LoginController(data, Cloud, logic);
            var result     = await controller.Auth(login) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeTrue();
            logic.Result.Verify(s => s.Execute(It.IsAny <SigninAuth>()), Times.Never);
            logic.Result.Verify(s => s.Execute(It.IsAny <SimpleNotify>()), Times.Once);

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeTrue();
            data.Result.Verify(s => s.Execute(It.IsAny <UserByEmail>()), Times.Once);
        }
Beispiel #10
0
        public async Task SignupUserLogicMissingEntry()
        {
            var data  = new LoginDataHandler();
            var logic = new CoreApiLogicHandler();
            var cloud = new FakeCloudHandler();

            var viewModel = LoginData.GetSignup();

            data.Result.Setup(m => m.Execute(It.IsAny <Loader <Tenant> >())).Returns(null);

            var command = new SignupUser
            {
                DataHandler  = data,
                CloudHandler = cloud,
                LogicHandler = logic,
                Input        = viewModel,
                Result       = ActionConfirm.CreateFailure("Failed")
            };

            await command.Execute();

            command.Result.Success.Should().BeFalse();

            logic.HasExecuted.Should().BeFalse();
            logic.Result.Verify(s => s.Execute(It.IsAny <SimpleNotify>()), Times.Never());

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <Loader <Tenant> >()), Times.Once());
            data.Result.Verify(s => s.Execute(It.IsAny <UserSave>()), Times.Never());
        }
Beispiel #11
0
        public async Task ForgotControllerCodeTestTooMany()
        {
            var data  = new ForgotDataHandler();
            var logic = new CoreApiLogicHandler();

            data.ResultConfig = new UserConfig()
            {
                ForgotCounter = 11
            };

            var start = ForgotData.GetStart();

            data.Result.Setup(m => m.Execute(It.IsAny <UserByEmail>())).Returns(StandardUser);

            var controller = new ForgotController(data, Cloud, logic);
            var result     = await controller.Code(start) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeFalse();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserByEmail>()), Times.Once);
        }
Beispiel #12
0
        public async Task SignupUserLogic()
        {
            var data  = new SignupDataHandler();
            var logic = new CoreApiLogicHandler();
            var cloud = new FakeCloudHandler();

            var tenant    = TenantData.GetFirst();
            var viewModel = LoginData.GetSignup();

            data.Result.Setup(m => m.Execute(It.IsAny <Loader <Tenant> >())).Returns(tenant);
            data.Result.Setup(m => m.Execute(It.IsAny <UserSave>())).Returns(StandardUser);

            logic.Result.Setup(m => m.Execute(It.IsAny <SimpleNotify>())).Returns(ActionConfirm.CreateSuccess("Worked"));

            var command = new SignupUser
            {
                DataHandler  = data,
                CloudHandler = cloud,
                LogicHandler = logic,
                Input        = viewModel
            };

            await command.Execute();

            logic.HasExecuted.Should().BeTrue();
            logic.Result.Verify(s => s.Execute(It.IsAny <SimpleNotify>()), Times.Once());

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeTrue();
            data.Result.Verify(s => s.Execute(It.IsAny <Loader <Tenant> >()), Times.Once());
            data.Result.Verify(s => s.Execute(It.IsAny <UserSave>()), Times.AtLeastOnce());
        }
Beispiel #13
0
        public async Task ForgotControllerReplyTestWrongCode()
        {
            var data  = new ForgotDataHandler();
            var logic = new CoreApiLogicHandler();

            data.ResultConfig = new UserConfig()
            {
                ForgotCode = "Nonsense", ResetAuth = "Nonsense"
            };

            var reply = ForgotData.GetReply();

            data.Result.Setup(m => m.Execute(It.IsAny <UserByEmail>())).Returns(StandardUser);

            var controller = new ForgotController(data, Cloud, logic);
            var result     = await controller.Reply(reply) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeFalse();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserByEmail>()), Times.Once);
        }
Beispiel #14
0
        public async Task ForgotControllerCodeTest()
        {
            var data  = new ForgotDataHandler();
            var logic = new CoreApiLogicHandler();

            data.ResultConfig = new UserConfig();

            var confirm = ModelConfirm <UserConfig> .CreateSuccess(data.ResultConfig);

            var start = ForgotData.GetStart();

            data.Result.Setup(m => m.Execute(It.IsAny <UserByEmail>())).Returns(StandardUser);
            data.Result.Setup(m => m.Execute(It.IsAny <Persist <UserConfig> >())).Returns(confirm);
            logic.Result.Setup(m => m.Execute(It.IsAny <SimpleNotify>())).Returns(ActionConfirm.CreateSuccess("ok"));

            var controller = new ForgotController(data, Cloud, logic);
            var result     = await controller.Code(start) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeTrue();
            logic.Result.Verify(s => s.Execute(It.IsAny <SimpleNotify>()), Times.Once);

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeTrue();
            data.Result.Verify(s => s.Execute(It.IsAny <UserByEmail>()), Times.Once);
        }
Beispiel #15
0
        public async Task LoaderControllerUploadSuccess()
        {
            var data  = new VisibleApiDataHandler();
            var logic = new CoreApiLogicHandler();
            var model = VisibleData.GetFirst();

            logic.Result.Setup(m => m.Execute(It.IsAny <ProcessFile>())).Returns(ActionConfirm.CreateSuccess(model));

            var controller = new LoaderController(data, Cloud, logic)
            {
                CurrentUser = StandardUser
            };
            var result = await controller.Upload(VisibleData.GetFile()) as JsonResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <JsonResult>();

            data.HasExecuted.Should().BeFalse();
            logic.HasExecuted.Should().BeTrue();
        }
Beispiel #16
0
        public async Task SignupControllerPostTestExists()
        {
            var data  = new SignupDataHandler();
            var logic = new CoreApiLogicHandler();

            var signup = SignupData.GetSignup();

            data.Result.Setup(m => m.Execute(It.IsAny <UserByEmail>())).Returns(StandardUser);

            var controller = new SignupController(data, Cloud, logic);
            var result     = await controller.Post(signup) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeFalse();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserByEmail>()), Times.Once);
        }
Beispiel #17
0
        public async Task ForgotControllerResetTestNoUser()
        {
            var data  = new ForgotDataHandler();
            var logic = new CoreApiLogicHandler();

            var reset = ForgotData.GetReset();

            data.Result.Setup(m => m.Execute(It.IsAny <UserByEmail>())).Returns(null);

            var controller = new ForgotController(data, Cloud, logic);
            var result     = await controller.Reset(reset) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeFalse();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserByEmail>()), Times.Once);
        }
Beispiel #18
0
        public async Task SignupControllerAuthTestFail()
        {
            var data  = new SignupDataHandler();
            var logic = new CoreApiLogicHandler();
            var entry = SignupData.GetEntry();

            data.Result.Setup(m => m.Execute(It.IsAny <TenantByEntryKey>())).Returns(null);

            var controller = new SignupController(data, Cloud, logic);
            var result     = await controller.Entry(entry) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            result.Value.Should().BeOfType <FailViewModel>();

            logic.HasExecuted.Should().BeFalse();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <TenantByEntryKey>()), Times.Once);
        }
Beispiel #19
0
        public async Task ProcessImageLogicExists()
        {
            var file = new FakeFile();

            var data  = new FakeApiDataEntityHandler <ImageFile>();
            var logic = new CoreApiLogicHandler();
            var cloud = new FakeCloudHandler();

            var model = VisibleData.GetFirst();

            data.Result.Setup(m => m.Execute(It.IsAny <Loader <ImageFile> >())).Returns(model);
            data.Result.Setup(m => m.Execute(It.IsAny <Persist <ImageFile> >())).Returns(model);
            cloud.Result.Setup(m => m.Execute(It.IsAny <UploadCmd>()))
            .Returns(ActionConfirm.CreateSuccess("File Uploaded"));

            var command = new ProcessImage
            {
                DataHandler  = data,
                Source       = file,
                CloudHandler = cloud,
                LogicHandler = logic,
                CurrentUser  = StandardUser,
                Model        = model,
                LoadType     = "test",
                ExistingId   = model.Id
            };

            await command.Execute();

            cloud.HasExecuted.Should().BeTrue();
            cloud.Result.Verify(s => s.Execute(It.IsAny <UploadCmd>()), Times.AtLeastOnce());

            command.Result.Success.Should().BeTrue();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <Loader <ImageFile> >()), Times.Once());
            data.Result.Verify(s => s.Execute(It.IsAny <Persist <ImageFile> >()), Times.Once());
        }
Beispiel #20
0
        public async Task LoginControllerAuthFail()
        {
            var data  = new LoginDataHandler();
            var logic = new CoreApiLogicHandler();

            var login = LoginData.GetLogin();

            data.Result.Setup(m => m.Execute(It.IsAny <UserByEmail>())).Returns(null);

            var controller = new LoginController(data, Cloud, logic);
            var result     = await controller.Auth(login) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeFalse();
            logic.Result.Verify(s => s.Execute(It.IsAny <SigninAuth>()), Times.Never);

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserByEmail>()), Times.Once);
        }
Beispiel #21
0
        public async Task LoginControllerAuth()
        {
            var data  = new LoginDataHandler();
            var logic = new CoreApiLogicHandler();

            data.ResultConfig = new UserConfig();

            var login = LoginData.GetLogin();
            var auth  = LoginData.GetAuth();

            data.Result.Setup(m => m.Execute(It.IsAny <UserByEmail>())).Returns(StandardUser);
            logic.Result.Setup(m => m.Execute(It.IsAny <SigninAuth>())).Returns(auth);

            var controller = new LoginController(data, Cloud, logic);
            var result     = await controller.Auth(login) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeTrue();
            logic.Result.Verify(s => s.Execute(It.IsAny <SigninAuth>()), Times.Once);

            auth.Id.Should().NotBeEmpty();
            auth.IsTwoFactor.Should().BeFalse();
            auth.User.ClientHasProfile.Should().BeFalse();
            auth.User.ClientProfileThumbUrl.Should().BeEmpty();
            auth.User.ProfileThumbUrl.Should().BeEmpty();
            auth.User.Email.Should().BeEmpty();
            auth.User.HasPhone.Should().BeFalse();
            auth.User.HasProfile.Should().BeFalse();
            auth.User.Name.Should().BeEmpty();
            auth.User.TenantId.Should().BeEmpty();
            auth.User.TenantName.Should().BeEmpty();
            auth.Right.Should().NotBeNull();

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserByEmail>()), Times.Once);
        }
Beispiel #22
0
        public async Task ProcessImageLogicMissing()
        {
            var file = new FakeFile()
            {
                FileName = "xxxMissingxxx"
            };

            var data  = new FakeApiDataEntityHandler <ImageFile>();
            var logic = new CoreApiLogicHandler();
            var cloud = new FakeCloudHandler();

            var model = VisibleData.GetFirst();

            var command = new ProcessImage
            {
                DataHandler  = data,
                Source       = file,
                CloudHandler = cloud,
                LogicHandler = logic,
                CurrentUser  = StandardUser,
                Model        = model,
                LoadType     = "test"
            };

            await command.Execute();

            cloud.HasExecuted.Should().BeFalse();
            cloud.Result.Verify(s => s.Execute(It.IsAny <UploadCmd>()), Times.Never());

            command.Result.Success.Should().BeFalse();

            data.HasExecuted.Should().BeFalse();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <Loader <ImageFile> >()), Times.Never());
            data.Result.Verify(s => s.Execute(It.IsAny <Persist <ImageFile> >()), Times.Never());
        }
Beispiel #23
0
        public async Task SignupControllerPostTest()
        {
            var data  = new SignupDataHandler();
            var logic = new CoreApiLogicHandler();

            var signup = SignupData.GetSignup();
            var auth   = LoginData.GetAuth();

            data.Result.Setup(m => m.Execute(It.IsAny <UserByEmail>())).Returns(null);
            logic.Result.Setup(m => m.Execute(It.IsAny <SignupUser>())).Returns(ActionConfirm.CreateSuccess(auth));

            var controller = new SignupController(data, Cloud, logic);
            var result     = await controller.Post(signup) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeTrue();
            logic.Result.Verify(s => s.Execute(It.IsAny <SignupUser>()), Times.Once);

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeFalse();
            data.Result.Verify(s => s.Execute(It.IsAny <UserByEmail>()), Times.Once);
        }
Beispiel #24
0
        public async Task ForgotControllerResetTest()
        {
            var data  = new ForgotDataHandler();
            var logic = new CoreApiLogicHandler();

            data.ResultUser   = StandardUser;
            data.ResultConfig = new UserConfig()
            {
                ForgotCode = ForgotData.GetReset().Code, ResetCode = ForgotData.GetReset().ResetCode
            };

            var confirmUser = ModelConfirm <User> .CreateSuccess(StandardUser);

            var confirmConfig = ModelConfirm <UserConfig> .CreateSuccess(data.ResultConfig);

            var reset = ForgotData.GetReset();
            var auth  = LoginData.GetAuth();

            data.Result.Setup(m => m.Execute(It.IsAny <UserByEmail>())).Returns(StandardUser);
            data.Result.Setup(m => m.Execute(It.IsAny <Persist <User> >())).Returns(confirmUser);
            data.Result.Setup(m => m.Execute(It.IsAny <Persist <UserConfig> >())).Returns(confirmConfig);
            logic.Result.Setup(m => m.Execute(It.IsAny <SigninAuth>())).Returns(auth);

            var controller = new ForgotController(data, Cloud, logic);
            var result     = await controller.Reset(reset) as OkObjectResult;

            result.Should().NotBeNull();
            result.Should().BeOfType <OkObjectResult>();

            logic.HasExecuted.Should().BeTrue();
            logic.Result.Verify(s => s.Execute(It.IsAny <SigninAuth>()), Times.Once);

            data.HasExecuted.Should().BeTrue();
            data.HasCommitted.Should().BeTrue();
            data.Result.Verify(s => s.Execute(It.IsAny <UserByEmail>()), Times.Once);
        }