@SpecAssertions({ @SpecAssertion(section = "6.7.4", id = "aa") })
public void testLongRunningConversation() throws Exception {
WebClient client = new WebClient();
// begin conversation
TextPage initialPage = client.getPage(getPath("/begin", null));
String content = initialPage.getContent();
assertTrue(content.contains("message: Hello"));
assertTrue(content.contains("transient: false"));
String cid = getCid(content);
// verify conversation is not transient
{
TextPage page = client.getPage(getPath("/display", cid));
assertTrue(page.getContent().contains("message: Hello"));
assertTrue(page.getContent().contains("cid: [" + cid + "]"));
assertTrue(page.getContent().contains("transient: false"));
}
// modify conversation state
{
TextPage page = client.getPage(getPath("/set", cid) + "&message=Hi");
assertTrue(page.getContent().contains("message: Hi"));
assertTrue(page.getContent().contains("cid: [" + cid + "]"));
assertTrue(page.getContent().contains("transient: false"));
}
// verify conversation state
{
TextPage page = client.getPage(getPath("/display", cid));
assertTrue(page.getContent().contains("message: Hi"));
assertTrue(page.getContent().contains("cid: [" + cid + "]"));
assertTrue(page.getContent().contains("transient: false"));
}
// end conversation
{
TextPage page = client.getPage(getPath("/end", cid));
assertTrue(page.getContent().contains("message: Hi"));
assertTrue(page.getContent().contains("transient: true"));
}
// verify that the conversation can no longer be restored
{
client.setThrowExceptionOnFailingStatusCode(false);
Page page = client.getPage(getPath("/display", cid));
assertEquals(page.getWebResponse().getStatusCode(), 500);
}
}