From 31804c0e410e3e168b8bec52c94be4ea334bdbd0 Mon Sep 17 00:00:00 2001 From: Nicholas Blair <nicholas.blair@wisc.edu> Date: Tue, 13 Sep 2016 11:48:39 -0500 Subject: [PATCH] fix: filter test needs to use correct case for 'isMemberOf' Also refactored AttributesMapper test to remove duplicate code and include test for 'blank' values. --- ...ticatedUserDetailsAttributeMapperTest.java | 118 +++++++++--------- ...UWUserDetailsAuthenticationFilterTest.java | 2 +- 2 files changed, 57 insertions(+), 63 deletions(-) diff --git a/uw-spring-security-core/src/test/java/edu/wisc/uwss/preauth/PreauthenticatedUserDetailsAttributeMapperTest.java b/uw-spring-security-core/src/test/java/edu/wisc/uwss/preauth/PreauthenticatedUserDetailsAttributeMapperTest.java index 9f6ee0d..76f0501 100644 --- a/uw-spring-security-core/src/test/java/edu/wisc/uwss/preauth/PreauthenticatedUserDetailsAttributeMapperTest.java +++ b/uw-spring-security-core/src/test/java/edu/wisc/uwss/preauth/PreauthenticatedUserDetailsAttributeMapperTest.java @@ -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()); + } } diff --git a/uw-spring-security-core/src/test/java/edu/wisc/uwss/preauth/UWUserDetailsAuthenticationFilterTest.java b/uw-spring-security-core/src/test/java/edu/wisc/uwss/preauth/UWUserDetailsAuthenticationFilterTest.java index 52bb7f5..539d7fb 100644 --- a/uw-spring-security-core/src/test/java/edu/wisc/uwss/preauth/UWUserDetailsAuthenticationFilterTest.java +++ b/uw-spring-security-core/src/test/java/edu/wisc/uwss/preauth/UWUserDetailsAuthenticationFilterTest.java @@ -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()); -- GitLab