[NUI] Update webview TCs.
[platform/core/csapi/tizenfx.git] / test / Tizen.NUI.Tests / Tizen.NUI.Devel.Tests / testcase / internal / WebView / TSWebCookieManager.cs
1 using global::System;
2 using NUnit.Framework;
3 using NUnit.Framework.TUnit;
4 using Tizen.NUI.Components;
5 using Tizen.NUI.BaseComponents;
6 using System.Threading.Tasks;
7 using Tizen.WebView;
8
9 namespace Tizen.NUI.Devel.Tests
10 {
11     using tlog = Tizen.Log;
12
13     [TestFixture]
14     [Description("internal/WebView/WebCookieManager")]
15     public class InternalWebCookieManagerTest
16     {
17         private const string tag = "NUITEST";
18         private string urlForCookies = "https://www.baidu.com/";
19         private BaseComponents.WebView webview;
20         private WebCookieManager _cookieManager;
21         private const string cookiePath = "/home/owner/.cookie";
22
23         [SetUp]
24         public void Init()
25         {
26             tlog.Info(tag, "Init() is called!");
27             webview = new BaseComponents.WebView()
28             {
29                 Size = new Size(500, 200),
30             };
31             _cookieManager = webview.CookieManager;
32         }
33
34         [TearDown]
35         public void Destroy()
36         {
37             tlog.Info(tag, "Destroy() is being called!");
38             webview.Dispose();
39             tlog.Info(tag, "Destroy() is called!");
40         }
41
42         [Test]
43         [Category("P1")]
44         [Description("WebCookieManager CookieChanged.")]
45         [Property("SPEC", "Tizen.NUI.WebCookieManager.CookieAcceptPolicy A")]
46         [Property("SPEC_URL", "-")]
47         [Property("CRITERIA", "PRW")]
48         [Property("COVPARAM", "")]
49         [Property("AUTHOR", "guowei.wang@samsung.com")]
50         public async Task WebCookieManagerCookieAcceptPolicy()
51         {
52             tlog.Debug(tag, $"WebCookieManagerCookieAcceptPolicy START");
53
54             _cookieManager.CookieAcceptPolicy = WebCookieManager.CookieAcceptPolicyType.Never;
55             _cookieManager.SetPersistentStorage(cookiePath, WebCookieManager.CookiePersistentStorageType.SqlLite);
56
57             TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
58             EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
59             {
60                 tlog.Info(tag, "onLoadFinished is called!");
61                 tcs.TrySetResult(true);
62             };
63             webview.PageLoadFinished += onLoadFinished;
64
65             webview.LoadUrl(urlForCookies);
66             var result = await tcs.Task;
67             Assert.IsTrue(result, "PageLoadFinished event should be invoked");
68
69             // Make current thread (CPU) sleep...
70             await Task.Delay(1);
71
72             Assert.AreEqual(_cookieManager.CookieAcceptPolicy, WebCookieManager.CookieAcceptPolicyType.Never, "Failed to set CookieAcceptPolicyType!");
73
74             webview.PageLoadFinished -= onLoadFinished;
75
76             tlog.Debug(tag, $"WebCookieManagerCookieAcceptPolicy END (OK)");
77         }
78
79         [Test]
80         [Category("P1")]
81         [Description("WebCookieManager CookieChanged.")]
82         [Property("SPEC", "Tizen.NUI.WebCookieManager.CookieChanged E")]
83         [Property("SPEC_URL", "-")]
84         [Property("CRITERIA", "PRW")]
85         [Property("COVPARAM", "")]
86         [Property("AUTHOR", "guowei.wang@samsung.com")]
87         public async Task WebCookieManagerCookieChanged()
88         {
89             tlog.Debug(tag, $"WebCookieManagerCookieChanged START");
90
91             _cookieManager.CookieAcceptPolicy = WebCookieManager.CookieAcceptPolicyType.Always;
92             _cookieManager.SetPersistentStorage(cookiePath, WebCookieManager.CookiePersistentStorageType.SqlLite);
93
94             TaskCompletionSource<bool> tcs1 = new TaskCompletionSource<bool>(false);
95
96             EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
97             {
98                 tlog.Info(tag, "onLoadFinished is called!");
99                 tcs1.TrySetResult(true);
100             };
101             webview.PageLoadFinished += onLoadFinished;
102
103             webview.LoadUrl(urlForCookies);
104
105             var result = await tcs1.Task;
106             Assert.IsTrue(result, "PageLoadFinished event should be invoked");
107
108             // Make current thread (CPU) sleep...
109             await Task.Delay(1);
110
111             TaskCompletionSource<bool> tcs2 = new TaskCompletionSource<bool>(false);
112             EventHandler<EventArgs> onCookieChanged = (s, e) =>
113             {
114                 tlog.Info(tag, "CookieChanged is called!");
115                 tcs2.TrySetResult(true);
116             };
117
118             _cookieManager.CookieChanged += onCookieChanged;
119
120             const string addCookies = "document.cookie = \"username=John Doe\";";
121             BaseComponents.WebView.JavaScriptMessageHandler onEvaluateJS = (message) =>
122             {
123                 tlog.Info(tag, $"EvaluateJavaScript is called!, result is {message}");
124             };
125             webview.EvaluateJavaScript(addCookies, onEvaluateJS);
126
127             tlog.Info(tag, "EvaluateJavaScript is called!");
128
129             var result2 = await tcs2.Task;
130             Assert.IsTrue(result2, "CookieChanged event should be invoked");
131
132             // Make current thread (CPU) sleep...
133             await Task.Delay(1);
134
135             webview.PageLoadFinished -= onLoadFinished;
136             _cookieManager.CookieChanged -= onCookieChanged;
137
138             tlog.Debug(tag, $"WebCookieManagerCookieChanged END (OK)");
139         }
140
141         [Test]
142         [Category("P1")]
143         [Description("WebCookieManager CookieChanged.")]
144         [Property("SPEC", "Tizen.NUI.WebCookieManager.ClearCookies M")]
145         [Property("SPEC_URL", "-")]
146         [Property("CRITERIA", "PRW")]
147         [Property("COVPARAM", "")]
148         [Property("AUTHOR", "guowei.wang@samsung.com")]
149         public async Task WebCookieManagerClearCookies()
150         {
151             tlog.Debug(tag, $"WebCookieManagerClearCookies START");
152
153             _cookieManager.CookieAcceptPolicy = WebCookieManager.CookieAcceptPolicyType.Always;
154             _cookieManager.SetPersistentStorage(cookiePath, WebCookieManager.CookiePersistentStorageType.SqlLite);
155
156             TaskCompletionSource<bool> tcs1 = new TaskCompletionSource<bool>(false);
157             EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
158             {
159                 tlog.Info(tag, "onLoadFinished is called!");
160                 tcs1.TrySetResult(true);
161             };
162             webview.PageLoadFinished += onLoadFinished;
163
164             webview.LoadUrl(urlForCookies);
165             var result = await tcs1.Task;
166             Assert.IsTrue(result, "PageLoadFinished event should be invoked");
167
168             // Make current thread (CPU) sleep...
169             await Task.Delay(1);
170
171             // Clear cookies.
172             _cookieManager.ClearCookies(); //
173
174             webview.PageLoadFinished -= onLoadFinished;
175
176             tlog.Debug(tag, $"WebCookieManagerClearCookies END (OK)");
177         }
178     }
179 }