0
아파치 httpclient LocalTestServer를 사용하여 WebDavClient (jackrabbit 기반)에 대한 통합 테스트를 작성하려고합니다. 나는 다음과 같은 blog에서 영감을 테스트 아래에 작성되었습니다 : 통합 아파치를 사용하여 webDav 클라이언트에 테스트 httpclient LocalTestServer
public class WebDAVClientIT {
private LocalTestServer server;
@Before
public void setup() throws Exception{
server = new LocalTestServer(null, null);
server.start();
//direct all requests to my handelr
server.register("/*", new WebDavHandler());
}
@Test
public void testUploadFileStringInputStreamString() throws Exception {
WebDAVClient webDavClient = new WebDAVClient();
//set the client user/pass etc
webDavClient.init();
byte[] data = "123,456,789,123,456,789".getBytes();
InputStream input = new ByteArrayInputStream(data);
Status uploadFileStatus = webDavClient.uploadFile("test/file.csv", input, "text/csv");
assertThat(uploadFileStatus.getStatusCode(), is(HttpStatus.SC_CREATED));
}
@After
public void distory() throws Exception {
server.stop();
}
}
나는 서버가 WebDAV 서버 같은 느낌 만들 것 요청 처리기를 만들었습니다.
public class WebDavHandler implements HttpRequestHandler {
private Map<String, String> resources;
public WebDavHandler() {
//map existing resources
resources = new HashMap<>();
}
@Override
public void handle(HttpRequest request, HttpResponse response,
HttpContext context) throws HttpException, IOException {
RequestLine requestLine = request.getRequestLine();
String method = requestLine.getMethod();
String uri = request.getRequestLine().getUri();
switch (method) {
case "GET":
if (resources.containsKey(uri)) {
response.setStatusCode(HttpStatus.SC_OK);
} else {
response.setStatusCode(HttpStatus.SC_NOT_FOUND);
}
break;
case "MKCOL":
if (resources.containsKey(uri)) {
response.setStatusCode(HttpStatus.SC_OK);
} else {
response.setStatusCode(HttpStatus.SC_CREATED);
resources.put(uri, uri);
}
break;
}
logger.info("Executing " + request);
}
}
지금 내 문제는 LocalTestServer 실제 WebDAV 서버가 아닌 및 WebDAV 지원하는 방법 중 일부는 LocalTestServer 예를 들어, 지원되지 않을 것입니다
[statusCode=501, statusText=Internal Server Error, responseString=MKCOL method not supported]
MkColMethod
어떻게 WebDAV를 실종 방법을 에뮬레이트 할 수있는 LocalTestServer을 확장 않습니다.
저는 httpclient 4.3.1을 사용하고 있으며, 4.4의 소스 코드를 보면 예제가 컴파일에 실패합니다. 4.3을 사용할 수 있습니까? –
가능해야합니다. 4.4보다 편리하게 사용할 수 있습니다. – oleg
connectionFactory를 설정하는 방법을 찾지 못했습니다. –