diff --git a/web/src/test/java/org/springframework/security/web/access/intercept/DefaultFilterInvocationSecurityMetadataSourceTests.java b/web/src/test/java/org/springframework/security/web/access/intercept/DefaultFilterInvocationSecurityMetadataSourceTests.java index 5da376fda6..329f8854b4 100644 --- a/web/src/test/java/org/springframework/security/web/access/intercept/DefaultFilterInvocationSecurityMetadataSourceTests.java +++ b/web/src/test/java/org/springframework/security/web/access/intercept/DefaultFilterInvocationSecurityMetadataSourceTests.java @@ -180,6 +180,21 @@ public class DefaultFilterInvocationSecurityMetadataSourceTests { assertEquals(userAttrs, attrs); } + @Test + public void methodSpecificMatchTakesPrecdenceRegardlessOfOrdering() throws Exception { + // Unfortunate but unavoidable + LinkedHashMap requestMap = new LinkedHashMap(); + Collection userAttrs = SecurityConfig.createList("A"); + requestMap.put(new RequestKey("/secure/specific.html", null), SecurityConfig.createList("B")); + requestMap.put(new RequestKey("/secure/*.html", "GET"), userAttrs); + fids = new DefaultFilterInvocationSecurityMetadataSource(new AntUrlPathMatcher(), requestMap); + fids.setStripQueryStringFromUrls(true); + + FilterInvocation fi = createFilterInvocation("/secure/specific.html", "GET"); + Collection attrs = fids.getAttributes(fi); + assertEquals(userAttrs, attrs); + } + /** * Check fixes for SEC-321 */