Skip to content
Snippets Groups Projects
Commit 31804c0e authored by Nicholas Blair's avatar Nicholas Blair
Browse files

fix: filter test needs to use correct case for 'isMemberOf'

Also refactored AttributesMapper test to remove duplicate code and include test for 'blank' values.
parent 51267bd0
No related branches found
No related tags found
No related merge requests found
......@@ -40,35 +40,15 @@ public class PreauthenticatedUserDetailsAttributeMapperTest {
*/
@Test
public void mapUser_success() {
MockHttpServletRequest request = new MockHttpServletRequest();
String uid = "somebody";
String eppn = "somebody@wisc.edu";
String pvi = "1234567";
String name = "some body";
String email = "some.body@wisc.edu";
String emplid = "0000123456";
request.addHeader("eppn", eppn);
request.addHeader("wiscedupvi", pvi);
request.addHeader("uid", uid);
request.addHeader("cn", name);
request.addHeader("mail", email);
MockHttpServletRequest request = mockRequest();
request.addHeader("wisceduudds", "udds1234");
request.addHeader("wisceduisisemplid", emplid);
request.addHeader("Shib-Identity-Provider", "https://logintest.wisc.edu/idp/shibboleth");
request.addHeader("isMemberOf", "uw:domain:something");
UWUserDetails result = filter.mapUser(request);
assertNotNull(result);
assertEquals(uid, result.getUsername());
assertEquals(eppn, result.getEppn());
assertEquals(pvi, result.getPvi());
assertEquals(name, result.getFullName());
assertEquals(email, result.getEmailAddress());
assertMockAttributes(result);
assertEquals(Collections.singletonList("udds1234"), result.getUddsMembership());
assertEquals(emplid, result.getIsisEmplid());
assertEquals("/Shibboleth.sso/Logout?return=https://logintest.wisc.edu/logout/", result.getCustomLogoutUrl());
assertEquals(1,result.getAuthorities().size());
assertTrue(result.getAuthorities().contains(new SimpleGrantedAuthority("uw:domain:something")));
}
......@@ -79,35 +59,26 @@ public class PreauthenticatedUserDetailsAttributeMapperTest {
*/
@Test
public void mapUser_empty_isMemberOf() {
MockHttpServletRequest request = new MockHttpServletRequest();
String uid = "somebody";
String eppn = "somebody@wisc.edu";
String pvi = "1234567";
String name = "some body";
String email = "some.body@wisc.edu";
String emplid = "0000123456";
List<String> uddsMembership = Collections.singletonList("udds1234");
request.addHeader("eppn", eppn);
request.addHeader("wiscedupvi", pvi);
request.addHeader("uid", uid);
request.addHeader("cn", name);
request.addHeader("mail", email);
request.addHeader("wisceduudds", uddsMembership);
request.addHeader("wisceduisisemplid", emplid);
request.addHeader("Shib-Identity-Provider", "https://logintest.wisc.edu/idp/shibboleth");
MockHttpServletRequest request = mockRequest();
UWUserDetails result = filter.mapUser(request);
assertNotNull(result);
assertMockAttributes(result);
assertEquals(0, result.getAuthorities().size());
}
/**
* Verify expected behaviour for {@link PreauthenticatedUserDetailsAttributeMapper#mapUser(HttpServletRequest)}
* when the isMemberOf contains blank values.
*/
@Test
public void mapUser_isMemberOf_contains_blank_values() {
MockHttpServletRequest request = mockRequest();
request.addHeader("isMemberOf", "");
request.addHeader("isMemberOf", " ");
UWUserDetails result = filter.mapUser(request);
assertNotNull(result);
assertEquals(uid, result.getUsername());
assertEquals(eppn, result.getEppn());
assertEquals(pvi, result.getPvi());
assertEquals(name, result.getFullName());
assertEquals(email, result.getEmailAddress());
assertEquals(uddsMembership, result.getUddsMembership());
assertEquals(emplid, result.getIsisEmplid());
assertEquals("/Shibboleth.sso/Logout?return=https://logintest.wisc.edu/logout/", result.getCustomLogoutUrl());
assertMockAttributes(result);
assertEquals(0, result.getAuthorities().size());
}
/**
......@@ -116,19 +87,15 @@ public class PreauthenticatedUserDetailsAttributeMapperTest {
*/
@Test
public void mapUser_multipleManifestGroups() {
MockHttpServletRequest request = new MockHttpServletRequest();
String uid = "somebody";
request.addHeader("uid", uid);
MockHttpServletRequest request = mockRequest();
request.addHeader("isMemberOf", "uw:domain:onegroup");
request.addHeader("isMemberOf", "uw:domain:anothergroup");
UWUserDetails result = filter.mapUser(request);
assertNotNull(result);
assertMockAttributes(result);
assertEquals(uid, result.getUsername());
assertEquals(2,result.getAuthorities().size());
assertTrue(result.getAuthorities().contains(new SimpleGrantedAuthority("uw:domain:onegroup")));
assertTrue(result.getAuthorities().contains(new SimpleGrantedAuthority("uw:domain:anothergroup")));
}
......@@ -138,19 +105,15 @@ public class PreauthenticatedUserDetailsAttributeMapperTest {
*/
@Test
public void mapUser_multipleudds() {
MockHttpServletRequest request = new MockHttpServletRequest();
String uid = "somebody";
request.addHeader("uid", uid);
MockHttpServletRequest request = mockRequest();
request.addHeader("wisceduudds", "A061234");
request.addHeader("wisceduudds", "B062345");
UWUserDetails result = filter.mapUser(request);
assertNotNull(result);
assertMockAttributes(result);
assertEquals(uid, result.getUsername());
assertEquals(2,result.getUddsMembership().size());
assertTrue(result.getUddsMembership().contains("A061234"));
assertTrue(result.getUddsMembership().contains("B062345"));
}
......@@ -212,4 +175,35 @@ public class PreauthenticatedUserDetailsAttributeMapperTest {
filter.setCustomLogoutSuffix("/luguot/");
assertEquals("/Shibboleth.sso/Logout?return=https://somewhere.wisc.edu/luguot/", filter.toCustomLogoutUrl("https://somewhere.wisc.edu/idp/shibboleth"));
}
/**
*
* @return a suitable {@link MockHttpServletRequest} for our tests
*/
protected MockHttpServletRequest mockRequest() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.addHeader("eppn", "somebody@wisc.edu");
request.addHeader("wiscedupvi", "1234567");
request.addHeader("uid", "somebody");
request.addHeader("cn", "some body");
request.addHeader("mail", "some.body@wisc.edu");
request.addHeader("wisceduisisemplid", "0000123456");
request.addHeader("Shib-Identity-Provider", "https://logintest.wisc.edu/idp/shibboleth");
return request;
}
/**
*
* @param result confirm expected values set by {@link #mockRequest()}
*/
protected void assertMockAttributes(UWUserDetails result) {
assertEquals("somebody", result.getUsername());
assertEquals("somebody@wisc.edu", result.getEppn());
assertEquals("1234567", result.getPvi());
assertEquals("some body", result.getFullName());
assertEquals("some.body@wisc.edu", result.getEmailAddress());
assertEquals("0000123456", result.getIsisEmplid());
assertEquals("/Shibboleth.sso/Logout?return=https://logintest.wisc.edu/logout/", result.getCustomLogoutUrl());
}
}
......@@ -38,7 +38,7 @@ public class UWUserDetailsAuthenticationFilterTest {
when(request.getHeader("cn")).thenReturn("Bucky Badger");
when(request.getHeaders("wisceduudds")).thenReturn(Collections.enumeration(Arrays.asList("A061234")));
when(request.getHeader("mail")).thenReturn("foo@foo.wisc.edu");
when(request.getHeaders("ismemberof")).thenReturn(Collections.enumeration(Arrays.asList("somegroup")));
when(request.getHeaders("isMemberOf")).thenReturn(Collections.enumeration(Arrays.asList("somegroup")));
UWUserDetails userDetails = filter.getPreAuthenticatedPrincipal(request);
assertEquals("bbadger", userDetails.getUsername());
assertEquals("bbadger@wisc.edu", userDetails.getEppn());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment