| 
					
				 | 
			
			
				@@ -0,0 +1,144 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Copyright 2012-2016 the original author or authors. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 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.web.access.expression; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.junit.Test; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.junit.runner.RunWith; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.mockito.InjectMocks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.mockito.Mock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.mockito.runners.MockitoJUnitRunner; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.expression.BeanResolver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.expression.ConstructorResolver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.expression.MethodResolver; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.expression.OperatorOverloader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.expression.PropertyAccessor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.expression.TypeComparator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.expression.TypeConverter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.expression.TypeLocator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.expression.TypedValue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import static org.assertj.core.api.Assertions.assertThat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import static org.mockito.Mockito.mock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import static org.mockito.Mockito.verify; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import static org.mockito.Mockito.when; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @author Rob Winch 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@RunWith(MockitoJUnitRunner.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class DelegatingEvaluationContextTests { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Mock 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	DelegatingEvaluationContext delegate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@InjectMocks 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	DelegatingEvaluationContext context; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void getRootObject() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		TypedValue expected = mock(TypedValue.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		when(this.delegate.getRootObject()).thenReturn(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assertThat(this.context.getRootObject()).isEqualTo(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void getConstructorResolvers() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<ConstructorResolver> expected = new ArrayList<ConstructorResolver>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		when(this.delegate.getConstructorResolvers()).thenReturn(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assertThat(this.context.getConstructorResolvers()).isEqualTo(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void getMethodResolvers() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<MethodResolver> expected = new ArrayList<MethodResolver>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		when(this.delegate.getMethodResolvers()).thenReturn(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assertThat(this.context.getMethodResolvers()).isEqualTo(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void getPropertyAccessors() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<PropertyAccessor> expected = new ArrayList<PropertyAccessor>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		when(this.delegate.getPropertyAccessors()).thenReturn(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assertThat(this.context.getPropertyAccessors()).isEqualTo(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void getTypeLocator() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		TypeLocator expected = mock(TypeLocator.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		when(this.delegate.getTypeLocator()).thenReturn(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assertThat(this.context.getTypeLocator()).isEqualTo(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void getTypeConverter() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		TypeConverter expected = mock(TypeConverter.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		when(this.delegate.getTypeConverter()).thenReturn(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assertThat(this.context.getTypeConverter()).isEqualTo(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void getTypeComparator() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		TypeComparator expected = mock(TypeComparator.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		when(this.delegate.getTypeComparator()).thenReturn(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assertThat(this.context.getTypeComparator()).isEqualTo(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void getOperatorOverloader() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		OperatorOverloader expected = mock(OperatorOverloader.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		when(this.delegate.getOperatorOverloader()).thenReturn(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assertThat(this.context.getOperatorOverloader()).isEqualTo(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void getBeanResolver() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		BeanResolver expected = mock(BeanResolver.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		when(this.delegate.getBeanResolver()).thenReturn(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assertThat(this.context.getBeanResolver()).isEqualTo(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void setVariable() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String name = "name"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String value = "value"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.context.setVariable(name, value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		verify(this.delegate).setVariable(name, value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void lookupVariable() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String name = "name"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String expected = "expected"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		when(this.delegate.lookupVariable(name)).thenReturn(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		assertThat(this.context.lookupVariable(name)).isEqualTo(expected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |