Skip to content

Commit

Permalink
Added test for deprecation warning in RestPutIndexTemplateActionTests
Browse files Browse the repository at this point in the history
  • Loading branch information
markharwood committed Jan 29, 2019
1 parent 925c064 commit a0326e4
Showing 1 changed file with 61 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

package org.elasticsearch.rest.action.admin.indices;

import org.elasticsearch.client.node.NodeClient;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentBuilder;
Expand All @@ -31,8 +32,12 @@
import org.junit.Before;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import static org.elasticsearch.rest.BaseRestHandler.INCLUDE_TYPE_NAME_PARAMETER;
import static org.mockito.Mockito.mock;

public class RestPutIndexTemplateActionTests extends RestActionTestCase {
private RestPutIndexTemplateAction action;

Expand All @@ -45,7 +50,8 @@ public void testPrepareTypelessRequest() throws IOException {
XContentBuilder content = XContentFactory.jsonBuilder().startObject()
.startObject("mappings")
.startObject("properties")
.startObject("field").field("type", "keyword").endObject()
.startObject("field1").field("type", "keyword").endObject()
.startObject("field2").field("type", "text").endObject()
.endObject()
.endObject()
.startObject("aliases")
Expand All @@ -58,14 +64,20 @@ public void testPrepareTypelessRequest() throws IOException {
.withPath("/_template/_some_template")
.withContent(BytesReference.bytes(content), XContentType.JSON)
.build();
action.prepareRequest(request, mock(NodeClient.class));

// Internally the above prepareRequest method calls prepareRequestSource to inject a
// default type into the mapping. Here we test that this does what is expected by
// explicitly calling that same helper function
boolean includeTypeName = false;
Map<String, Object> source = action.prepareRequestSource(request, includeTypeName);

XContentBuilder expectedContent = XContentFactory.jsonBuilder().startObject()
.startObject("mappings")
.startObject("_doc")
.startObject("properties")
.startObject("field").field("type", "keyword").endObject()
.startObject("field1").field("type", "keyword").endObject()
.startObject("field2").field("type", "text").endObject()
.endObject()
.endObject()
.endObject()
Expand All @@ -78,4 +90,51 @@ public void testPrepareTypelessRequest() throws IOException {

assertEquals(expectedContentAsMap, source);
}

public void testIncludeTypeName() throws IOException {
XContentBuilder typedContent = XContentFactory.jsonBuilder().startObject()
.startObject("mappings")
.startObject("my_doc")
.startObject("properties")
.startObject("field1").field("type", "keyword").endObject()
.startObject("field2").field("type", "text").endObject()
.endObject()
.endObject()
.endObject()
.startObject("aliases")
.startObject("read_alias").endObject()
.endObject()
.endObject();

Map<String, String> params = new HashMap<>();
params.put(INCLUDE_TYPE_NAME_PARAMETER, "true");
RestRequest request = new FakeRestRequest.Builder(xContentRegistry())
.withMethod(RestRequest.Method.PUT)
.withParams(params)
.withPath("/_template/_some_template")
.withContent(BytesReference.bytes(typedContent), XContentType.JSON)
.build();
action.prepareRequest(request, mock(NodeClient.class));
assertWarnings(RestPutIndexTemplateAction.TYPES_DEPRECATION_MESSAGE);
boolean includeTypeName = true;
Map<String, Object> source = action.prepareRequestSource(request, includeTypeName);

XContentBuilder expectedContent = XContentFactory.jsonBuilder().startObject()
.startObject("mappings")
.startObject("my_doc")
.startObject("properties")
.startObject("field1").field("type", "keyword").endObject()
.startObject("field2").field("type", "text").endObject()
.endObject()
.endObject()
.endObject()
.startObject("aliases")
.startObject("read_alias").endObject()
.endObject()
.endObject();
Map<String, Object> expectedContentAsMap = XContentHelper.convertToMap(
BytesReference.bytes(expectedContent), true, expectedContent.contentType()).v2();

assertEquals(expectedContentAsMap, source);
}
}

0 comments on commit a0326e4

Please sign in to comment.