Add validation for empty PutPrivilegeRequest (#37569)

Return an error to the user if the put privilege api is called with
an empty body (no privileges)

Resolves: #37561
This commit is contained in:
Ioannis Kakavas 2019-01-18 17:06:40 +02:00 committed by GitHub
parent ed297b7369
commit 7597b7ce2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 24 deletions

View File

@ -39,6 +39,9 @@ public final class PutPrivilegesRequest extends ActionRequest implements Applica
@Override
public ActionRequestValidationException validate() {
ActionRequestValidationException validationException = null;
if (privileges.isEmpty()) {
validationException = addValidationError("At least one application privilege must be provided", validationException);
} else {
for (ApplicationPrivilegeDescriptor privilege : privileges) {
try {
ApplicationPrivilege.validateApplicationName(privilege.getApplication());
@ -69,6 +72,7 @@ public final class PutPrivilegesRequest extends ActionRequest implements Applica
+ "] (in privilege " + privilege.getApplication() + ' ' + privilege.getName() + ")", validationException);
}
}
}
return validationException;
}

View File

@ -74,6 +74,9 @@ public class PutPrivilegesRequestTests extends ESTestCase {
assertValidationFailure(request(wildcardApp, numericName, reservedMetadata, badAction),
"Application names may not contain", "Application privilege names must match", "metadata keys may not start",
"must contain one of");
// Empty request
assertValidationFailure(new PutPrivilegesRequest(), "At least one application privilege must be provided");
}
private ApplicationPrivilegeDescriptor descriptor(String application, String name, String... actions) {