|
@@ -12,6 +12,7 @@ import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
|
|
import org.elasticsearch.common.io.stream.StreamInput;
|
|
|
import org.elasticsearch.test.ESTestCase;
|
|
|
import org.elasticsearch.xpack.core.security.authz.RoleDescriptor;
|
|
|
+import org.elasticsearch.xpack.core.security.authz.restriction.WorkflowResolver;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
@@ -71,6 +72,10 @@ public class UpdateApiKeyRequestTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testRoleDescriptorValidation() {
|
|
|
+ final List<String> unknownWorkflows = randomList(1, 2, () -> randomAlphaOfLengthBetween(4, 10));
|
|
|
+ final List<String> workflows = new ArrayList<>(unknownWorkflows.size() + 1);
|
|
|
+ workflows.addAll(unknownWorkflows);
|
|
|
+ workflows.add(WorkflowResolver.SEARCH_APPLICATION_QUERY_WORKFLOW.name());
|
|
|
final var request1 = new UpdateApiKeyRequest(
|
|
|
randomAlphaOfLength(10),
|
|
|
List.of(
|
|
@@ -88,7 +93,9 @@ public class UpdateApiKeyRequestTests extends ESTestCase {
|
|
|
null,
|
|
|
null,
|
|
|
Map.of("_key", "value"),
|
|
|
- null
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ new RoleDescriptor.Restriction(workflows.toArray(String[]::new))
|
|
|
)
|
|
|
),
|
|
|
null
|
|
@@ -100,5 +107,8 @@ public class UpdateApiKeyRequestTests extends ESTestCase {
|
|
|
assertThat(ve1.validationErrors().get(2), containsStringIgnoringCase("application name"));
|
|
|
assertThat(ve1.validationErrors().get(3), containsStringIgnoringCase("Application privilege names"));
|
|
|
assertThat(ve1.validationErrors().get(4), containsStringIgnoringCase("role descriptor metadata keys may not start with "));
|
|
|
+ for (int i = 0; i < unknownWorkflows.size(); i++) {
|
|
|
+ assertThat(ve1.validationErrors().get(5 + i), containsStringIgnoringCase("unknown workflow [" + unknownWorkflows.get(i) + "]"));
|
|
|
+ }
|
|
|
}
|
|
|
}
|