コード例 #1
0
        public string CreateToken()
        {
            var whenCreated = BitConverter.GetBytes(SystemTime.Now().ToBinary());
            var key         = SystemGuid.NewGuid().ToByteArray();

            return(Convert.ToBase64String(whenCreated.Concat(key).ToArray()));
        }
コード例 #2
0
        public async Task Register(UserForRegisterDto userForRegister)
        {
            if (userForRegister == null)
            {
                throw new ArgumentNullException(nameof(userForRegister));
            }

            var userToCreate = _mapper.Map <User>(userForRegister);

            SetPasswordForUser(userToCreate, userForRegister.Password);

            userToCreate.ActivationToken = CreateToken <AccountActivationToken>();
            userToCreate.PendingUploadPhotosFolderName = SystemGuid.NewGuid().ToString("N");

            await UserRepository.AddAsync(userToCreate);

            await _unitOfWork.CompleteAsync();
        }
コード例 #3
0
        public void CreateToken_WhenCalled_ProperTokenExpected()
        {
            // ARRANGE
            var provider = new TokenProvider();
            var time     = DateTime.Now;

            SystemTime.Set(() => time);
            var key = SystemGuid.NewGuid();

            SystemGuid.Set(() => key);
            var expected = Convert.ToBase64String(BitConverter.GetBytes(time.ToBinary())
                                                  .Concat(key.ToByteArray()).ToArray());

            // ACT
            var actual = provider.CreateToken();

            // ASSERT
            actual.Should().BeEquivalentTo(expected);
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        public void SetUp()
        {
            _userRepository = Substitute.For <IRepository <User> >();
            _accountActivationTokenRepository = Substitute.For <IRepository <AccountActivationToken> >();
            _resetPasswordTokenRepository     = Substitute.For <IRepository <ResetPasswordToken> >();
            _unitOfWork = Substitute.For <IUnitOfWork>();
            SetUpMapper();
            //SetUpFilesStorageProvider();

            _tokenProvider    = Substitute.For <ITokenProvider>();
            _passwordProvider = new MockPasswordProvider();
            _configuration    = Substitute.For <IConfiguration>();
            SetConfigurationSection(default(string), default(int?));
            _repositoryFactory = Substitute.For <IRepositoryFactory>();
            _repositoryFactory.Create <AccountActivationToken>().Returns(_accountActivationTokenRepository);
            _repositoryFactory.Create <ResetPasswordToken>().Returns(_resetPasswordTokenRepository);
            _repositoryFactory.Create <User>().Returns(x => _userRepository);

            _sut = new AuthService(_repositoryFactory, _unitOfWork, _mapper, _tokenProvider, _passwordProvider, _configuration);

            SystemGuid.Reset();
        }
コード例 #6
0
 public void TearDown()
 {
     SystemTime.Reset();
     SystemGuid.Reset();
 }
コード例 #7
0
 public override int GetHashCode() => SystemGuid.GetHashCode();