/** * Make sure nesting works right * * @throws ExpressionResolutionException */ @Test public void testNesting() { assertEquals("{blah}", resolver.resolve("${resolves.to.nothing:{blah}}")); assertEquals( "{blah}", resolver.resolve("${resolves.to.nothing,also.resolves.to.nothing:{blah}}")); assertEquals(System.getProperty("os.name"), resolver.resolve("${os.name:{blah}}")); assertEquals("{{fo{o}oo}}", resolver.resolve("${resolves.to.nothing:{{fo{o}oo}}}")); assertEquals( "blah{{fo{o}oo}}blah", resolver.resolve("${resolves.to.nothing:blah{{fo{o}oo}}}blah")); }
/** * Make sure to work with local configured properties that delegates to system properties * * @throws ExpressionResolutionException */ @Test public void testLocalDelegatedToSystemProperties() { Properties p = new Properties(System.getProperties()); p.setProperty("foo", "fooValue"); ExpressionResolver localResolver = new ExpressionResolver(p); assertEquals("fooValue", localResolver.resolve("${foo:default}")); assertEquals("default", localResolver.resolve("${baz:default}")); assertEquals( "System properties should be honored", System.getProperty("os.name"), localResolver.resolve("${os.name,foo}")); }
/** * Test an expression that contains more than one system property name to see that the second * property value is used when the first property is not defined. * * @throws ExpressionResolutionException */ @Test public void testSystemPropertyRefs() { System.setProperty("test.property2", "test.property2.value"); try { String value = "${test.property1,test.property2}"; assertEquals("test.property2.value", resolver.resolve(value)); } finally { System.clearProperty("test.property2"); } }
/** * Validate a single system property expression sees the system property value. * * @throws ExpressionResolutionException */ @Test public void testSystemPropertyRef() { System.setProperty("test.property1", "test.property1.value"); try { String value = "${test.property1}"; String result = resolver.resolve(value); assertEquals("test.property1.value", result); } finally { System.clearProperty("test.property1"); } }
/** * Test that a incomplete expression to a system property reference throws an ISE * * @throws ExpressionResolutionException */ @Test(expected = ExpressionResolutionException.class) public void testIncompleteReference() { System.setProperty("test.property1", "test.property1.value"); try { String value = "${test.property1"; String resolved = resolver.resolve(value); fail("Did not fail with ISE: " + resolved); } finally { System.clearProperty("test.property1"); } }
/** * Validate that a environment variable reference is resolved. * * @throws ExpressionResolutionException */ @Test public void testSystemEnvVarRef() { // Since we cannot set ENV vars from java, grab first one String[] envvar = findEnvVar(); if (envvar[0].length() == 0) { fail("No environment variables found, can't pass test."); return; } final String envvarValue = envvar[1]; Assert.assertNotNull("Expect non-null env var: " + envvar[0], envvarValue); final String value = "${" + envvar[0] + "}"; assertEquals(envvarValue, resolver.resolve(value)); }
/** * Validate that a environment variable reference is overriden by a system property of the same * name prefixed with "env.". * * @throws ExpressionResolutionException */ @Test public void testSystemEnvVarRefOverride() { // Since we cannot set ENV vars from java, grab first one String[] envvar = findEnvVar(); if (envvar[0].length() == 0) { fail("No environment variables found"); return; } // Override the var String sysPropName = envvar[0]; String overrideValue = sysPropName + "-override"; try { System.setProperty(sysPropName, overrideValue); final String envvarValue = envvar[1]; Assert.assertNotNull("Expect non-null env var: " + envvar[0], envvarValue); String value = "${" + envvar[0] + "}"; assertEquals(overrideValue, resolver.resolve(value)); } finally { System.clearProperty(sysPropName); } }
/** * Test that a valid expression to a system property reference which has no definition throws an * ISE * * @throws ExpressionResolutionException */ @Test(expected = ExpressionResolutionException.class) public void testUnresolvedReference() { String value = "${no-such-system-property}"; String resolved = resolver.resolve(value); fail("Did not fail with ISE: " + resolved); }
@Test public void testCanonicalResolver() { assertEquals("some expression", resolver.resolve("some expression")); }
@Test public void testResolverWithNullExpression() { assertEquals(null, resolver.resolve(null)); }
@Test public void testResolverWithBlankExpression() { assertEquals("", resolver.resolve("")); }
/** * Validate that a property * * @throws ExpressionResolutionException */ @Test public void testRecursiveProperty() { final String value = "${test.property1,test.property2:defaultValue}"; assertEquals(resolver.resolve(value), "defaultValue"); }
/** * Validate that a system property expression for a property with no value and a default provides * sees the default value. * * @throws ExpressionResolutionException */ @Test public void testSystemPropertyRefDefault() { final String value = "${test.property2:test.property2.default.value}"; assertEquals("test.property2.default.value", resolver.resolve(value)); }