    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.userdetails;
    17
    18  import junit.framework.TestCase;
    19
    20  import org.acegisecurity.GrantedAuthority;
    21  import org.acegisecurity.GrantedAuthorityImpl;
    22  import org.acegisecurity.userdetails.User;
    23  import org.acegisecurity.userdetails.UserDetails;
    24
    25
    26  /***
    27   * Tests {@link User}.
    28   *
    29   * @author Ben Alex
    30   * @version $Id: UserTests.java,v 1.1 2005/11/29 13:10:07 benalex Exp $
    31   */
    32  public class UserTests extends TestCase {
    33      //~ Constructors ===========================================================
    34
    35      public UserTests() {
    36          super();
    37      }
    38
    39      public UserTests(String arg0) {
    40          super(arg0);
    41      }
    42
    43      //~ Methods ================================================================
    44
    45      public final void setUp() throws Exception {
    46          super.setUp();
    47      }
    48
    49      public static void main(String[] args) {
    50          junit.textui.TestRunner.run(UserTests.class);
    51      }
    52
    53      public void testEquals() {
    54          User user1 = new User("marissa", "koala", true, true, true, true,
    55                  new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    56                          "ROLE_TWO")});
    57
    58          assertFalse(user1.equals(null));
    59          assertFalse(user1.equals("A STRING"));
    60
    61          assertTrue(user1.equals(user1));
    62
    63          assertTrue(user1.equals(
    64                  new User("marissa", "koala", true, true, true, true,
    65                      new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    66                              "ROLE_TWO")})));
    67
    68          assertFalse(user1.equals(
    69                  new User("DIFFERENT_USERNAME", "koala", true, true, true, true,
    70                      new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    71                              "ROLE_TWO")})));
    72
    73          assertFalse(user1.equals(
    74                  new User("marissa", "DIFFERENT_PASSWORD", true, true, true,
    75                      true,
    76                      new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    77                              "ROLE_TWO")})));
    78
    79          assertFalse(user1.equals(
    80                  new User("marissa", "koala", false, true, true, true,
    81                      new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    82                              "ROLE_TWO")})));
    83
    84          assertFalse(user1.equals(
    85                  new User("marissa", "koala", true, false, true, true,
    86                      new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    87                              "ROLE_TWO")})));
    88
    89          assertFalse(user1.equals(
    90                  new User("marissa", "koala", true, true, false, true,
    91                      new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    92                              "ROLE_TWO")})));
    93
    94          assertFalse(user1.equals(
    95                  new User("marissa", "koala", true, true, true, false,
    96                      new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    97                              "ROLE_TWO")})));
    98
    99          assertFalse(user1.equals(
    100                 new User("marissa", "koala", true, true, true, true,
    101                     new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE")})));
    102     }
    103
    104     public void testNoArgConstructor() {
    105         try {
    106             new User();
    107             fail("Should have thrown IllegalArgumentException");
    108         } catch (IllegalArgumentException expected) {
    109             assertTrue(true);
    110         }
    111     }
    112
    113     public void testNullValuesRejected() throws Exception {
    114         try {
    115             UserDetails user = new User(null, "koala", true, true, true, true,
    116                     new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    117                             "ROLE_TWO")});
    118             fail("Should have thrown IllegalArgumentException");
    119         } catch (IllegalArgumentException expected) {
    120             assertTrue(true);
    121         }
    122
    123         try {
    124             UserDetails user = new User("marissa", null, true, true, true,
    125                     true,
    126                     new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    127                             "ROLE_TWO")});
    128             fail("Should have thrown IllegalArgumentException");
    129         } catch (IllegalArgumentException expected) {
    130             assertTrue(true);
    131         }
    132
    133         try {
    134             UserDetails user = new User("marissa", "koala", true, true, true,
    135                     true, null);
    136             fail("Should have thrown IllegalArgumentException");
    137         } catch (IllegalArgumentException expected) {
    138             assertTrue(true);
    139         }
    140
    141         try {
    142             UserDetails user = new User("marissa", "koala", true, true, true,
    143                     true,
    144                     new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), null});
    145             fail("Should have thrown IllegalArgumentException");
    146         } catch (IllegalArgumentException expected) {
    147             assertTrue(true);
    148         }
    149     }
    150
    151     public void testNullWithinGrantedAuthorityElementIsRejected()
    152         throws Exception {
    153         try {
    154             UserDetails user = new User(null, "koala", true, true, true, true,
    155                     new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    156                             "ROLE_TWO"), null, new GrantedAuthorityImpl(
    157                             "ROLE_THREE")});
    158             fail("Should have thrown IllegalArgumentException");
    159         } catch (IllegalArgumentException expected) {
    160             assertTrue(true);
    161         }
    162     }
    163
    164     public void testUserGettersSetter() throws Exception {
    165         UserDetails user = new User("marissa", "koala", true, true, true, true,
    166                 new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    167                         "ROLE_TWO")});
    168         assertEquals("marissa", user.getUsername());
    169         assertEquals("koala", user.getPassword());
    170         assertTrue(user.isEnabled());
    171         assertEquals(new GrantedAuthorityImpl("ROLE_ONE"),
    172             user.getAuthorities()[0]);
    173         assertEquals(new GrantedAuthorityImpl("ROLE_TWO"),
    174             user.getAuthorities()[1]);
    175         assertTrue(user.toString().indexOf("marissa") != -1);
    176     }
    177
    178     public void testUserIsEnabled() throws Exception {
    179         UserDetails user = new User("marissa", "koala", false, true, true,
    180                 true,
    181                 new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_ONE"), new GrantedAuthorityImpl(
    182                         "ROLE_TWO")});
    183         assertTrue(!user.isEnabled());
    184     }
    185 }