    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.runas;
    17
    18  import junit.framework.TestCase;
    19
    20  import org.acegisecurity.GrantedAuthority;
    21  import org.acegisecurity.GrantedAuthorityImpl;
    22  import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
    23
    24
    25  /***
    26   * Tests {@link RunAsUserToken}.
    27   *
    28   * @author Ben Alex
    29   * @version $Id: RunAsUserTokenTests.java,v 1.3 2005/11/17 00:56:28 benalex Exp $
    30   */
    31  public class RunAsUserTokenTests extends TestCase {
    32      //~ Constructors ===========================================================
    33
    34      public RunAsUserTokenTests() {
    35          super();
    36      }
    37
    38      public RunAsUserTokenTests(String arg0) {
    39          super(arg0);
    40      }
    41
    42      //~ Methods ================================================================
    43
    44      public final void setUp() throws Exception {
    45          super.setUp();
    46      }
    47
    48      public static void main(String[] args) {
    49          junit.textui.TestRunner.run(RunAsUserTokenTests.class);
    50      }
    51
    52      public void testAuthenticationSetting() {
    53          RunAsUserToken token = new RunAsUserToken("my_password", "Test",
    54                  "Password",
    55                  new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    56                          "ROLE_TWO")}, UsernamePasswordAuthenticationToken.class);
    57          assertTrue(token.isAuthenticated());
    58          token.setAuthenticated(false);
    59          assertTrue(!token.isAuthenticated());
    60      }
    61
    62      public void testGetters() {
    63          RunAsUserToken token = new RunAsUserToken("my_password", "Test",
    64                  "Password",
    65                  new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    66                          "ROLE_TWO")}, UsernamePasswordAuthenticationToken.class);
    67          assertEquals("Test", token.getPrincipal());
    68          assertEquals("Password", token.getCredentials());
    69          assertEquals("my_password".hashCode(), token.getKeyHash());
    70          assertEquals(UsernamePasswordAuthenticationToken.class,
    71              token.getOriginalAuthentication());
    72      }
    73
    74      public void testNoArgsConstructor() {
    75          try {
    76              new RunAsUserToken();
    77              fail("Should have thrown IllegalArgumentException");
    78          } catch (IllegalArgumentException expected) {
    79              assertTrue(true);
    80          }
    81      }
    82
    83      public void testToString() {
    84          RunAsUserToken token = new RunAsUserToken("my_password", "Test",
    85                  "Password",
    86                  new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    87                          "ROLE_TWO")}, UsernamePasswordAuthenticationToken.class);
    88          assertTrue(token.toString().lastIndexOf("Original Class:") != -1);
    89      }
    90  }