package com.google.sitebricks.acceptance; import com.google.common.collect.ImmutableSet; import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.sitebricks.acceptance.util.AcceptanceTest; import com.google.sitebricks.client.Web; import com.google.sitebricks.client.WebResponse; import com.google.sitebricks.client.transport.Json; import com.google.sitebricks.conversion.Converter; import com.google.sitebricks.conversion.ConverterRegistry; import com.google.sitebricks.conversion.StandardTypeConverter; import com.google.sitebricks.example.RestfulWebServiceWithSubpaths2; import org.testng.annotations.Test; import static com.google.sitebricks.example.RestfulWebServiceWithSubpaths2.TOPLEVEL; /** * @author Dhanji R. Prasanna (dhanji@gmail.com) */ @Test(suiteName = AcceptanceTest.SUITE) public class RestfuWebServiceWithSubpaths2AcceptanceTest { public void shouldServiceTopLevelDynamicPath() { WebResponse response = createInjector() .getInstance(Web.class) .clientOf(AcceptanceTest.baseUrl() + "/superpath2/" + TOPLEVEL) .transports(String.class) .over(Json.class) .get(); assert TOPLEVEL.equals(response.toString()); } public void shouldServiceFirstLevelStaticPath() { WebResponse response = createInjector() .getInstance(Web.class) .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/subpath1") .transports(String.class) .over(Json.class) .post(""); assert RestfulWebServiceWithSubpaths2.PATH_1.equals(response.toString()) : response.toString(); } public void shouldServiceSameFirstLevelStaticPathWithPutMethod() { WebResponse response = createInjector() .getInstance(Web.class) .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/subpath1") .transports(String.class) .over(Json.class) .put(""); assert RestfulWebServiceWithSubpaths2.PATH_1_PUT.equals(response.toString()) : response.toString(); } public void shouldServiceSameFirstLevelStaticPathWithDeleteMethod() { WebResponse response = createInjector() .getInstance(Web.class) .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/subpath1") .transports(String.class) .over(Json.class) .delete(); assert RestfulWebServiceWithSubpaths2.PATH_1_DELETE.equals(response.toString()) : response.toString(); } public void shouldServiceTwoLevelDynamicPath() { WebResponse response = createInjector() .getInstance(Web.class) .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/more_junk") .transports(String.class) .over(Json.class) .post(""); assert "junk_more_junk".equals(response.toString()) : response.toString(); } public void shouldServiceTwoLevelDynamicPathWithDeleteMethod() { WebResponse response = createInjector() .getInstance(Web.class) .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/more_junk") .transports(String.class) .over(Json.class) .delete(); assert "delete:junk_more_junk".equals(response.toString()) : response.toString(); } public void shouldServiceThreeLevelDynamicPathWithDeleteMethod() { WebResponse response = createInjector() .getInstance(Web.class) .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/more_junk/most_junk") .transports(String.class) .over(Json.class) .delete(); assert "delete:junk_more_junk_most_junk".equals(response.toString()) : response.toString(); } public void shouldServiceThreeLevelDynamicPathWithPutMethod() { WebResponse response = createInjector() .getInstance(Web.class) .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/more_junk/most_junk") .transports(String.class) .over(Json.class) .put(""); assert "put:junk_more_junk_most_junk".equals(response.toString()) : response.toString(); } public void shouldServiceThreeLevelDynamicPathWithPostMethod() { WebResponse response = createInjector() .getInstance(Web.class) .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/more_junk/most_junk") .transports(String.class) .over(Json.class) .post(""); assert "post:junk_more_junk_most_junk".equals(response.toString()) : response.toString(); } public void shouldServiceThreeLevelDynamicPathWithGetMethod() { WebResponse response = createInjector() .getInstance(Web.class) .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/more_junk/most_junk") .transports(String.class) .over(Json.class) .get(); assert "get:junk_more_junk_most_junk".equals(response.toString()) : response.toString(); } private Injector createInjector() { return Guice.createInjector(new AbstractModule() { protected void configure() { bind(ConverterRegistry.class).toInstance(new StandardTypeConverter( ImmutableSet.<Converter>of())); } }); } // // public void shouldService4LevelMixedPathWithGetMethod() { // WebResponse response = createInjector() // .getInstance(Web.class) // .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/more_junk/most_junk/4l") // .transports(String.class) // .over(Json.class) // .get(); // // assert "4l:get:junk_more_junk_most_junk".equals(response.toString()) : response.toString(); // } // // public void shouldService4LevelMixedPathWithPostMethod() { // WebResponse response = createInjector() // .getInstance(Web.class) // .clientOf(AcceptanceTest.baseUrl() + "/superpath2/junk/more_junk/most_junk/4l") // .transports(String.class) // .over(Json.class) // .post(""); // // assert "4l:post:junk_more_junk_most_junk".equals(response.toString()) : response.toString(); // } }