]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/json/ArgeoUserJsonTest.java
Prepare next development cycle
[lgpl/argeo-commons.git] / security / json / ArgeoUserJsonTest.java
1 package org.argeo.security.json;
2
3 import java.io.StringWriter;
4 import java.util.ArrayList;
5 import java.util.List;
6
7 import junit.framework.TestCase;
8
9 import org.apache.commons.logging.Log;
10 import org.apache.commons.logging.LogFactory;
11 import org.argeo.security.ArgeoUser;
12 import org.argeo.security.BasicArgeoUser;
13 import org.argeo.security.UserNature;
14 import org.argeo.security.core.ArgeoUserDetails;
15 import org.argeo.security.nature.CoworkerNature;
16 import org.argeo.security.nature.SimpleUserNature;
17 import org.codehaus.jackson.JsonFactory;
18 import org.codehaus.jackson.JsonGenerator;
19 import org.codehaus.jackson.map.ObjectMapper;
20 import org.springframework.security.GrantedAuthority;
21 import org.springframework.security.GrantedAuthorityImpl;
22
23 import com.springsource.json.writer.JSONArray;
24 import com.springsource.json.writer.JSONObject;
25
26 public class ArgeoUserJsonTest extends TestCase {
27 private static Log log = LogFactory.getLog(ArgeoUserJsonTest.class);
28
29 public void testMapper() throws Exception {
30 List<UserNature> natures = new ArrayList<UserNature>();
31
32 SimpleUserNature sun = new SimpleUserNature();
33 sun.setFirstName("Mickey");
34 sun.setEmail("username@domain.com");
35 natures.add(sun);
36
37 CoworkerNature cwn = new CoworkerNature();
38 cwn.setMobile("+123456789");
39 natures.add(cwn);
40
41 GrantedAuthority[] roles = { new GrantedAuthorityImpl("ROLE1"),
42 new GrantedAuthorityImpl("ROLE2") };
43 ArgeoUserDetails argeoUserDetails = new ArgeoUserDetails("USER",
44 natures, "PASSWORD", roles);
45
46 BasicArgeoUser argeoUser = new BasicArgeoUser(argeoUserDetails);
47
48 StringWriter writer = new StringWriter();
49
50 JsonFactory jsonFactory = new JsonFactory();
51 JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(writer);
52 jsonGenerator.useDefaultPrettyPrinter();
53
54 ObjectMapper objectMapper = new ObjectMapper();
55
56 objectMapper.writeValue(jsonGenerator, argeoUser);
57 String audJo = writer.toString();
58
59 log.info("audJo:\n" + audJo);
60
61 // BasicArgeoUser aud = objectMapper.readValue(audJo,
62 // BasicArgeoUser.class);
63
64 ArgeoUserMapper aum = new ArgeoUserMapper();
65 ArgeoUser aud = aum.parse(audJo);
66
67 assertEquals(argeoUser.getUsername(), aud.getUsername());
68 assertEquals(argeoUser.getRoles().size(), aud.getRoles().size());
69 assertEquals(argeoUser.getUserNatures().size(), aud.getUserNatures()
70 .size());
71
72 assertSimpleUserNature((SimpleUserNature) argeoUser.getUserNatures()
73 .get(0), (SimpleUserNature) aud.getUserNatures().get(0));
74 assertCoworkerNature(
75 (CoworkerNature) argeoUser.getUserNatures().get(1),
76 (CoworkerNature) aud.getUserNatures().get(1));
77
78 }
79
80 public static void assertSimpleUserNature(SimpleUserNature expected,
81 SimpleUserNature reached) {
82 assertEquals(expected.getEmail(), reached.getEmail());
83 }
84
85 public static void assertCoworkerNature(CoworkerNature expected,
86 CoworkerNature reached) {
87 assertEquals(expected.getMobile(), reached.getMobile());
88 }
89
90 public void testSeriDeserialize() {
91 List<UserNature> natures = new ArrayList<UserNature>();
92 JSONArray naturesJo = new JSONArray();
93
94 SimpleUserNature sun = new SimpleUserNature();
95 sun.setEmail("username@domain.com");
96 natures.add(sun);
97 naturesJo.put(new JSONObject(sun));
98
99 CoworkerNature cwn = new CoworkerNature();
100 cwn.setMobile("+123456789");
101 natures.add(cwn);
102 naturesJo.put(new JSONObject(cwn));
103
104 GrantedAuthority[] roles = { new GrantedAuthorityImpl("ROLE1"),
105 new GrantedAuthorityImpl("ROLE1") };
106 ArgeoUserDetails argeoUserDetails = new ArgeoUserDetails("USER",
107 natures, "PASSWORD", roles);
108
109 JSONObject argeoUserDetailsJo = new JSONObject(argeoUserDetails);
110 argeoUserDetailsJo.put("userNatures", naturesJo);
111
112 log.info("argeoUserDetailsJo=" + argeoUserDetailsJo.toString(2));
113
114 // JSONParser jsonParser = new JSONParser();
115 // ArgeoUserDetails argeoUserDetails = JSONParser
116 }
117 }