Merge branch 'stable-3.0'

* stable-3.0:
  PutHttpPassword: Squash apply methods
  Clarify that account must have a username to be able to set HTTP password

Change-Id: I8e7559e610541d8f750f04251b03b39cb521c0ae
This commit is contained in:
David Pursehouse
2019-05-10 17:56:07 +09:00
3 changed files with 15 additions and 5 deletions

View File

@@ -479,6 +479,8 @@ The options for setting/generating the HTTP password must be provided
in the request body inside a link:#http-password-input[
HttpPasswordInput] entity.
The account must have a username.
.Request
----
PUT /accounts/self/password.http HTTP/1.0

View File

@@ -95,12 +95,8 @@ public class PutHttpPassword implements RestModifyView<AccountResource, HttpPass
permissionBackend.currentUser().check(GlobalPermission.ADMINISTRATE_SERVER);
newPassword = input.httpPassword;
}
return apply(rsrc.getUser(), newPassword);
}
public Response<String> apply(IdentifiedUser user, String newPassword)
throws ResourceNotFoundException, ResourceConflictException, IOException,
ConfigInvalidException {
IdentifiedUser user = rsrc.getUser();
String userName =
user.getUserName().orElseThrow(() -> new ResourceConflictException("username must be set"));
Optional<ExternalId> optionalExtId =

View File

@@ -2853,6 +2853,18 @@ public class AccountIT extends AbstractDaemonTest {
assertThat(gApi.accounts().id(user.username()).setHttpPassword(null)).isNull();
}
@Test
public void cannotGenerateHttpPasswordWhenUsernameIsNotSet() throws Exception {
requestScopeOperations.setApiUser(admin.id());
int userId = accountCreator.create().id().get();
assertThat(gApi.accounts().id(userId).get().username).isNull();
ResourceConflictException thrown =
assertThrows(
ResourceConflictException.class,
() -> gApi.accounts().id(userId).generateHttpPassword());
assertThat(thrown).hasMessageThat().contains("username");
}
private void createDraft(PushOneCommit.Result r, String path, String message) throws Exception {
DraftInput in = new DraftInput();
in.path = path;