public async Task<bool> UpdateResourceOwnerPassword(UpdateResourceOwnerPasswordParameter request)
 {
     _managerEventSource.StartToUpdateResourceOwnerPassword(request.Login);
     _updateResourceOwnerPasswordParameterValidator.Validate(request);
     var result =  await _updateResourceOwnerPasswordAction.Execute(request);
     _managerEventSource.FinishToUpdateResourceOwnerPassword(request.Login);
     return result;
 }
        public void Validate(UpdateResourceOwnerPasswordParameter parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            if (string.IsNullOrWhiteSpace(parameter.Login))
            {
                throw new IdentityServerManagerException(ErrorCodes.InvalidRequestCode, string.Format(ErrorDescriptions.TheParameterIsMissing, "login"));
            }

            if (string.IsNullOrWhiteSpace(parameter.Password))
            {
                throw new IdentityServerManagerException(ErrorCodes.InvalidRequestCode, string.Format(ErrorDescriptions.TheParameterIsMissing, "password"));
            }
        }
Esempio n. 3
0
        public async Task When_Update_Resource_Owner_Password_Then_Operation_Is_Called()
        {
            // ARRANGE
            var request = new UpdateResourceOwnerPasswordParameter
            {
                Login    = "******",
                Password = "******"
            };

            InitializeFakeObjects();
            _resourceOwnerRepositoryStub.Setup(r => r.GetAsync(It.IsAny <string>()))
            .Returns(Task.FromResult(new ResourceOwner()));
            _resourceOwnerRepositoryStub.Setup(r => r.UpdateAsync(It.IsAny <ResourceOwner>())).Returns(Task.FromResult(true));

            // ACT
            await _updateResourceOwnerPasswordAction.Execute(request);

            // ASSERT
            _resourceOwnerRepositoryStub.Verify(r => r.UpdateAsync(It.IsAny <ResourceOwner>()));
        }
Esempio n. 4
0
        public async Task When_Resource_Owner_Doesnt_Exist_Then_Exception_Is_Thrown()
        {
            // ARRANGE
            const string subject = "invalid_subject";
            var          request = new UpdateResourceOwnerPasswordParameter
            {
                Login = subject
            };

            InitializeFakeObjects();
            _resourceOwnerRepositoryStub.Setup(r => r.GetAsync(It.IsAny <string>()))
            .Returns(Task.FromResult((ResourceOwner)null));

            // ACT
            var exception = await Assert.ThrowsAsync <IdentityServerManagerException>(() => _updateResourceOwnerPasswordAction.Execute(request));

            // ASSERT
            Assert.NotNull(exception);
            Assert.Equal(ErrorCodes.InvalidParameterCode, exception.Code);
            Assert.Equal(string.Format(ErrorDescriptions.TheResourceOwnerDoesntExist, subject), exception.Message);
        }
Esempio n. 5
0
        public async Task When_Resource_Owner_Cannot_Be_Updated_Then_Exception_Is_Thrown()
        {
            // ARRANGE
            var request = new UpdateResourceOwnerPasswordParameter
            {
                Login    = "******",
                Password = "******"
            };

            InitializeFakeObjects();
            _resourceOwnerRepositoryStub.Setup(r => r.GetAsync(It.IsAny <string>()))
            .Returns(Task.FromResult(new ResourceOwner()));
            _resourceOwnerRepositoryStub.Setup(r => r.UpdateAsync(It.IsAny <ResourceOwner>())).Returns(Task.FromResult(false));

            // ACT
            var result = await Assert.ThrowsAsync <IdentityServerManagerException>(() => _updateResourceOwnerPasswordAction.Execute(request));

            // ASSERT
            Assert.NotNull(result);
            Assert.Equal("internal_error", result.Code);
            Assert.Equal("the password cannot be updated", result.Message);
        }
        public async Task <bool> Execute(UpdateResourceOwnerPasswordParameter request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var resourceOwner = await _resourceOwnerRepository.GetAsync(request.Login);

            if (resourceOwner == null)
            {
                throw new IdentityServerManagerException(ErrorCodes.InvalidParameterCode, string.Format(ErrorDescriptions.TheResourceOwnerDoesntExist, request.Login));
            }

            resourceOwner.Password = PasswordHelper.ComputeHash(request.Password);
            var result = await _resourceOwnerRepository.UpdateAsync(resourceOwner);

            if (!result)
            {
                throw new IdentityServerManagerException(ErrorCodes.InternalErrorCode, ErrorDescriptions.ThePasswordCannotBeUpdated);
            }

            return(true);
        }