public async Task Put(string userId, [FromBody] UpdatedAccountSettings updatedAccountSettingsData) { userId.AssertUrlParameterProvided("userId"); updatedAccountSettingsData.AssertBodyProvided("updatedAccountSettings"); var updatedAccountSettings = updatedAccountSettingsData.Parse(); var requester = await this.requesterContext.GetRequesterAsync(); var requestedUserId = new UserId(userId.DecodeGuid()); var newProfileImageId = updatedAccountSettingsData.NewProfileImageId == null ? null : new FileId(updatedAccountSettingsData.NewProfileImageId.DecodeGuid()); var command = new UpdateAccountSettingsCommand( requester, requestedUserId, updatedAccountSettings.NewUsername, updatedAccountSettings.NewEmail, this.guidCreator.Create().ToString(), updatedAccountSettings.NewPassword, newProfileImageId); await this.updateAccountSettings.HandleAsync(command); }
public async Task WhenCalledWithValidData_ItShouldCallTheAccountRepository() { this.reservedUsernames.Setup(v => v.AssertNotReserved(Username)).Verifiable(); var command = new UpdateAccountSettingsCommand( Requester, UserId, Username, Email, SecurityToken, Password, FileId); this.fileSecurity.Setup(v => v.AssertReferenceAllowedAsync(UserId, FileId)) .Returns(Task.FromResult(0)); this.updateAccountSettings.Setup( v => v.ExecuteAsync( UserId, Username, Email, Password, FileId, SecurityToken)).ReturnsAsync(new UpdateAccountSettingsDbStatement.UpdateAccountSettingsResult(false)) .Verifiable(); await this.target.HandleAsync(command); this.reservedUsernames.Verify(); this.updateAccountSettings.Verify(); }
public async Task WhenCalledWithUnauthorizedFileId_ItShouldCallThrowAnUnauthroizedException() { var command = new UpdateAccountSettingsCommand( Requester, UserId, Username, Email, SecurityToken, Password, FileId); this.fileSecurity.Setup(v => v.AssertReferenceAllowedAsync(UserId, FileId)) .Throws(new UnauthorizedException()); await this.target.HandleAsync(command); }
public async Task WhenPutIsCalled_ItShouldCallTheCommandHandler() { var command = new UpdateAccountSettingsCommand(Requester, RequestedUserId, Username, Email, SecurityToken, Password, FileId); this.updateAccountSettings.Setup(v => v.HandleAsync(command)) .Returns(Task.FromResult(0)) .Verifiable(); var updatedAccountSettings = new UpdatedAccountSettings { NewEmail = Email.Value, NewPassword = Password.Value, NewUsername = Username.Value, NewProfileImageId = FileId.Value.EncodeGuid(), }; await this.target.Put(RequestedUserId.Value.EncodeGuid(), updatedAccountSettings); this.updateAccountSettings.Verify(); }