fixes utc_blink_ewk_policy_decision_frame_get unittest
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_policy_decision_response_status_code_get_func.cpp
1 // Copyright 2014 Samsung Electronics. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "utc_blink_ewk_base.h"
6
7 class utc_blink_ewk_policy_decision_response_status_code_get : public utc_blink_ewk_base {
8 protected:
9   utc_blink_ewk_policy_decision_response_status_code_get()
10     : status_code(-1)
11   {
12   }
13
14   void LoadFinished(Evas_Object* webview)
15   {
16     EventLoopStop(utc_blink_ewk_base::Failure);
17   }
18
19   static void policy_response_decide(utc_blink_ewk_policy_decision_response_status_code_get* owner, Evas_Object* webview, Ewk_Policy_Decision* policy_decision)
20   {
21     ASSERT_TRUE(owner);
22
23     if (policy_decision && webview) {
24       const char* webview_url = ewk_view_url_get(webview);
25       const char* policy_url = ewk_policy_decision_url_get(policy_decision);
26
27       if (webview_url && policy_url && strcmp(policy_url, webview_url) == 0) {
28         owner->status_code = ewk_policy_decision_response_status_code_get(policy_decision);
29         owner->EventLoopStop(Success);
30       }
31     }
32   }
33
34 protected:
35   int status_code;
36 };
37
38 /**
39  * @brief Tests if response status code for policy decision is returned properly.
40  */
41 TEST_F(utc_blink_ewk_policy_decision_response_status_code_get, response_status_code)
42 {
43   {
44     // policy decision callback will be send for each element on the page, we're interested only in the first
45     // one as it is reponse for request url. Other responses may break TC logic
46     evas_object_smart_callback_auto cb(GetEwkWebView(), "policy,response,decide", ToSmartCallback(policy_response_decide), this);
47     ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), "https://www.enlightenment.org/")); // this url should not redirect
48     ASSERT_EQ(Success, EventLoopStart()) << "policy,response,decide callback not triggered with proper url";
49   }
50
51   ASSERT_EQ(200, status_code);
52   // Wait for load,finished
53   ASSERT_EQ(Failure, EventLoopStart());
54
55   {
56     // policy decision callback will be send for each element on the page, we're interested only in the first
57     // one as it is reponse for request url. Other responses may break TC logic
58     evas_object_smart_callback_auto cb(GetEwkWebView(), "policy,response,decide", ToSmartCallback(policy_response_decide), this);
59     // Load page that should produce 404 error
60     ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), "http://www.google.com/random_page_that_most_likely_does_not_exist"));
61     ASSERT_EQ(Success, EventLoopStart()) << "policy,response,decide callback not triggered with proper url";
62   }
63
64   ASSERT_EQ(404, status_code);
65   // Wait for load,finished
66   ASSERT_EQ(Failure, EventLoopStart());
67 }
68
69 /**
70  * @brief Tests if default value is returned for policy decision with navigation type
71  */
72 TEST_F(utc_blink_ewk_policy_decision_response_status_code_get, request_status_code)
73 {
74   evas_object_smart_callback_auto cb(GetEwkWebView(), "policy,navigation,decide", ToSmartCallback(policy_response_decide), this);
75   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), "http://www.google.com"));
76   ASSERT_EQ(Success, EventLoopStart());
77   ASSERT_EQ(0, status_code);
78 }
79
80 /**
81  * @brief Tests if function works properly in case of NULL of a policy decision
82  */
83 TEST_F(utc_blink_ewk_policy_decision_response_status_code_get, invalid_args)
84 {
85   ASSERT_EQ(0, ewk_policy_decision_response_status_code_get(NULL));
86 }