Check that we correctly propagate delete request parameters
@@ -22,6 +22,7 @@ package org.elasticsearch.client;
import org.apache.http.HttpEntity;
import org.apache.http.entity.ByteArrayEntity;
import org.elasticsearch.action.DocWriteRequest;
+import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.support.WriteRequest;
@@ -55,6 +56,64 @@ public class RequestTests extends ESTestCase {
getAndExistsTest(Request::get, "GET");
}
+ public void testDelete() throws IOException {
+ String index = randomAsciiOfLengthBetween(3, 10);
+ String type = randomAsciiOfLengthBetween(3, 10);
+ String id = randomAsciiOfLengthBetween(3, 10);
+ DeleteRequest deleteRequest = new DeleteRequest(index, type, id);
+
+ Map<String, String> expectedParams = new HashMap<>();
+
+ if (randomBoolean()) {
+ long version = randomFrom(Versions.MATCH_ANY, Versions.MATCH_DELETED, Versions.NOT_FOUND, randomNonNegativeLong());
+ deleteRequest.version(version);
+ if (version != Versions.MATCH_ANY) {
+ expectedParams.put("version", Long.toString(version));
+ }
+ }
+ if (randomBoolean()) {
+ VersionType versionType = randomFrom(VersionType.values());
+ deleteRequest.versionType(versionType);
+ if (versionType != VersionType.INTERNAL) {
+ expectedParams.put("version_type", versionType.name().toLowerCase(Locale.ROOT));
+ }
+ }
+
+ if (randomBoolean()) {
+ String timeout = randomTimeValue();
+ deleteRequest.timeout(timeout);
+ expectedParams.put("timeout", timeout);
+ } else {
+ expectedParams.put("timeout", ReplicationRequest.DEFAULT_TIMEOUT.getStringRep());
+ }
+
+ if (frequently()) {
+ if (randomBoolean()) {
+ String routing = randomAsciiOfLengthBetween(3, 10);
+ deleteRequest.routing(routing);
+ expectedParams.put("routing", routing);
+ }
+ if (randomBoolean()) {
+ String parent = randomAsciiOfLengthBetween(3, 10);
+ deleteRequest.parent(parent);
+ expectedParams.put("parent", parent);
+ }
+
+ if (randomBoolean()) {
+ WriteRequest.RefreshPolicy refreshPolicy = randomFrom(WriteRequest.RefreshPolicy.values());
+ deleteRequest.setRefreshPolicy(refreshPolicy);
+ if (refreshPolicy != WriteRequest.RefreshPolicy.NONE) {
+ expectedParams.put("refresh", refreshPolicy.getValue());
+ }
+ }
+ }
+
+ Request request = Request.delete(deleteRequest);
+ assertEquals("/" + index + "/" + type + "/" + id, request.endpoint);
+ assertEquals(expectedParams, request.params);
+ assertEquals("DELETE", request.method);
+ }
+
public void testExists() {
getAndExistsTest(Request::exists, "HEAD");
}
