    1   /* Copyright 2004, 2005 Acegi Technology Pty Limited
    2    *
    3    * Licensed under the Apache License, Version 2.0 (the "License");
    4    * you may not use this file except in compliance with the License.
    5    * You may obtain a copy of the License at
    6    *
    7    *     http://www.apache.org/licenses/LICENSE-2.0
    8    *
    9    * Unless required by applicable law or agreed to in writing, software
    10   * distributed under the License is distributed on an "AS IS" BASIS,
    11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12   * See the License for the specific language governing permissions and
    13   * limitations under the License.
    14   */
    15
    16  package org.acegisecurity.taglibs.authz;
    17
    18  import junit.framework.TestCase;
    19
    20  import org.acegisecurity.GrantedAuthority;
    21  import org.acegisecurity.GrantedAuthorityImpl;
    22  import org.acegisecurity.context.SecurityContextHolder;
    23  import org.acegisecurity.context.SecurityContextImpl;
    24  import org.acegisecurity.providers.TestingAuthenticationToken;
    25
    26  import javax.servlet.jsp.JspException;
    27  import javax.servlet.jsp.tagext.Tag;
    28
    29
    30  /***
    31   * DOCUMENT ME!
    32   *
    33   * @author Francois Beausoleil
    34   * @version $Id: AuthorizeTagAttributeTests.java,v 1.8 2005/11/17 00:55:51 benalex Exp $
    35   */
    36  public class AuthorizeTagAttributeTests extends TestCase {
    37      //~ Instance fields ========================================================
    38
    39      private final AuthorizeTag authorizeTag = new AuthorizeTag();
    40      private TestingAuthenticationToken currentUser;
    41
    42      //~ Methods ================================================================
    43
    44      public void testAssertsIfAllGrantedSecond() throws JspException {
    45          authorizeTag.setIfAllGranted("ROLE_SUPERVISOR,ROLE_SUPERTELLER");
    46          authorizeTag.setIfAnyGranted("ROLE_RESTRICTED");
    47          assertEquals("prevents request - principal is missing ROLE_SUPERTELLER",
    48              Tag.SKIP_BODY, authorizeTag.doStartTag());
    49      }
    50
    51      public void testAssertsIfAnyGrantedLast() throws JspException {
    52          authorizeTag.setIfAnyGranted("ROLE_BANKER");
    53          assertEquals("prevents request - principal is missing ROLE_BANKER",
    54              Tag.SKIP_BODY, authorizeTag.doStartTag());
    55      }
    56
    57      public void testAssertsIfNotGrantedFirst() throws JspException {
    58          authorizeTag.setIfNotGranted("ROLE_RESTRICTED");
    59          authorizeTag.setIfAllGranted("ROLE_SUPERVISOR,ROLE_RESTRICTED");
    60          authorizeTag.setIfAnyGranted("ROLE_SUPERVISOR");
    61          assertEquals("prevents request - principal has ROLE_RESTRICTED",
    62              Tag.SKIP_BODY, authorizeTag.doStartTag());
    63      }
    64
    65      public void testAssertsIfNotGrantedIgnoresWhitespaceInAttribute()
    66          throws JspException {
    67          authorizeTag.setIfAnyGranted(
    68              "\tROLE_SUPERVISOR  \t, \r\n\t ROLE_TELLER ");
    69          assertEquals("allows request - principal has ROLE_SUPERVISOR",
    70              Tag.EVAL_BODY_INCLUDE, authorizeTag.doStartTag());
    71      }
    72
    73      public void testIfAllGrantedIgnoresWhitespaceInAttribute()
    74          throws JspException {
    75          authorizeTag.setIfAllGranted(
    76              "\nROLE_SUPERVISOR\t,ROLE_RESTRICTED\t\n\r ");
    77          assertEquals("allows request - principal has ROLE_RESTRICTED "
    78              + "and ROLE_SUPERVISOR", Tag.EVAL_BODY_INCLUDE,
    79              authorizeTag.doStartTag());
    80      }
    81
    82      public void testIfNotGrantedIgnoresWhitespaceInAttribute()
    83          throws JspException {
    84          authorizeTag.setIfNotGranted(" \t  ROLE_TELLER \r");
    85          assertEquals("allows request - principal does not have ROLE_TELLER",
    86              Tag.EVAL_BODY_INCLUDE, authorizeTag.doStartTag());
    87      }
    88
    89      protected void setUp() throws Exception {
    90          super.setUp();
    91
    92          currentUser = new TestingAuthenticationToken("abc", "123",
    93                  new GrantedAuthority[] {new GrantedAuthorityImpl(
    94                          "ROLE_SUPERVISOR"), new GrantedAuthorityImpl(
    95                          "ROLE_RESTRICTED"),});
    96
    97          SecurityContextHolder.getContext().setAuthentication(currentUser);
    98      }
    99
    100     protected void tearDown() throws Exception {
    101         SecurityContextHolder.setContext(new SecurityContextImpl());
    102     }
    103 }