public async Task Activate_WhenCalledAndTokenNotExpired_FullAccountActivationExpected() { // ARRANGE _tokenProvider.IsTokenExpired(default(string), default(int)).ReturnsForAnyArgs(false); var actualUser = new User { Id = 99 }; var actualActivationToken = new AccountActivationToken { Token = "The token", UserId = actualUser.Id }; _accountActivationTokenRepository .SingleOrDefaultAsync(Arg.Any <Expression <Func <AccountActivationToken, bool> > >()) .Returns(x => { var store = new List <AccountActivationToken> { actualActivationToken }; return(store.Single(x.ArgAt <Expression <Func <AccountActivationToken, bool> > >(0).Compile())); } ); actualUser.ActivationToken = actualActivationToken; AccountActivationToken tokenToDelete = null; _accountActivationTokenRepository.When(x => x.Delete(Arg.Any <AccountActivationToken>())) .Do(x => tokenToDelete = x.ArgAt <AccountActivationToken>(0)); _userRepository.SingleOrDefaultAsync(Arg.Any <Expression <Func <User, bool> > >()).Returns(x => { var store = new List <User> { actualUser }; return(store.Single(x.ArgAt <Expression <Func <User, bool> > >(0).Compile())); }); _unitOfWork.When(x => x.CompleteAsync()).Do(x => { if (tokenToDelete != null && tokenToDelete.UserId == actualActivationToken.UserId) { actualUser.ActivationToken = null; } }); var expected = new User { Id = 99, IsAccountActivated = true }; // ACT await _sut.Activate(actualActivationToken.Token); // ASSERT actualUser.Should().BeEquivalentTo(expected); }
public async Task Reregister_WhenCalledAndUserHasAlreadyToken_UpdatedTokenExpected() { // ARRANGE var actualUser = new User { Id = 99, Email = "*****@*****.**", IsAccountActivated = false }; var newActivationToken = new AccountActivationToken { Token = "The new token" }; _userRepository.SingleOrDefaultAsync(Arg.Any <Expression <Func <User, bool> > >()).Returns(x => { var store = new List <User> { actualUser }; return(store.Single(x.ArgAt <Expression <Func <User, bool> > >(0).Compile())); }); _tokenProvider.CreateToken().Returns(newActivationToken.Token); _accountActivationTokenRepository.SingleOrDefaultAsync(Arg.Any <Expression <Func <AccountActivationToken, bool> > >()) .Returns(x => { var store = new List <AccountActivationToken> { new AccountActivationToken { Token = "The old token", UserId = actualUser.Id } }; return(store.Single(x.ArgAt <Expression <Func <AccountActivationToken, bool> > >(0).Compile())); } ); AccountActivationToken accountActivationTokenToUpdate = null; _accountActivationTokenRepository.When(x => x.Update(Arg.Any <AccountActivationToken>())).Do(x => accountActivationTokenToUpdate = x.ArgAt <AccountActivationToken>(0)); var expected = new AccountActivationToken { UserId = actualUser.Id, Token = newActivationToken.Token }; var sut = _sut; // ACT await sut.Reregister(new UserForReregisterDto { Email = actualUser.Email }); // ASSERT accountActivationTokenToUpdate.Should().BeEquivalentTo(expected); await _unitOfWork.Received().CompleteAsync(); }
public async Task Register_WhenCalled_ProperUserToAddExpected() { // ARRANGE var userForRegister = new UserForRegisterDto { Username = "******", Email = "*****@*****.**", Password = "******" }; (string password, ComputedPassword computedPassword)password = (userForRegister.Password, ComputedPassword.Create(Encoding.ASCII.GetBytes("password hash"), Encoding.ASCII.GetBytes("password salt"))); SetPasswordProvider(password); var newActivationToken = new AccountActivationToken { Token = "The token" }; User userToAdd = null; _userRepository.When(x => x.AddAsync(Arg.Any <User>())).Do(x => { userToAdd = x.ArgAt <User>(0); }); _tokenProvider.CreateToken().Returns(newActivationToken.Token); _accountActivationTokenRepository.SingleOrDefaultAsync(Arg.Any <Expression <Func <AccountActivationToken, bool> > >()) .Returns((AccountActivationToken)null); var pendingUploadPhotosFolderName = Guid.NewGuid(); SystemGuid.Set(() => pendingUploadPhotosFolderName); var expected = new User { Username = userForRegister.Username, Email = userForRegister.Email, ActivationToken = new AccountActivationToken { Token = newActivationToken.Token }, IsAccountActivated = false, PendingUploadPhotosFolderName = pendingUploadPhotosFolderName.ToString("N"), PasswordHash = password.computedPassword.Hash, PasswordSalt = password.computedPassword.Salt }; // ACT await _sut.Register(userForRegister); // ASSERT userToAdd.Should().BeEquivalentTo(expected); await _unitOfWork.Received().CompleteAsync(); }