/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.security.impl;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.junit.Assert;
import junit.framework.TestCase;
import org.geoserver.security.GeoServerRoleConverter;
import org.junit.Before;
import org.junit.Test;
import org.springframework.security.core.GrantedAuthority;
public class GeoServerRoleConverterImplTest {
private GeoServerRoleConverter converter;
@Before
public void setUp() throws Exception {
converter = new GeoServerRoleConverterImpl();
}
@Test
public void testConverter() {
GeoServerRole r1 = new GeoServerRole("r1");
r1.getProperties().setProperty("r1_p1", "r1_v1");
r1.getProperties().setProperty("r1_p2", "r1_v2");
GeoServerRole r2 = new GeoServerRole("r2");
r2.getProperties().setProperty("r2_p1", "r2_v1");
GeoServerRole r3 = new GeoServerRole("r3");
GeoServerRole r =converter.convertRoleFromString(converter.convertRoleToString(r1),"testuser");
assertEquals("r1", r.getAuthority());
assertEquals(2, r.getProperties().size());
assertEquals("r1_v1" ,r.getProperties().get("r1_p1"));
assertEquals("r1_v2" ,r.getProperties().get("r1_p2"));
assertEquals("testuser",r.getUserName());
List<GeoServerRole> list = new ArrayList<GeoServerRole>();
list.add(r1);
list.add(r2);
list.add(r3);
Collection<GeoServerRole> resColl =
converter.convertRolesFromString(converter.convertRolesToString(list),null);
assertEquals(3,resColl.size());
for (GrantedAuthority auth : resColl) {
r = (GeoServerRole) auth;
assertNull(r.getUserName());
if ("r3".equals(r.getAuthority())) continue;
if ("r2".equals(r.getAuthority())) {
assertEquals(1, r.getProperties().size());
assertEquals("r2_v1" ,r.getProperties().get("r2_p1"));
continue;
}
if ("r1".equals(r.getAuthority())) {
assertEquals(2, r.getProperties().size());
assertEquals("r1_v1" ,r.getProperties().get("r1_p1"));
assertEquals("r1_v2" ,r.getProperties().get("r1_p2"));
continue;
}
Assert.fail("Unexpected role: "+ r.getAuthority());
}
assertNull(converter.convertRoleFromString(" ", null));
assertEquals(0,converter.convertRolesFromString(" ", null).size());
resColl.clear();
assertEquals(0,converter.convertRolesToString(resColl).length());
}
}