1 package org
.argeo
.security
.json
;
3 import java
.io
.StringWriter
;
4 import java
.util
.ArrayList
;
7 import junit
.framework
.TestCase
;
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
;
23 import com
.springsource
.json
.writer
.JSONArray
;
24 import com
.springsource
.json
.writer
.JSONObject
;
26 public class ArgeoUserJsonTest
extends TestCase
{
27 private static Log log
= LogFactory
.getLog(ArgeoUserJsonTest
.class);
29 public void testMapper() throws Exception
{
30 List
<UserNature
> natures
= new ArrayList
<UserNature
>();
32 SimpleUserNature sun
= new SimpleUserNature();
33 sun
.setFirstName("Mickey");
34 sun
.setEmail("username@domain.com");
37 CoworkerNature cwn
= new CoworkerNature();
38 cwn
.setMobile("+123456789");
41 GrantedAuthority
[] roles
= { new GrantedAuthorityImpl("ROLE1"),
42 new GrantedAuthorityImpl("ROLE2") };
43 ArgeoUserDetails argeoUserDetails
= new ArgeoUserDetails("USER",
44 natures
, "PASSWORD", roles
);
46 BasicArgeoUser argeoUser
= new BasicArgeoUser(argeoUserDetails
);
48 StringWriter writer
= new StringWriter();
50 JsonFactory jsonFactory
= new JsonFactory();
51 JsonGenerator jsonGenerator
= jsonFactory
.createJsonGenerator(writer
);
52 jsonGenerator
.useDefaultPrettyPrinter();
54 ObjectMapper objectMapper
= new ObjectMapper();
56 objectMapper
.writeValue(jsonGenerator
, argeoUser
);
57 String audJo
= writer
.toString();
59 log
.info("audJo:\n" + audJo
);
61 // BasicArgeoUser aud = objectMapper.readValue(audJo,
62 // BasicArgeoUser.class);
64 ArgeoUserMapper aum
= new ArgeoUserMapper();
65 ArgeoUser aud
= aum
.parse(audJo
);
67 assertEquals(argeoUser
.getUsername(), aud
.getUsername());
68 assertEquals(argeoUser
.getRoles().size(), aud
.getRoles().size());
69 assertEquals(argeoUser
.getUserNatures().size(), aud
.getUserNatures()
72 assertSimpleUserNature((SimpleUserNature
) argeoUser
.getUserNatures()
73 .get(0), (SimpleUserNature
) aud
.getUserNatures().get(0));
75 (CoworkerNature
) argeoUser
.getUserNatures().get(1),
76 (CoworkerNature
) aud
.getUserNatures().get(1));
80 public static void assertSimpleUserNature(SimpleUserNature expected
,
81 SimpleUserNature reached
) {
82 assertEquals(expected
.getEmail(), reached
.getEmail());
85 public static void assertCoworkerNature(CoworkerNature expected
,
86 CoworkerNature reached
) {
87 assertEquals(expected
.getMobile(), reached
.getMobile());
90 public void testSeriDeserialize() {
91 List
<UserNature
> natures
= new ArrayList
<UserNature
>();
92 JSONArray naturesJo
= new JSONArray();
94 SimpleUserNature sun
= new SimpleUserNature();
95 sun
.setEmail("username@domain.com");
97 naturesJo
.put(new JSONObject(sun
));
99 CoworkerNature cwn
= new CoworkerNature();
100 cwn
.setMobile("+123456789");
102 naturesJo
.put(new JSONObject(cwn
));
104 GrantedAuthority
[] roles
= { new GrantedAuthorityImpl("ROLE1"),
105 new GrantedAuthorityImpl("ROLE1") };
106 ArgeoUserDetails argeoUserDetails
= new ArgeoUserDetails("USER",
107 natures
, "PASSWORD", roles
);
109 JSONObject argeoUserDetailsJo
= new JSONObject(argeoUserDetails
);
110 argeoUserDetailsJo
.put("userNatures", naturesJo
);
112 log
.info("argeoUserDetailsJo=" + argeoUserDetailsJo
.toString(2));
114 // JSONParser jsonParser = new JSONParser();
115 // ArgeoUserDetails argeoUserDetails = JSONParser