package com.mastfrog.acteur;
import static com.google.common.net.MediaType.PLAIN_TEXT_UTF_8;
import com.mastfrog.giulius.tests.GuiceRunner;
import com.mastfrog.giulius.tests.TestWith;
import static com.mastfrog.netty.http.client.StateType.Closed;
import com.mastfrog.netty.http.test.harness.TestHarness;
import io.netty.handler.codec.http.HttpResponseStatus;
import static io.netty.handler.codec.http.HttpResponseStatus.CONFLICT;
import static io.netty.handler.codec.http.HttpResponseStatus.OK;
import org.joda.time.Duration;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
*
* @author tim
*/
@RunWith(GuiceRunner.class)
@TestWith(CompApp.Module.class)
public class ComprehensiveTest {
@Test(timeout = 20000)
public void testGets(TestHarness harness) throws Exception, Throwable {
System.out.println("A");
harness.post("echo").log().setBody("Echo this back to me", PLAIN_TEXT_UTF_8)
.setTimeout(Duration.standardSeconds(30)).go()
.throwIfError()
.assertStatus(OK)
.assertContent("Echo this back to me");
harness.get("iter").log().addQueryPair("iters", "5").setTimeout(Duration.standardSeconds(30)).go()
.assertContent(iter("Iteration", 5))
.assertCode(200)
.throwIfError();
harness.get("iter").log().addQueryPair("iters", "7")
.addQueryPair("msg", "Hello ").setTimeout(Duration.standardSeconds(30)).go()
.assertCode(200)
.assertContent(iter("Hello", 7))
.throwIfError();
System.out.println("B");
harness.get("deferred").log().setTimeout(Duration.standardSeconds(10)).go()
.throwIfError()
.assertContent("I guess it's okay now")
.assertStatus(OK);
System.out.println("C");
harness.get("nothing").log().setTimeout(Duration.standardSeconds(39)).go()
.throwIfError()
.assertStatus(HttpResponseStatus.PAYMENT_REQUIRED)
.assertStateSeen(Closed);
System.out.println("D");
harness.get("branch").log().setTimeout(Duration.standardSeconds(50)).addQueryPair("a", "true").go()
.throwIfError()
.assertStatus(OK)
.assertContent("A");
System.out.println("E");
harness.get("branch").log().setTimeout(Duration.standardSeconds(50)).go()
.throwIfError()
.assertStatus(OK)
.assertContent("B");
harness.get("unchunked").log().addQueryPair("iters", "7")
.setTimeout(Duration.standardSeconds(20))
.go()
.assertCode(200)
.assertContent(iter("Iteration", 7))
.throwIfError()
.await()
;
System.out.println("A");
harness.post("echo").log().setBody("Echo this back to me", PLAIN_TEXT_UTF_8)
.setTimeout(Duration.standardSeconds(30)).go()
.assertStatus(OK)
.assertContent("Echo this back to me");
System.out.println("F");
harness.get("fail").log().setTimeout(Duration.standardSeconds(50)).go()
.assertStatus(CONFLICT)
.assertContent("Hoober");
harness.get("dyn").log().setTimeout(Duration.standardSeconds(10)).go()
.assertStatus(OK)
.assertContent("Dynamic acteur");
}
private String iter(String msg, int count) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i <= count; i++) {
sb.append(msg).append(" ").append(i).append("\n");
}
return sb.toString();
}
}