package com.github.dynamicextensionsalfresco.webscripts; import static org.junit.Assert.*; import java.io.IOException; import com.github.dynamicextensionsalfresco.webscripts.annotations.HttpMethod; import org.junit.Before; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.extensions.webscripts.Match; import org.springframework.extensions.webscripts.UriIndex; import org.springframework.extensions.webscripts.WebScript; import org.springframework.extensions.webscripts.WebScriptResponse; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.util.ClassUtils; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "webscript-integration-test-context.xml") public abstract class AbstractWebScriptAnnotationsTest { static String webScriptIdFor(final HttpMethod httpMethod, final Class<?> clazz, final String method) { return String.format("%s.%s.%s", ClassUtils.getQualifiedName(clazz), method, httpMethod.toString() .toLowerCase()); } /* Dependencies */ @Autowired private UriIndex uriIndex; @Before public void setup() { uriIndex.clear(); } /* Utility operations */ protected void handleRequest(final HttpMethod httpMethod, final String uri, final MockWebScriptRequest request, final WebScriptResponse response) { try { final Match match = uriIndex.findWebScript(httpMethod.name(), uri); assertNotNull(String.format("Could not find annotation-based WebScript for method '%s' and URI '%s'.", httpMethod, uri), match); final WebScript webScript = match.getWebScript(); webScript.execute(request.setServiceMatch(match), response); } catch (final IOException e) { throw new RuntimeException(e); } } protected void handleGet(final String uri, final MockWebScriptRequest request, final WebScriptResponse response) { handleRequest(HttpMethod.GET, uri, request, response); } protected void handleGet(final String uri, final MockWebScriptRequest request) { handleRequest(HttpMethod.GET, uri, request, Mockito.mock(WebScriptResponse.class)); } protected void handleGet(final String uri) { handleGet(uri, new MockWebScriptRequest()); } }