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")); } }
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>())); }
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); }
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); }