ZATS Cookies
Since 1.1.0
Cookie validation
In order to provide handling the HTTP cookies for developers, ZATS Mimic introduces a group of methods on Client. ZATS Mimic seamlessly maintains cookies after connecting with a ZK application. We can read the current cookies and verify the behavior of the ZK application. The following is a typical example about cookie validation:
cookie.zul
<zk>
<div apply="CookieComposer">
<button id="change" label="change" />
</div>
</zk>
CookieComposer.java
public class CookieComposer extends GenericForwardComposer {
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
setCookie("foo", "bar");
}
public void onClick$change() {
setCookie("foo", "hello");
}
public void setCookie(String name, String value) {
HttpServletResponse resp = (HttpServletResponse) Executions.getCurrent().getNativeResponse();
resp.addCookie(new Cookie(name, value));
}
}
- Line 13: This will add a cookie when beginning.
- Line 16, 17: It changes the cookie from server-side when the user clicking the button.
Test.java
@Test
public void Test() {
Client client = Zats.newClient();
DesktopAgent desktop = client.connect("/cookie.zul");
Assert.assertEquals("bar", client.getCookie("foo"));
Assert.assertEquals(null, client.getCookie("not existed"));
desktop.query("#change").click();
Assert.assertEquals("hello", client.getCookie("foo"));
}
- Line 13, 14, 15: After connected to a ZUL page, we can get the cookies and verify them.
- Line 16, 17: ZATS Mimic maintains all cookies during any operations.
Cookie handling at test code
Usually, developers use cookies to keep some information between individual connections. For example, it can trace activities of users or remember some useful information for users. ZATS Mimic lets us add, change or remove cookies through the Client. That is useful for testing above cases. The following is a simple example about using cookie to remind last read page number:
cookie.zul
<zk>
<div apply="CookieComposer">
<label id="msg" value="first time reading" />
</div>
</zk>
- Line 3: It will remind user of last read page number.
CookieComposer
private Label msg;
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
Execution exec = Executions.getCurrent();
Cookie[] cookies = ((HttpServletRequest) exec.getNativeRequest()).getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("page".equals(cookie.getName()))
msg.setValue("last read page: " + cookie.getValue());
}
}
}
- Line 17, 18: It will show the last read page according to the stored cookie.
Test.java
@Test
public void test() {
Client client = Zats.newClient();
client.setCookie("page", "99");
DesktopAgent desktop = client.connect("/cookie.zul");
String msg = desktop.query("#msg").as(Label.class).getValue();
Assert.assertEquals("last read page: 99", msg);
}
- Line 12, 13, 14: We can append a new cookie before connecting with a page for testing.