package org.xbib.elasticsearch.index.mapper.crypt; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.index.mapper.DocumentMapper; import org.elasticsearch.index.mapper.ParseContext; import org.junit.Assert; import org.junit.Test; import org.xbib.elasticsearch.MapperTestUtils; import java.io.IOException; import java.io.InputStreamReader; import static org.elasticsearch.common.io.Streams.copyToString; public class CryptMappingTests extends Assert { @Test public void testSHA256CryptMapping() throws Exception { String mapping = copyToStringFromClasspath("sha256-mapping.json"); DocumentMapper docMapper = MapperTestUtils.newDocumentMapperParser("test").parse("someType", new CompressedXContent(mapping)); String sampleText = copyToStringFromClasspath("plaintext.txt"); BytesReference json = XContentFactory.jsonBuilder().startObject().field("someField", sampleText).endObject().bytes(); ParseContext.Document doc = docMapper.parse("test", "someType", "1", json).rootDoc(); assertEquals(1, doc.getFields("someField").length); assertEquals("{SHA-256}cc482c9bf51da22e59ce8731719963a3fee3d2c7240ee2ee7f13cae4f27f773a", doc.getFields("someField")[0].stringValue()); // re-parse it String builtMapping = docMapper.mappingSource().string(); docMapper = MapperTestUtils.newDocumentMapperParser("test").parse("someType", new CompressedXContent(builtMapping)); json = XContentFactory.jsonBuilder().startObject().field("someField", sampleText).endObject().bytes(); doc = docMapper.parse("test", "someType", "1", json).rootDoc(); assertEquals(1, doc.getFields("someField").length); assertEquals("{SHA-256}cc482c9bf51da22e59ce8731719963a3fee3d2c7240ee2ee7f13cae4f27f773a", doc.getFields("someField")[0].stringValue()); } @Test public void testSHA512CryptMapping() throws Exception { String mapping = copyToStringFromClasspath("sha512-mapping.json"); DocumentMapper docMapper = MapperTestUtils.newDocumentMapperParser("test").parse("someType", new CompressedXContent(mapping)); String sampleText = copyToStringFromClasspath("plaintext.txt"); BytesReference json = XContentFactory.jsonBuilder().startObject().field("someField", sampleText).endObject().bytes(); ParseContext.Document doc = docMapper.parse("test", "someType", "1", json).rootDoc(); assertEquals(1, doc.getFields("someField").length);; assertEquals("{SHA-512}9ca2bab7ffacb00e1c3f5f00eb2405bc32755159b18a013092b54adbe88ff47c21445c3dba035c4721588e42ec6921f4153c52b9feb214e984f24676ad9553f9", doc.getFields("someField")[0].stringValue()); // re-parse it String builtMapping = docMapper.mappingSource().string(); docMapper = MapperTestUtils.newDocumentMapperParser("test").parse("someType", new CompressedXContent(builtMapping)); json = XContentFactory.jsonBuilder().startObject().field("someField", sampleText).endObject().bytes(); doc = docMapper.parse("test", "someType", "1", json).rootDoc(); assertEquals(1, doc.getFields("someField").length);; assertEquals("{SHA-512}9ca2bab7ffacb00e1c3f5f00eb2405bc32755159b18a013092b54adbe88ff47c21445c3dba035c4721588e42ec6921f4153c52b9feb214e984f24676ad9553f9", doc.getFields("someField")[0].stringValue()); } private String copyToStringFromClasspath(String path) throws IOException { return copyToString(new InputStreamReader(getClass().getResource(path).openStream(), "UTF-8")); } }