WireMockTestConfiguration.java

package fr.sii.ogham.testing.extension.spring;

import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
import com.github.tomakehurst.wiremock.junit5.WireMockExtension;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.context.annotation.Bean;

import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;

/**
 * Test configuration that registers {@link WireMockExtension} bean with port defined
 * by {@code wiremock.server.port} property.
 * 
 * @author Aurélien Baudet
 *
 */
@TestConfiguration
public class WireMockTestConfiguration {
	@Bean
	@ConditionalOnMissingBean(WireMockExtension.class)
	@ConditionalOnProperty("wiremock.server.port")
	public WireMockExtension randomPortWireMockExtension(@Value("${wiremock.server.port}") int port) {
		return new WireMockExtension.Builder()
				.options(wireMockConfig().port(port))
				.build();
	}
}