/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.geofence.core.model;
import org.geoserver.geofence.core.model.GSUser;
import org.geoserver.geofence.core.model.UserGroup;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.Date;
import java.util.HashSet;
import javax.xml.bind.JAXB;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author ETj (etj at geo-solutions.it)
*/
public class GSUserTest {
@Test
public void jaxb() {
GSUser user = new GSUser();
user.setAdmin(Boolean.FALSE);
user.setDateCreation(new Date());
user.setEmailAddress("a@b.c");
user.setEnabled(Boolean.TRUE);
user.setExtId("extid");
user.setFullName("fullname");
user.setId(42l);
user.setName("name");
user.setPassword("pwd");
user.setGroups(new HashSet<UserGroup>());
{
UserGroup ug = new UserGroup();
ug.setId(10l);
ug.setExtId("this_is_a_group");
ug.setEnabled(Boolean.TRUE);
ug.setDateCreation(new Date());
ug.setName("groupname");
user.getGroups().add(ug);
}
{
UserGroup ug = new UserGroup();
ug.setId(11l);
ug.setExtId("this_is_another_group");
ug.setEnabled(Boolean.TRUE);
ug.setDateCreation(new Date());
ug.setName("groupname2");
user.getGroups().add(ug);
}
assertEquals(2, user.getGroups().size());
assertNotNull(user.getGroups().iterator().next());
StringWriter w = new StringWriter();
JAXB.marshal(user, w);
String xml = w.toString();
System.out.println(xml);
StringReader r = new StringReader(xml);
GSUser user2 = JAXB.unmarshal(r, GSUser.class);
System.out.println("2nd marshalling:");
JAXB.marshal(user2, System.out);
assertNotNull(user2);
assertEquals(user.getDateCreation(), user2.getDateCreation());
assertEquals(user.getEmailAddress(), user2.getEmailAddress());
assertEquals(user.getEnabled(), user2.getEnabled());
assertEquals(user.getExtId(), user2.getExtId());
assertEquals(user.getFullName(), user2.getFullName());
assertEquals(user.getId(), user2.getId());
assertEquals(user.getName(), user2.getName());
assertEquals(user.getPassword(), user2.getPassword());
assertEquals(user.getGroups().size(), user2.getGroups().size());
for (UserGroup ug1 : user.getGroups()) {
boolean found = false;
for (UserGroup ug2 : user2.getGroups()) {
if (ug2.getId().equals(ug1.getId())) {
found = true;
break;
}
}
assertTrue("Group " + ug1 + " not found in unmarshalled GSUser" , found);
}
for (UserGroup ug2 : user2.getGroups()) {
boolean found = false;
for (UserGroup ug1 : user.getGroups()) {
if (ug2.getId().equals(ug1.getId())) {
found = true;
break;
}
}
assertTrue("Group " + ug2 + " not found in unmarshalled GSUser" , found);
}
}
}