@Test public void should_match_post_method() throws Exception { server.post(by("foo")).response("bar"); running(server, new Runnable() { @Override public void run() throws IOException { assertThat(helper.postContent(root(), "foo"), is("bar")); } }); }
@Test public void should_match_form_value() throws Exception { server.post(eq(form("name"), "dreamhead")).response("foobar"); running(server, new Runnable() { @Override public void run() throws Exception { org.apache.http.client.fluent.Request request = Post(root()).bodyForm(new BasicNameValuePair("name", "dreamhead")); assertThat(helper.executeAsString(request), is("foobar")); } }); }
@Test(expected = HttpResponseException.class) public void should_not_response_for_post_while_http_method_is_not_post() throws Exception { server.post(by(uri("/foo"))).response("bar"); running(server, new Runnable() { @Override public void run() throws IOException { helper.get(remoteUrl("/foo")); } }); }
@Test public void should_match_form_value_with_charset() throws Exception { server = httpServer(port(), log()); server.post(eq(form("name"), "表单")).response("foobar"); running(server, new Runnable() { @Override public void run() throws Exception { org.apache.http.client.fluent.Request request = Post(root()).bodyForm(of(new BasicNameValuePair("name", "表单")), Charset.forName("GBK")); assertThat(helper.executeAsString(request), is("foobar")); } }); }
@Test public void should_failover_with_response_content() throws Exception { server.post(and(by(uri("/target")), by("proxy"))).response("proxy"); final File tempFile = tempFolder.newFile(); server.request(by(uri("/proxy"))).response(proxy(remoteUrl("/target"), failover(tempFile.getAbsolutePath()))); running(server, new Runnable() { @Override public void run() throws IOException { assertThat(helper.postContent(remoteUrl("/proxy"), "proxy"), is("proxy")); assertThat(Files.toString(tempFile, Charset.defaultCharset()), containsString("proxy")); } }); }
@Test public void should_verify_form_data() throws Exception { final HttpServer server = httpServer(port(), hit); server.post(eq(form("name"), "dreamhead")).response("foobar"); running(server, new Runnable() { @Override public void run() throws Exception { Request request = Request.Post(root()).bodyForm(new BasicNameValuePair("name", "dreamhead")); String content = helper.executeAsString(request); assertThat(content, is("foobar")); } }); hit.verify(eq(form("name"), "dreamhead"), once()); }
@Test public void should_failover_with_same_response_once() throws Exception { server = httpServer(port()); server.post(and(by(uri("/target")), by("proxy"))).response("0XCAFEBABE"); final File tempFile = tempFolder.newFile(); server.request(by(uri("/proxy"))).response(proxy(remoteUrl("/target"), failover(tempFile.getAbsolutePath()))); running(server, new Runnable() { @Override public void run() throws IOException { assertThat(helper.postContent(remoteUrl("/proxy"), "proxy"), is("0XCAFEBABE")); assertThat(helper.postContent(remoteUrl("/proxy"), "proxy"), is("0XCAFEBABE")); assertThat(Files.toString(tempFile, Charset.defaultCharset()), countString("/proxy", 1)); } }); }
@Test public void should_failover_with_many_response_content() throws Exception { server.get(by(uri("/target"))).response("get_proxy"); server.post(and(by(uri("/target")), by("proxy"))).response("post_proxy"); final File tempFile = tempFolder.newFile(); server.request(by(uri("/proxy"))).response(proxy(remoteUrl("/target"), failover(tempFile.getAbsolutePath()))); running(server, new Runnable() { @Override public void run() throws IOException { assertThat(helper.get(remoteUrl("/proxy")), is("get_proxy")); assertThat(helper.postContent(remoteUrl("/proxy"), "proxy"), is("post_proxy")); String failoverContent = Files.toString(tempFile, Charset.defaultCharset()); assertThat(failoverContent, containsString("get_proxy")); assertThat(failoverContent, containsString("post_proxy")); } }); }
@Test public void should_proxy_with_request_method() throws Exception { server.get(by(uri("/target"))).response("get_proxy"); server.post(and(by(uri("/target")), by("proxy"))).response("post_proxy"); server.request(and(by(uri("/target")), by(method("put")), by("proxy"))).response("put_proxy"); server.request(and(by(uri("/target")), by(method("delete")))).response("delete_proxy"); server.request(and(by(uri("/target")), by(method("head")))).response(status(200)); server.request(and(by(uri("/target")), by(method("options")))).response("options_proxy"); server.request(and(by(uri("/target")), by(method("trace")))).response("trace_proxy"); server.request(by(uri("/proxy"))).response(proxy(remoteUrl("/target"))); running(server, new Runnable() { @Override public void run() throws IOException { assertThat(helper.get(remoteUrl("/proxy")), is("get_proxy")); assertThat(helper.postContent(remoteUrl("/proxy"), "proxy"), is("post_proxy")); Request putRequest = Request.Put(remoteUrl("/proxy")).bodyString("proxy", ContentType.DEFAULT_TEXT); assertThat(helper.executeAsString(putRequest), is("put_proxy")); Request deleteRequest = Request.Delete(remoteUrl("/proxy")); assertThat(helper.executeAsString(deleteRequest), is("delete_proxy")); Request headRequest = Request.Head(remoteUrl("/proxy")); StatusLine headStatusLine = helper.execute(headRequest).getStatusLine(); assertThat(headStatusLine.getStatusCode(), is(200)); Request optionsRequest = Request.Options(remoteUrl("/proxy")); assertThat(helper.executeAsString(optionsRequest), is("options_proxy")); Request traceRequest = Request.Trace(remoteUrl("/proxy")); assertThat(helper.executeAsString(traceRequest), is("trace_proxy")); } }); }
@Before("@outline") public void outline() { server.server() .post(and( by(uri("/users")) )) .response(template("${req.content}")); server.start(); }
@Before("@file_upload") public void fileUpload() { server.server() .post(and( by(uri("/files")), contain(header("Content-Type"), "multipart/mixed") )) .response(text("uploaded")); server.start(); }
@Before("@variables or @code") public void mockForVariableTests() { server.server() .get(by(uri("/not_important"))) .response(json(of( "name", "panda", "age", 18, "iq", 80.0 ))); server.server() .get(by(uri("/simple_response"))) .response(text("SIMPLE_RESPONSE")); server.server() .post(and( by(uri("/users")), eq(jsonPath("$.name"), "someone"))) .response(status(201)) .response(json(of("user", "someone_created"))); server.start(); }
@Before("@faker") public void faker() { server.server() .post(and( by(uri("/faker/users")), exist(jsonPath("$.name")), not(startsWith(jsonPath("$.name"), "#{")), exist(jsonPath("$.city")), not(startsWith(jsonPath("$.city"), "#{")) )) .response("success"); server.server() .post(and( by(uri("/faker/users/escape")), exist(jsonPath("$.name")), not(startsWith(jsonPath("$.name"), "#{")), exist(jsonPath("$.city")), eq(jsonPath("$.city"), "#{Address.city}") )) .response("success"); server.start(); }