/*
* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.security.access;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
import org.springframework.security.access.ConfigAttribute;
import org.springframework.security.access.SecurityConfig;
/**
* Tests {@link SecurityConfig}.
*
* @author Ben Alex
*/
public class SecurityConfigTests {
// ~ Methods
// ========================================================================================================
@Test
public void testHashCode() {
SecurityConfig config = new SecurityConfig("TEST");
assertThat(config.hashCode()).isEqualTo("TEST".hashCode());
}
@Test(expected = IllegalArgumentException.class)
public void testCannotConstructWithNullAttribute() {
new SecurityConfig(null); // SEC-727
}
@Test(expected = IllegalArgumentException.class)
public void testCannotConstructWithEmptyAttribute() {
new SecurityConfig(""); // SEC-727
}
@Test(expected = NoSuchMethodException.class)
public void testNoArgConstructorDoesntExist() throws Exception {
SecurityConfig.class.getDeclaredConstructor((Class[]) null);
}
@Test
public void testObjectEquals() throws Exception {
SecurityConfig security1 = new SecurityConfig("TEST");
SecurityConfig security2 = new SecurityConfig("TEST");
assertThat(security2).isEqualTo(security1);
// SEC-311: Must observe symmetry requirement of Object.equals(Object) contract
String securityString1 = "TEST";
assertThat(securityString1).isNotSameAs(security1);
String securityString2 = "NOT_EQUAL";
assertThat(!security1.equals(securityString2)).isTrue();
SecurityConfig security3 = new SecurityConfig("NOT_EQUAL");
assertThat(!security1.equals(security3)).isTrue();
MockConfigAttribute mock1 = new MockConfigAttribute("TEST");
assertThat(security1).isEqualTo(mock1);
MockConfigAttribute mock2 = new MockConfigAttribute("NOT_EQUAL");
assertThat(security1).isNotEqualTo(mock2);
Integer int1 = Integer.valueOf(987);
assertThat(security1).isNotEqualTo(int1);
}
@Test
public void testToString() {
SecurityConfig config = new SecurityConfig("TEST");
assertThat(config.toString()).isEqualTo("TEST");
}
// ~ Inner Classes
// ==================================================================================================
private class MockConfigAttribute implements ConfigAttribute {
private String attribute;
public MockConfigAttribute(String configuration) {
this.attribute = configuration;
}
public String getAttribute() {
return this.attribute;
}
}
}