Exemple #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:PasswordAuthenticationService{TRequest}"/> class.
        /// </summary>
        /// <param name="requestFactory">Request factory.</param>
        /// <param name="repository">Repository.</param>
        /// <param name="verifierFactory">Verifier factory.</param>
        /// <param name="serializer">Serializer.</param>
        public PasswordAuthenticationService(IStoredCredentialsRepository repository,
                                             IPasswordVerifierFactory verifierFactory  = null,
                                             IRequestFactory <TRequest> requestFactory = null,
                                             ICredentialsSerializer serializer         = null)
        {
            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }

            this.repository = repository;

            this.verifierFactory       = verifierFactory ?? new PasswordVerifierFactory();
            this.requestFactory        = requestFactory ?? new SimpleRequestFactory <TRequest>();
            this.credentialsSerializer = serializer ?? new JsonCredentialsSerializer();
        }
        public void RetrieveVerifier_uses_factory([Frozen] IPasswordVerifierFactory factory,
                                                  PasswordAuthenticationService <StubAuthenticationRequest> sut,
                                                  StubAuthenticationRequest request,
                                                  IPasswordVerifier verifier)
        {
            // Arrange
            Mock.Get(factory)
            .Setup(x => x.GetVerifier(request.CredentialsObject))
            .Returns(verifier);

            // Act
            sut.RetrieveVerifier(ref request);

            // Assert
            Assert.AreSame(verifier, request.Verifier, "Verifier is set");
            Mock.Get(factory)
            .Verify(x => x.GetVerifier(request.CredentialsObject), Times.Once());
        }
        public void RetrieveVerifier_sets_failure_result_when_verifier_cannot_be_created([Frozen] IPasswordVerifierFactory factory,
                                                                                         PasswordAuthenticationService <StubAuthenticationRequest> sut,
                                                                                         StubAuthenticationRequest request)
        {
            // Arrange
            Mock.Get(factory)
            .Setup(x => x.GetVerifier(request.CredentialsObject))
            .Returns((IPasswordVerifier)null);

            request.Result = null;

            // Act
            sut.RetrieveVerifier(ref request);

            // Assert
            Mock.Get(factory)
            .Verify(x => x.GetVerifier(request.CredentialsObject), Times.Once());
            Assert.NotNull(request.Result, "Result has been set");
            Assert.IsFalse(request.Result.Success, "Result indicates failure");
        }
        public void RetrieveVerifier_does_not_use_factory_when_credentials_object_is_empty([Frozen] IPasswordVerifierFactory factory,
                                                                                           PasswordAuthenticationService <StubAuthenticationRequest> sut,
                                                                                           StubAuthenticationRequest request)
        {
            // Arrange
            Mock.Get(factory)
            .Setup(x => x.GetVerifier(It.IsAny <object>()))
            .Returns((IPasswordVerifier)null);

            request.CredentialsObject = null;

            // Act
            sut.RetrieveVerifier(ref request);

            // Assert
            Mock.Get(factory)
            .Verify(x => x.GetVerifier(It.IsAny <object>()), Times.Never());
        }