diff --git a/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/BrokerProperties.java b/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/BrokerProperties.java new file mode 100644 index 0000000..5a48142 --- /dev/null +++ b/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/BrokerProperties.java @@ -0,0 +1,34 @@ +/* + * Copyright 2016-2018. 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.cloud.appbroker.acceptance; + +import java.util.List; +import reactor.util.function.Tuple2; + +class BrokerProperties { + + private List> properties; + + BrokerProperties(List> properties) { + this.properties = properties; + } + + List> getProperties() { + return properties; + } + +} diff --git a/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/BrokerPropertiesParameterResolver.java b/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/BrokerPropertiesParameterResolver.java new file mode 100644 index 0000000..d96f1d6 --- /dev/null +++ b/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/BrokerPropertiesParameterResolver.java @@ -0,0 +1,44 @@ +/* + * Copyright 2016-2018. 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.cloud.appbroker.acceptance; + +import java.lang.reflect.Field; +import java.util.Optional; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.api.extension.ParameterContext; +import org.junit.jupiter.api.extension.ParameterResolutionException; +import org.junit.jupiter.api.extension.ParameterResolver; +import org.springframework.util.ReflectionUtils; + + +class BrokerPropertiesParameterResolver implements ParameterResolver { + + @Override + public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { + return parameterContext.getParameter().getType() == BrokerProperties.class; + } + + @Override + public BrokerProperties resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { + Optional testInstance = extensionContext.getTestInstance(); + Field field = ReflectionUtils.findField(testInstance.get().getClass(), "properties"); + ReflectionUtils.makeAccessible(field); + BrokerProperties brokerProperties = (BrokerProperties)ReflectionUtils.getField(field, testInstance.get()); + return brokerProperties; + } + +} \ No newline at end of file diff --git a/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CloudFoundryAcceptanceTest.java b/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CloudFoundryAcceptanceTest.java index 9d0a8ba..3ab0fad 100644 --- a/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CloudFoundryAcceptanceTest.java +++ b/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CloudFoundryAcceptanceTest.java @@ -23,6 +23,7 @@ import java.util.Optional; import org.cloudfoundry.operations.applications.ApplicationEnvironments; import org.cloudfoundry.operations.applications.ApplicationSummary; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -34,8 +35,14 @@ import reactor.util.function.Tuple2; @SpringBootTest(classes = {CloudFoundryClientConfiguration.class, CloudFoundryService.class}) @ExtendWith(SpringExtension.class) +@ExtendWith(BrokerPropertiesParameterResolver.class) class CloudFoundryAcceptanceTest { + @BeforeEach + void setUp(BrokerProperties brokerProperties) { + initializeBroker(brokerProperties.getProperties()); + } + private static final String SAMPLE_BROKER_APP_NAME = "sample-broker"; private static final String BROKER_NAME = "sample-broker-name"; private static final String SERVICE_NAME = "example"; diff --git a/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CreateInstanceAcceptanceTest.java b/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CreateInstanceAcceptanceTest.java index 6dfc75e..86e2069 100644 --- a/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CreateInstanceAcceptanceTest.java +++ b/spring-cloud-app-broker-acceptance-tests/src/test/java/org.springframework.cloud.appbroker.acceptance/CreateInstanceAcceptanceTest.java @@ -19,7 +19,6 @@ package org.springframework.cloud.appbroker.acceptance; import java.util.Optional; import org.cloudfoundry.operations.applications.ApplicationEnvironments; import org.cloudfoundry.operations.applications.ApplicationSummary; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -31,18 +30,14 @@ class CreateInstanceAcceptanceTest extends CloudFoundryAcceptanceTest { private static final String BROKER_SAMPLE_APP_CREATE = "broker-sample-app-create"; - @BeforeEach - void setUp() { - initializeBroker(newArrayList( + private static final BrokerProperties properties = new BrokerProperties(newArrayList( of("spring.cloud.appbroker.apps[0].name", BROKER_SAMPLE_APP_CREATE), of("spring.cloud.appbroker.apps[0].path", "classpath:demo.jar"), of("spring.cloud.appbroker.apps[0].environment.ENV_VAR_1", "value1"), of("spring.cloud.appbroker.apps[0].environment.ENV_VAR_2", "value2"), of("spring.cloud.appbroker.apps[0].properties.spring.cloud.deployer.memory", "2G"), of("spring.cloud.appbroker.apps[0].properties.spring.cloud.deployer.count", "2") - ) - ); - } + )); @Test void shouldPushAppWhenCreateServiceCalled() {