|
20 | 20 | package co.elastic.clients.elasticsearch.json;
|
21 | 21 |
|
22 | 22 | import co.elastic.clients.elasticsearch.core.search.Hit;
|
| 23 | +import co.elastic.clients.elasticsearch.model.ModelTestCase; |
| 24 | +import co.elastic.clients.elasticsearch.security.IndexPrivilege; |
| 25 | +import co.elastic.clients.elasticsearch.security.IndicesPrivileges; |
| 26 | +import co.elastic.clients.elasticsearch.security.RoleTemplateScript; |
| 27 | +import co.elastic.clients.elasticsearch.security.UserIndicesPrivileges; |
23 | 28 | import co.elastic.clients.json.JsonpUtils;
|
24 | 29 | import co.elastic.clients.util.AllowForbiddenApis;
|
25 | 30 | import jakarta.json.JsonException;
|
26 | 31 | import jakarta.json.spi.JsonProvider;
|
27 | 32 | import jakarta.json.stream.JsonGenerator;
|
28 |
| -import org.junit.jupiter.api.Assertions; |
29 | 33 | import org.junit.jupiter.api.Test;
|
30 | 34 |
|
31 | 35 | import java.io.StringWriter;
|
|
34 | 38 | import java.util.Enumeration;
|
35 | 39 | import java.util.function.Consumer;
|
36 | 40 |
|
37 |
| -public class JsonpUtilsTest extends Assertions { |
| 41 | +public class JsonpUtilsTest extends ModelTestCase { |
38 | 42 |
|
39 | 43 | @Test
|
40 | 44 | @AllowForbiddenApis("Testing JsonpUtil.provider()")
|
@@ -142,6 +146,59 @@ public void testSerializeIntOrNull() {
|
142 | 146 | assertEquals("{\"a\":0}", orNullHelper(g -> JsonpUtils.serializeIntOrNull(g, 0, 0)));
|
143 | 147 | }
|
144 | 148 |
|
| 149 | + @Test |
| 150 | + public void testJsonString() { |
| 151 | + // Single value |
| 152 | + { |
| 153 | + IndicesPrivileges priv = IndicesPrivileges.of(i -> i |
| 154 | + .names("bar") |
| 155 | + .query(q -> q.term(t -> t.field("baz").value(1))) |
| 156 | + .privileges(IndexPrivilege.All) |
| 157 | + ); |
| 158 | + |
| 159 | + String json = "{\"names\":[\"bar\"],\"privileges\":[\"all\"],\"query\":\"{\\\"term\\\":{\\\"baz\\\":{\\\"value\\\":1}}}\"}"; |
| 160 | + |
| 161 | + assertEquals(json, toJson(priv)); |
| 162 | + |
| 163 | + priv = fromJson(json, IndicesPrivileges.class); |
| 164 | + assertEquals("baz", priv.query().term().field()); |
| 165 | + } |
| 166 | + |
| 167 | + // Single value template |
| 168 | + { |
| 169 | + IndicesPrivileges priv = IndicesPrivileges.of(i -> i |
| 170 | + .names("bar") |
| 171 | + .query(q -> q._custom("template", RoleTemplateScript.of(s -> s.stored(v -> v.id("foo"))))) |
| 172 | + .privileges(IndexPrivilege.All) |
| 173 | + ); |
| 174 | + |
| 175 | + String json = "{\"names\":[\"bar\"],\"privileges\":[\"all\"],\"query\":\"{\\\"template\\\":{\\\"id\\\":\\\"foo\\\"}}\"}"; |
| 176 | + |
| 177 | + assertEquals(json, toJson(priv)); |
| 178 | + |
| 179 | + priv = fromJson(json, IndicesPrivileges.class); |
| 180 | + assertEquals("foo", priv.query()._custom().to(RoleTemplateScript.class).stored().id()); |
| 181 | + } |
| 182 | + |
| 183 | + // Array value |
| 184 | + { |
| 185 | + UserIndicesPrivileges priv = UserIndicesPrivileges.of(i -> i |
| 186 | + .names("bar") |
| 187 | + .query(q -> q.term(t -> t.field("baz").value(1))) |
| 188 | + .privileges(IndexPrivilege.All) |
| 189 | + .allowRestrictedIndices(false) |
| 190 | + ); |
| 191 | + |
| 192 | + String json = "{\"names\":[\"bar\"],\"privileges\":[\"all\"],\"query\":[\"{\\\"term\\\":{\\\"baz\\\":{\\\"value\\\":1}}}\"]," + |
| 193 | + "\"allow_restricted_indices\":false}"; |
| 194 | + |
| 195 | + assertEquals(json, toJson(priv)); |
| 196 | + |
| 197 | + priv = fromJson(json, UserIndicesPrivileges.class); |
| 198 | + assertEquals("baz", priv.query().get(0).term().field()); |
| 199 | + } |
| 200 | + } |
| 201 | + |
145 | 202 | private static String orNullHelper(Consumer<JsonGenerator> c) {
|
146 | 203 | StringWriter sw = new StringWriter();
|
147 | 204 | JsonGenerator generator = JsonpUtils.provider().createGenerator(sw);
|
|
0 commit comments