public void testLifecycleEventFiredForLongRunningConversation() throws Exception {
WebClient client = new WebClient();
// The current transient conversation is promoted to long-running
TextPage page = client.getPage(contextPath + "/begin");
assertTrue(page.getContent().contains("Initialized:true"));
assertTrue(page.getContent().contains("Destroyed:false"));
assertTrue(page.getContent().contains("cid:" + ConversationScopedBean.CID));
// The long-running conversation is reassociated
page = client.getPage(contextPath + "/display?cid=" + ConversationScopedBean.CID);
assertTrue(page.getContent().contains("Initialized:true"));
assertTrue(page.getContent().contains("Destroyed:false"));
assertTrue(page.getContent().contains("cid:" + ConversationScopedBean.CID));
page = client.getPage(contextPath + "/display?cid=" + ConversationScopedBean.CID);
assertTrue(page.getContent().contains("Initialized:true"));
assertTrue(page.getContent().contains("Destroyed:false"));
assertTrue(page.getContent().contains("cid:" + ConversationScopedBean.CID));
// The long-running conversation is marked transient
page = client.getPage(contextPath + "/end?cid=" + ConversationScopedBean.CID);
assertTrue(page.getContent().contains("Initialized:true"));
assertTrue(page.getContent().contains("Destroyed:false"));
assertTrue(page.getContent().contains("cid:null"));
// The current transient conversation is initialized
// The last long-running conversation was destroyed after the previous servlet request service() method completed
page = client.getPage(contextPath + "/display");
assertTrue(page.getContent().contains("Initialized:true"));
assertTrue(page.getContent().contains("Destroyed:true"));
assertTrue(page.getContent().contains("cid:null"));
}