package jnpf.bizcommon.audit.service;
|
|
import com.alibaba.fastjson.JSON;
|
import jnpf.audit.diff.AuditFieldDiff;
|
import jnpf.bizcommon.audit.service.support.AuditHiddenFieldDiffFilter;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
public final class AuditHiddenFieldDiffFilterProbe {
|
|
private AuditHiddenFieldDiffFilterProbe() {
|
}
|
|
@SuppressWarnings("unchecked")
|
public static void main(String[] args) {
|
Map<String, AuditFieldDiff.FieldMeta> metadata = new HashMap<>();
|
metadata.put("secret", meta(true));
|
metadata.put("childsecret", meta(true));
|
metadata.put("hiddentable", meta(true));
|
String diffs = "[{\"field\":\"secret\",\"newData\":\"private\"},"
|
+ "{\"field\":\"visible\",\"newData\":\"public\"},"
|
+ "{\"field\":\"table\",\"chidField\":[{\"prop\":\"childSecret\"},"
|
+ "{\"prop\":\"childVisible\"}],\"chidData\":[{\"childSecret\":\"private\","
|
+ "\"jnpf_old_childSecret\":\"old private\",\"childVisible\":\"public\"}]},"
|
+ "{\"field\":\"hiddenTable\",\"chidField\":[{\"prop\":\"visible\"}],"
|
+ "\"chidData\":[{\"visible\":\"private\"}]},"
|
+ "{\"field\":\"hiddenOnlyChange\",\"chidField\":[{\"prop\":\"childSecret\"},"
|
+ "{\"prop\":\"childVisible\"}],\"chidData\":[{\"childSecret\":\"private\"}]}]";
|
List<Map<String, Object>> result = (List<Map<String, Object>>) JSON.parse(
|
AuditHiddenFieldDiffFilter.filter(diffs, metadata));
|
check(result.size() == 2, "hidden main field and hidden table removed");
|
check("visible".equals(result.get(0).get("field")), "visible main field retained");
|
Map<String, Object> table = result.get(1);
|
List<Map<String, Object>> fields = (List<Map<String, Object>>) table.get("chidField");
|
List<Map<String, Object>> rows = (List<Map<String, Object>>) table.get("chidData");
|
check(fields.size() == 1 && "childVisible".equals(fields.get(0).get("prop")),
|
"hidden child column removed");
|
check(!rows.get(0).containsKey("childSecret")
|
&& !rows.get(0).containsKey("jnpf_old_childSecret")
|
&& "public".equals(rows.get(0).get("childVisible")),
|
"hidden child values removed; visible value retained");
|
}
|
|
private static AuditFieldDiff.FieldMeta meta(boolean hidden) {
|
return new AuditFieldDiff.FieldMeta(null, null, null,
|
null, null, null, null, null, hidden);
|
}
|
|
private static void check(boolean condition, String message) {
|
if (!condition) {
|
throw new AssertionError(message);
|
}
|
}
|
}
|