@Override protected void handle(Matcher matcher, String value, ArquillianDescriptor descriptor) { String containerName = matcher.group(1); String propertyName = matcher.group(2); final ContainerDef containerDef = descriptor.container(containerName); final String originalValue = containerDef.getContainerProperty(propertyName); if (value.contains(ORIGINAL_VALUE)) { containerDef.property(propertyName, value.replace(ORIGINAL_VALUE, originalValue != null ? originalValue : "")); } else { containerDef.property(propertyName, value); } } }
@Override protected void handle(Matcher matcher, String value, ArquillianDescriptor descriptor) { String containerName = matcher.group(1); String propertyName = matcher.group(2); final ContainerDef containerDef = descriptor.container(containerName); final String originalValue = containerDef.getContainerProperty(propertyName); if (value.contains(ORIGINAL_VALUE)) { containerDef.property(propertyName, value.replace(ORIGINAL_VALUE, originalValue != null ? originalValue : "")); } else { containerDef.property(propertyName, value); } } }
@Override protected void handle(Matcher matcher, String value, ArquillianDescriptor descriptor) { String groupName = matcher.group(1); String containerName = matcher.group(2); String propertyName = matcher.group(3); final ContainerDef containerDef = descriptor.group(groupName).container(containerName); final String originalValue = containerDef.getContainerProperty(propertyName); if (value.contains(ORIGINAL_VALUE)) { containerDef.property(propertyName, value.replace(ORIGINAL_VALUE, originalValue != null ? originalValue : "")); } else { containerDef.property(propertyName, value); } } }
@Override protected void handle(Matcher matcher, String value, ArquillianDescriptor descriptor) { String groupName = matcher.group(1); String containerName = matcher.group(2); String propertyName = matcher.group(3); final ContainerDef containerDef = descriptor.group(groupName).container(containerName); final String originalValue = containerDef.getContainerProperty(propertyName); if (value.contains(ORIGINAL_VALUE)) { containerDef.property(propertyName, value.replace(ORIGINAL_VALUE, originalValue != null ? originalValue : "")); } else { containerDef.property(propertyName, value); } } }
@Test public void should_replace_properties_with_classpath_location() throws Exception { // given String element = "arquillian_sysprop.xml"; ArquillianDescriptor desc = create() .container("daemon") .property("javaVmArguments", "-Djavax.net.ssl.trustStore=${classpath(" + element + ")}"); final ClasspathConfigurationPlaceholderResolver classpathConfigurationPlaceholderResolver = new ClasspathConfigurationPlaceholderResolver(); // when desc = classpathConfigurationPlaceholderResolver.resolve(desc); // then final String descString = desc.exportAsString(); final URL resource = Thread.currentThread().getContextClassLoader().getResource(element); assertXPath(descString, "/arquillian/container/configuration/property", String.format("-Djavax.net.ssl.trustStore=%s", resource.toString())); }
@Test public void should_not_replace_placeholder_if_classpath_resource_not_found() throws Exception { String element = "notfound.txt"; ArquillianDescriptor desc = create() .container("daemon") .property("javaVmArguments", "-Djavax.net.ssl.trustStore=${classpath(" + element + ")}"); final ClasspathConfigurationPlaceholderResolver classpathConfigurationPlaceholderResolver = new ClasspathConfigurationPlaceholderResolver(); // when desc = classpathConfigurationPlaceholderResolver.resolve(desc); // then final String descString = desc.exportAsString(); assertXPath(descString, "/arquillian/container/configuration/property", String.format("-Djavax.net.ssl.trustStore=${classpath(%s)}", element)); }
@Test public void shouldBeAbleToAddContainerWithConfigurationAndOverwriteProperty() throws Exception { desc = create() .container(CONTAINER_NAME_1) .property(PROPERTY_NAME_1, PROPERTY_VALUE_1) .property(PROPERTY_NAME_1, PROPERTY_VALUE_2) .exportAsString(); assertXPath(desc, "/arquillian/container[1]/@qualifier", CONTAINER_NAME_1); assertXPath(desc, "/arquillian/container[1]/configuration/property/@name", PROPERTY_NAME_1); assertXPath(desc, "/arquillian/container[1]/configuration/property/text()", PROPERTY_VALUE_2); ArquillianDescriptor descriptor = create(desc); Assert.assertEquals(1, descriptor.getContainers().size()); Assert.assertEquals(CONTAINER_NAME_1, descriptor.getContainers().get(0).getContainerName()); Assert.assertEquals(1, descriptor.getContainers().get(0).getContainerProperties().size()); Assert.assertEquals(PROPERTY_VALUE_2, descriptor.getContainers().get(0).getContainerProperties().get(PROPERTY_NAME_1)); Assert.assertEquals(PROPERTY_VALUE_2, descriptor.getContainers().get(0).getContainerProperty(PROPERTY_NAME_1)); }
@Test public void shouldBeAbleToAddContainerWithConfigurationAndOverwriteProperty() throws Exception { System.setProperty(KEY_PROPERTY_VALUE_1, PROPERTY_VALUE_1); System.setProperty(KEY_PROPERTY_VALUE_2, PROPERTY_VALUE_2); desc = create() .container(CONTAINER_NAME_1) .property(PROPERTY_NAME_1, setPropKey(KEY_PROPERTY_VALUE_1)) .property(PROPERTY_NAME_1, setPropKey(KEY_PROPERTY_VALUE_2)); desc = new SystemPropertiesConfigurationPlaceholderResolver().resolve(desc); final String descString = desc.exportAsString(); assertXPath(descString, "/arquillian/container[1]/@qualifier", CONTAINER_NAME_1); assertXPath(descString, "/arquillian/container[1]/configuration/property/@name", PROPERTY_NAME_1); assertXPath(descString, "/arquillian/container[1]/configuration/property/text()", PROPERTY_VALUE_2); ArquillianDescriptor descriptor = create(descString); Assert.assertEquals(1, descriptor.getContainers().size()); Assert.assertEquals(CONTAINER_NAME_1, descriptor.getContainers().get(0).getContainerName()); Assert.assertEquals(1, descriptor.getContainers().get(0).getContainerProperties().size()); Assert.assertEquals(PROPERTY_VALUE_2, descriptor.getContainers().get(0).getContainerProperties().get(PROPERTY_NAME_1)); }
@Test public void shouldBeAbleToCreatePrivateContainerConfiguration() throws Exception { // Override default configured class ServiceLoader serviceLoader = Mockito.mock(ServiceLoader.class); DeployableContainer<PrivateDummyContainerConfiguration> deployableContainer = Mockito.mock(DeployableContainer.class); Mockito.when(serviceLoader.onlyOne(Mockito.same(DeployableContainer.class))).thenReturn(deployableContainer); Mockito.when(deployableContainer.getConfigurationClass()).thenReturn(PrivateDummyContainerConfiguration.class); String name = "some-name"; String prop = "prop-value"; ContainerRegistry registry = new LocalContainerRegistry(injector.get()); registry.create(new ContainerDefImpl(ARQUILLIAN_XML).setContainerName(name) .property("property", prop), serviceLoader); Container container = registry.getContainer(new TargetDescription(name)); Assert.assertEquals( "Verify that the only registered container is returned as default", name, container.getName()); Assert.assertEquals( "Verify that the configuration was populated", prop, ((PrivateDummyContainerConfiguration) container.createDeployableConfiguration()).getProperty()); }
@Test public void should_not_replace_other_placeholders() throws Exception { ArquillianDescriptor desc = create() .container("daemon") .property("javaVmArguments", "-Djavax.net.ssl.trustStore=${env.LAUNCHER_TESTS_TRUSTSTORE_PATH}"); final ClasspathConfigurationPlaceholderResolver classpathConfigurationPlaceholderResolver = new ClasspathConfigurationPlaceholderResolver(); // when desc = classpathConfigurationPlaceholderResolver.resolve(desc); // then final String descString = desc.exportAsString(); assertXPath(descString, "/arquillian/container/configuration/property", "-Djavax.net.ssl.trustStore=${env.LAUNCHER_TESTS_TRUSTSTORE_PATH}"); }
.property(PROPERTY_NAME_1, setPropKey(KEY_PROPERTY_VALUE_1)) .container(CONTAINER_NAME_2) .property(PROPERTY_NAME_2, setPropKey(KEY_PROPERTY_VALUE_2)) .property(PROPERTY_NAME_4, setPropKey(KEY_ENV_NAME_1)); desc = new SystemPropertiesConfigurationPlaceholderResolver().resolve(desc); final String descString = desc.exportAsString();
@Test public void shouldBeAbleToAddContainerWithConfiguration() throws Exception { desc = create() .container(CONTAINER_NAME_1) .property(PROPERTY_NAME_1, PROPERTY_VALUE_1) .container(CONTAINER_NAME_2) .property(PROPERTY_NAME_2, PROPERTY_VALUE_2) .exportAsString(); assertXPath(desc, "/arquillian/container[1]/@qualifier", CONTAINER_NAME_1); assertXPath(desc, "/arquillian/container[1]/configuration/property/@name", PROPERTY_NAME_1); assertXPath(desc, "/arquillian/container[1]/configuration/property/text()", PROPERTY_VALUE_1); assertXPath(desc, "/arquillian/container[2]/@qualifier", CONTAINER_NAME_2); assertXPath(desc, "/arquillian/container[2]/configuration/property/@name", PROPERTY_NAME_2); assertXPath(desc, "/arquillian/container[2]/configuration/property/text()", PROPERTY_VALUE_2); ArquillianDescriptor descriptor = create(desc); Assert.assertEquals(2, descriptor.getContainers().size()); Assert.assertEquals(CONTAINER_NAME_1, descriptor.getContainers().get(0).getContainerName()); Assert.assertEquals(PROPERTY_VALUE_1, descriptor.getContainers().get(0).getContainerProperties().get(PROPERTY_NAME_1)); Assert.assertEquals(PROPERTY_VALUE_1, descriptor.getContainers().get(0).getContainerProperty(PROPERTY_NAME_1)); Assert.assertEquals(CONTAINER_NAME_2, descriptor.getContainers().get(1).getContainerName()); Assert.assertEquals(PROPERTY_VALUE_2, descriptor.getContainers().get(1).getContainerProperties().get(PROPERTY_NAME_2)); Assert.assertEquals(PROPERTY_VALUE_2, descriptor.getContainers().get(1).getContainerProperty(PROPERTY_NAME_2)); }
@Test public void shouldBeAbleToCreateContainerConfiguration() throws Exception { String name = "some-name"; String prop = "prop-value"; ContainerRegistry registry = new LocalContainerRegistry(injector.get()); registry.create(new ContainerDefImpl(ARQUILLIAN_XML).setContainerName(name) .property("property", prop), serviceLoader); Container container = registry.getContainer(new TargetDescription(name)); Assert.assertEquals( "Verify that the only registered container is returned as default", name, container.getName()); Assert.assertEquals( "Verify that the configuration was populated", prop, ((DummyContainerConfiguration) container.createDeployableConfiguration()).getProperty()); }
@Test public void shouldBeAbleToAddEverything() throws Exception { desc = create() .defaultProtocol(PROTOCOL_TYPE_1) .property(PROPERTY_VALUE_3, PROPERTY_VALUE_3) .container(CONTAINER_NAME_1) .property(PROPERTY_NAME_1, PROPERTY_VALUE_1) .dependency(DEPENDENCY_1) .protocol(PROTOCOL_TYPE_1) .property(PROPERTY_NAME_2, PROPERTY_VALUE_2) .group(GROUP_NAME_1) .container(CONTAINER_NAME_2) .property(PROPERTY_NAME_1, PROPERTY_VALUE_1) .dependency(DEPENDENCY_2) .protocol(PROTOCOL_TYPE_2) .property(PROPERTY_NAME_3, PROPERTY_VALUE_3) .group(GROUP_NAME_2) .container(CONTAINER_NAME_3) .protocol(PROTOCOL_TYPE_3) .property(PROPERTY_NAME_1, PROPERTY_VALUE_1) .container(CONTAINER_NAME_4) .extension(EXTENSION_NAME_1) .property(PROPERTY_NAME_1, PROPERTY_VALUE_2) .exportAsString(); }