/* * Copyright 2002-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.core.env; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.junit.Before; import org.junit.Test; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; /** * Unit tests for {@link SystemEnvironmentPropertySource}. * * @author Chris Beams * @author Juergen Hoeller * @since 3.1 */ public class SystemEnvironmentPropertySourceTests { private Map<String, Object> envMap; private PropertySource<?> ps; @Before public void setUp() { envMap = new HashMap<>(); ps = new SystemEnvironmentPropertySource("sysEnv", envMap); } @Test public void none() { assertThat(ps.containsProperty("a.key"), equalTo(false)); assertThat(ps.getProperty("a.key"), equalTo(null)); } @Test public void normalWithoutPeriod() { envMap.put("akey", "avalue"); assertThat(ps.containsProperty("akey"), equalTo(true)); assertThat(ps.getProperty("akey"), equalTo((Object)"avalue")); } @Test public void normalWithPeriod() { envMap.put("a.key", "a.value"); assertThat(ps.containsProperty("a.key"), equalTo(true)); assertThat(ps.getProperty("a.key"), equalTo((Object)"a.value")); } @Test public void withUnderscore() { envMap.put("a_key", "a_value"); assertThat(ps.containsProperty("a_key"), equalTo(true)); assertThat(ps.containsProperty("a.key"), equalTo(true)); assertThat(ps.getProperty("a_key"), equalTo((Object)"a_value")); assertThat( ps.getProperty("a.key"), equalTo((Object)"a_value")); } @Test public void withBothPeriodAndUnderscore() { envMap.put("a_key", "a_value"); envMap.put("a.key", "a.value"); assertThat(ps.getProperty("a_key"), equalTo((Object)"a_value")); assertThat( ps.getProperty("a.key"), equalTo((Object)"a.value")); } @Test public void withUppercase() { envMap.put("A_KEY", "a_value"); envMap.put("A_LONG_KEY", "a_long_value"); envMap.put("A_DOT.KEY", "a_dot_value"); envMap.put("A_HYPHEN-KEY", "a_hyphen_value"); assertThat(ps.containsProperty("A_KEY"), equalTo(true)); assertThat(ps.containsProperty("A.KEY"), equalTo(true)); assertThat(ps.containsProperty("A-KEY"), equalTo(true)); assertThat(ps.containsProperty("a_key"), equalTo(true)); assertThat(ps.containsProperty("a.key"), equalTo(true)); assertThat(ps.containsProperty("a-key"), equalTo(true)); assertThat(ps.containsProperty("A_LONG_KEY"), equalTo(true)); assertThat(ps.containsProperty("A.LONG.KEY"), equalTo(true)); assertThat(ps.containsProperty("A-LONG-KEY"), equalTo(true)); assertThat(ps.containsProperty("A.LONG-KEY"), equalTo(true)); assertThat(ps.containsProperty("A-LONG.KEY"), equalTo(true)); assertThat(ps.containsProperty("A_long_KEY"), equalTo(true)); assertThat(ps.containsProperty("A.long.KEY"), equalTo(true)); assertThat(ps.containsProperty("A-long-KEY"), equalTo(true)); assertThat(ps.containsProperty("A.long-KEY"), equalTo(true)); assertThat(ps.containsProperty("A-long.KEY"), equalTo(true)); assertThat(ps.containsProperty("A_DOT.KEY"), equalTo(true)); assertThat(ps.containsProperty("A-DOT.KEY"), equalTo(true)); assertThat(ps.containsProperty("A_dot.KEY"), equalTo(true)); assertThat(ps.containsProperty("A-dot.KEY"), equalTo(true)); assertThat(ps.containsProperty("A_HYPHEN-KEY"), equalTo(true)); assertThat(ps.containsProperty("A.HYPHEN-KEY"), equalTo(true)); assertThat(ps.containsProperty("A_hyphen-KEY"), equalTo(true)); assertThat(ps.containsProperty("A.hyphen-KEY"), equalTo(true)); assertThat(ps.getProperty("A_KEY"), equalTo("a_value")); assertThat(ps.getProperty("A.KEY"), equalTo("a_value")); assertThat(ps.getProperty("A-KEY"), equalTo("a_value")); assertThat(ps.getProperty("a_key"), equalTo("a_value")); assertThat(ps.getProperty("a.key"), equalTo("a_value")); assertThat(ps.getProperty("a-key"), equalTo("a_value")); assertThat(ps.getProperty("A_LONG_KEY"), equalTo("a_long_value")); assertThat(ps.getProperty("A.LONG.KEY"), equalTo("a_long_value")); assertThat(ps.getProperty("A-LONG-KEY"), equalTo("a_long_value")); assertThat(ps.getProperty("A.LONG-KEY"), equalTo("a_long_value")); assertThat(ps.getProperty("A-LONG.KEY"), equalTo("a_long_value")); assertThat(ps.getProperty("A_long_KEY"), equalTo("a_long_value")); assertThat(ps.getProperty("A.long.KEY"), equalTo("a_long_value")); assertThat(ps.getProperty("A-long-KEY"), equalTo("a_long_value")); assertThat(ps.getProperty("A.long-KEY"), equalTo("a_long_value")); assertThat(ps.getProperty("A-long.KEY"), equalTo("a_long_value")); assertThat(ps.getProperty("A_DOT.KEY"), equalTo("a_dot_value")); assertThat(ps.getProperty("A-DOT.KEY"), equalTo("a_dot_value")); assertThat(ps.getProperty("A_dot.KEY"), equalTo("a_dot_value")); assertThat(ps.getProperty("A-dot.KEY"), equalTo("a_dot_value")); assertThat(ps.getProperty("A_HYPHEN-KEY"), equalTo("a_hyphen_value")); assertThat(ps.getProperty("A.HYPHEN-KEY"), equalTo("a_hyphen_value")); assertThat(ps.getProperty("A_hyphen-KEY"), equalTo("a_hyphen_value")); assertThat(ps.getProperty("A.hyphen-KEY"), equalTo("a_hyphen_value")); } @Test @SuppressWarnings("serial") public void withSecurityConstraints() throws Exception { envMap = new HashMap<String, Object>() { @Override public boolean containsKey(Object key) { throw new UnsupportedOperationException(); } @Override public Set<String> keySet() { return new HashSet<>(super.keySet()); } }; envMap.put("A_KEY", "a_value"); ps = new SystemEnvironmentPropertySource("sysEnv", envMap) { @Override protected boolean isSecurityManagerPresent() { return true; } }; assertThat(ps.containsProperty("A_KEY"), equalTo(true)); assertThat(ps.getProperty("A_KEY"), equalTo((Object)"a_value")); } }