package de.codecentric.mule.http;

import static org.junit.Assert.assertEquals;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.IntegrationTest;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.boot.test.TestRestTemplate;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import de.codecentric.mule.http.HttpTest.TestApplication;


/**
 * Simple test for Mule with a HTTP Endpoint
 * 
 * @author Dennis Schulte
 */
@SpringApplicationConfiguration(classes = TestApplication.class)
@RunWith(SpringJUnit4ClassRunner.class)
@IntegrationTest("mule.config=mule-http-config.xml")
public class HttpTest {

	@Test
	public void testHttpRequest() {
		// Given
		// When
		ResponseEntity<String> response = new TestRestTemplate().getForEntity("http://localhost:8081/echo", String.class);
		// Then
		assertEquals(HttpStatus.OK, response.getStatusCode());
		assertEquals("/echo", response.getBody());
	}
	
	@Configuration
	@EnableAutoConfiguration
	public static class TestApplication {
	}

}