ZATS Cookies"

From Documentation
m (correct highlight (via JWB))
 
(9 intermediate revisions by one other user not shown)
Line 16: Line 16:
  
 
'''CookieComposer.java'''
 
'''CookieComposer.java'''
<source lang="java" start="10" high="13, 16, 17">
+
<source lang="java" start="10" highlight="13, 16, 18">
public class CookieComposer extends GenericForwardComposer {
+
public class CookieComposer extends SelectorComposer<Component> {
 
public void doAfterCompose(Component comp) throws Exception {
 
public void doAfterCompose(Component comp) throws Exception {
 
super.doAfterCompose(comp);
 
super.doAfterCompose(comp);
Line 23: Line 23:
 
}
 
}
  
public void onClick$change() {
+
@Listen("onClick=#change")
 +
public void change() {
 
setCookie("foo", "hello");
 
setCookie("foo", "hello");
 
}
 
}
  
 
public void setCookie(String name, String value) {
 
public void setCookie(String name, String value) {
HttpServletResponse resp = (HttpServletResponse) Executions.getCurrent().getNativeResponse();
+
HttpServletResponse resp = (HttpServletResponse)Executions.getCurrent().getNativeResponse();
 
resp.addCookie(new Cookie(name, value));
 
resp.addCookie(new Cookie(name, value));
 
}
 
}
Line 34: Line 35:
 
</source>
 
</source>
 
* '''Line 13''': This will add a cookie when beginning.
 
* '''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.
+
* '''Line 16, 18''': It changes the cookie from server-side when the user clicking the button.
  
 
'''Test.java'''
 
'''Test.java'''
<source lang="java" start="10" high="13,14,15,16,17">
+
<source lang="java" start="10" highlight="13,14,15,16,17">
 
@Test
 
@Test
 
public void Test() {
 
public void Test() {
Line 48: Line 49:
 
}
 
}
 
</source>
 
</source>
* '''Line 13, 14, 15''': After connected to a ZUL page, we can get the cookies and verify them.
+
* '''Line 13-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.
+
* '''Line 16-17''': ZATS Mimic maintains all cookies during any operations.
  
== Cookie handling from client-side ==
+
== Set cookie in a test case ==
Besides applying cookies from the server-side, developers can also handle cookies from the client-side. In a ZK application, we can achieve the above behavior through the Client-side programming. Because ZATS Mimic doesn't perform the JavaScript code, it lets developers add, modify or remove cookies through <tt>Client</tt> in test code to simulate the Client-side programming.
+
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 <code>Client</code>. That is useful for testing above cases. The following is a simple example about using cookie to remind last read page number:
  
 
'''cookie.zul'''
 
'''cookie.zul'''
<source lang="xml" high="3">
+
<source lang="xml" highlight="3">
 
<zk>
 
<zk>
 
<div apply="CookieComposer">
 
<div apply="CookieComposer">
Line 62: Line 63:
 
</zk>
 
</zk>
 
</source>
 
</source>
* '''Line 3''': It will remind user of last read page number.
+
* '''Line 3''': It reminds user of last read page number here.
  
 
'''CookieComposer'''
 
'''CookieComposer'''
<source lang="java" start="10" high="17, 18">
+
<source lang="java" start="10" highlight="20,21">
private Label msg;
+
public class CookieComposer extends SelectorComposer<Component> {
public void doAfterCompose(Component comp) throws Exception {
+
@Wire
super.doAfterCompose(comp);
+
private Label msg;
Execution exec = Executions.getCurrent();
+
Cookie[] cookies = ((HttpServletRequest) exec.getNativeRequest()).getCookies();
+
public void doAfterCompose(Component comp) throws Exception {
if (cookies != null) {
+
super.doAfterCompose(comp);
for (Cookie cookie : cookies) {
+
Execution exec = Executions.getCurrent();
if ("page".equals(cookie.getName()))
+
Cookie[] cookies = ((HttpServletRequest)exec.getNativeRequest()).getCookies();
msg.setValue("last read page: " + cookie.getValue());
+
if(cookies != null) {
 +
for(Cookie cookie : cookies) {
 +
if("page".equals(cookie.getName()))
 +
msg.setValue("last read page: " + cookie.getValue());
 +
}
 
}
 
}
 
}
 
}
 
}
 
}
 
</source>
 
</source>
* '''Line 17, 18''': It will show the last read page according to the stored cookie.
+
* '''Line 20-21''': This will show the last read page according to the cookie stored at client-side.
  
 
'''Test.java'''
 
'''Test.java'''
<source lang="java" start="10" high="12, 13, 14">
+
<source lang="java" start="10" highlight="12, 13, 14">
 
@Test
 
@Test
 
public void test() {
 
public void test() {
Line 92: Line 97:
 
}
 
}
 
</source>
 
</source>
* '''Line 12, 13, 14''': We can append a new cookie before connecting with a ZK application. It can validate the business logic of the ZK application.
+
* '''Line 12-14''': We can append a new cookie before connecting with a page for testing.
  
 
{{ZATSEssentialsPageFooter}}
 
{{ZATSEssentialsPageFooter}}

Latest revision as of 02:59, 20 January 2022

WarningTriangle-32x32.png This page is under construction, so we cannot guarantee the accuracy of the content!

aowang



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 SelectorComposer<Component> {
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
		setCookie("foo", "bar");
	}

	@Listen("onClick=#change")
	public void 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, 18: 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-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.

Set cookie in a test case

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 reminds user of last read page number here.

CookieComposer

public class CookieComposer extends SelectorComposer<Component> {
	@Wire
	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 20-21: This will show the last read page according to the cookie stored at client-side.

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-14: We can append a new cookie before connecting with a page for testing.



Last Update : 2022/01/20

Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.