1   /* Copyright 2004, 2005, 2006 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;
17  
18  import junit.framework.TestCase;
19  
20  import java.util.ArrayList;
21  import java.util.Iterator;
22  
23  
24  /**
25   * Tests {@link ConfigAttributeEditor} and associated {@link ConfigAttributeDefinition}.
26   *
27   * @author Ben Alex
28   * @version $Id: ConfigAttributeEditorTests.java 1496 2006-05-23 13:38:33Z benalex $
29   */
30  public class ConfigAttributeEditorTests extends TestCase {
31      //~ Constructors ===================================================================================================
32  
33      public ConfigAttributeEditorTests() {
34          super();
35      }
36  
37      public ConfigAttributeEditorTests(String arg0) {
38          super(arg0);
39      }
40  
41      //~ Methods ========================================================================================================
42  
43      public static void main(String[] args) {
44          junit.textui.TestRunner.run(ConfigAttributeEditorTests.class);
45      }
46  
47      public final void setUp() throws Exception {
48          super.setUp();
49      }
50  
51      public void testCorrectOperation() {
52          ConfigAttributeEditor editor = new ConfigAttributeEditor();
53          editor.setAsText("HELLO,DOCTOR,NAME,YESTERDAY,TOMORROW");
54  
55          ConfigAttributeDefinition result = (ConfigAttributeDefinition) editor.getValue();
56          Iterator iter = result.getConfigAttributes();
57          int position = 0;
58  
59          while (iter.hasNext()) {
60              position++;
61              iter.next();
62          }
63  
64          assertEquals(5, position);
65  
66          assertEquals(5, result.size());
67  
68          assertTrue(result.contains(new SecurityConfig("HELLO")));
69          assertTrue(result.contains(new SecurityConfig("TOMORROW")));
70          assertFalse(result.contains(new SecurityConfig("FOOBAR")));
71      }
72  
73      public void testEmptyStringReturnsNull() {
74          ConfigAttributeEditor editor = new ConfigAttributeEditor();
75          editor.setAsText("");
76  
77          ConfigAttributeDefinition result = (ConfigAttributeDefinition) editor.getValue();
78          assertTrue(result == null);
79      }
80  
81      public void testEqualsHandlingWhenDifferentObjectTypes() {
82          ConfigAttributeDefinition def1 = new ConfigAttributeDefinition();
83          def1.addConfigAttribute(new SecurityConfig("A"));
84          def1.addConfigAttribute(new SecurityConfig("B"));
85  
86          assertTrue(!def1.equals("A_STRING"));
87      }
88  
89      public void testEqualsHandlingWhenExactlyEqual() {
90          ConfigAttributeDefinition def1 = new ConfigAttributeDefinition();
91          def1.addConfigAttribute(new SecurityConfig("A"));
92          def1.addConfigAttribute(new SecurityConfig("B"));
93  
94          ConfigAttributeDefinition def2 = new ConfigAttributeDefinition();
95          def2.addConfigAttribute(new SecurityConfig("A"));
96          def2.addConfigAttribute(new SecurityConfig("B"));
97  
98          assertEquals(def1, def2);
99      }
100 
101     public void testEqualsHandlingWhenOrderingNotEqual() {
102         ConfigAttributeDefinition def1 = new ConfigAttributeDefinition();
103         def1.addConfigAttribute(new SecurityConfig("A"));
104         def1.addConfigAttribute(new SecurityConfig("B"));
105 
106         ConfigAttributeDefinition def2 = new ConfigAttributeDefinition();
107         def2.addConfigAttribute(new SecurityConfig("B"));
108         def2.addConfigAttribute(new SecurityConfig("A"));
109 
110         assertTrue(!def1.equals(def2));
111     }
112 
113     public void testEqualsHandlingWhenTestObjectHasNoAttributes() {
114         ConfigAttributeDefinition def1 = new ConfigAttributeDefinition();
115         def1.addConfigAttribute(new SecurityConfig("A"));
116         def1.addConfigAttribute(new SecurityConfig("B"));
117 
118         ConfigAttributeDefinition def2 = new ConfigAttributeDefinition();
119 
120         assertTrue(!def1.equals(def2));
121         assertTrue(!def2.equals(def1));
122     }
123 
124     public void testNullReturnsNull() {
125         ConfigAttributeEditor editor = new ConfigAttributeEditor();
126         editor.setAsText(null);
127 
128         ConfigAttributeDefinition result = (ConfigAttributeDefinition) editor.getValue();
129         assertTrue(result == null);
130     }
131 
132     public void testStripsTrailingAndLeadingSpaces() {
133         ConfigAttributeEditor editor = new ConfigAttributeEditor();
134         editor.setAsText("  HELLO, DOCTOR,NAME,  YESTERDAY ,TOMORROW ");
135 
136         ConfigAttributeDefinition result = (ConfigAttributeDefinition) editor.getValue();
137         Iterator iter = result.getConfigAttributes();
138 
139         ArrayList list = new ArrayList();
140 
141         while (iter.hasNext()) {
142             list.add(iter.next());
143         }
144 
145         assertEquals("HELLO", ((ConfigAttribute) list.get(0)).getAttribute());
146         assertEquals("DOCTOR", ((ConfigAttribute) list.get(1)).getAttribute());
147         assertEquals("NAME", ((ConfigAttribute) list.get(2)).getAttribute());
148         assertEquals("YESTERDAY", ((ConfigAttribute) list.get(3)).getAttribute());
149         assertEquals("TOMORROW", ((ConfigAttribute) list.get(4)).getAttribute());
150     }
151 
152     public void testToString() {
153         ConfigAttributeEditor editor = new ConfigAttributeEditor();
154         editor.setAsText("KOALA,KANGAROO,EMU,WOMBAT");
155 
156         ConfigAttributeDefinition result = (ConfigAttributeDefinition) editor.getValue();
157         assertEquals("[KOALA, KANGAROO, EMU, WOMBAT]", result.toString());
158     }
159 }