Finish implementing API
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / test / java / org / argeo / security / json / JsonServerMapperTest.java
diff --git a/security/runtime/org.argeo.security.core/src/test/java/org/argeo/security/json/JsonServerMapperTest.java b/security/runtime/org.argeo.security.core/src/test/java/org/argeo/security/json/JsonServerMapperTest.java
new file mode 100644 (file)
index 0000000..f841aea
--- /dev/null
@@ -0,0 +1,46 @@
+package org.argeo.security.json;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.io.IOUtils;
+import org.argeo.security.ArgeoUser;
+import org.argeo.security.BasicArgeoUser;
+import org.argeo.security.UserNature;
+import org.argeo.server.json.GenericJsonDeserializer;
+import org.argeo.server.json.JsonObjectFactoryImpl;
+import org.argeo.server.json.JsonServerMapper;
+
+public class JsonServerMapperTest extends TestCase {
+       public void testDeserialize() throws Exception {
+               JsonServerMapper mapper = createJsonServerMapper();
+
+               Reader reader = null;
+               try {
+                       InputStream in = getClass().getResource(
+                                       "/org/argeo/security/json/gandalf2.json").openStream();
+                       reader = new InputStreamReader(in);
+
+                       ArgeoUser user = (ArgeoUser) mapper.deserialize(reader);
+                       assertEquals("gandalf2", user.getUsername());
+                       assertEquals(2, user.getRoles().size());
+                       assertEquals(2, user.getUserNatures().size());
+               } finally {
+                       IOUtils.closeQuietly(reader);
+               }
+       }
+
+       @SuppressWarnings("unchecked")
+       public static JsonServerMapper createJsonServerMapper() throws Exception {
+               JsonServerMapper mapper = new JsonServerMapper();
+               mapper.setTargetClass(BasicArgeoUser.class);
+               GenericJsonDeserializer jsonDeserializer = new GenericJsonDeserializer();
+               jsonDeserializer.getObjectFactories().add(new JsonObjectFactoryImpl());
+               mapper.getDeserializers().put(UserNature.class, jsonDeserializer);
+               mapper.afterPropertiesSet();
+               return mapper;
+       }
+}