
com.confluex.mule.test.http.MockHttpRequestHandler.groovy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of confluex-mock-http Show documentation
Show all versions of confluex-mock-http Show documentation
Testing library for mocking interactions to external HTTP servers
package com.confluex.mule.test.http
import com.confluex.mule.test.http.event.MatchingEventLatch
import com.confluex.mule.test.http.matchers.HttpRequestMatcher
import groovy.transform.ToString
import org.mortbay.jetty.handler.AbstractHandler
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
@ToString(includeNames = true, includes = "mappings, currentMapping")
class MockHttpRequestHandler extends AbstractHandler {
List matchers = []
Map responders = [:]
List requests = []
List latches = []
void handle(String uri, HttpServletRequest request, HttpServletResponse response, int dispatch) {
def clientRequest = new ClientRequest(request)
requests << clientRequest
HttpRequestMatcher matcher = matchers.find { matcher ->
matcher.matches(clientRequest)
}
responders[matcher]?.render(response)
synchronized(latches) {
latches.each {
it.addEvent(clientRequest)
}
}
}
HttpResponderBuilder respondTo(HttpRequestMatcher matcher) {
matchers << matcher
HttpResponderBuilder builder = new HttpResponderBuilder()
responders[matcher] = builder.responder
return builder
}
boolean waitFor(HttpRequestMatcher matcher, int expected, long timeoutMs) {
def latch
synchronized(latches) {
latch = new MatchingEventLatch(matcher, expected)
requests.each { latch.addEvent(it) }
latches << latch
}
latch.await(timeoutMs)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy