Upstream version 11.39.250.0
[platform/framework/web/crosswalk.git] / src / chrome / test / chromedriver / chrome / devtools_http_client_unittest.cc
1 // Copyright (c) 2013 The Chromium Authors. 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 <string>
6
7 #include "base/compiler_specific.h"
8 #include "base/values.h"
9 #include "chrome/test/chromedriver/chrome/devtools_http_client.h"
10 #include "chrome/test/chromedriver/chrome/status.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace {
14
15 void ExpectEqual(const WebViewInfo& info1,
16                  const WebViewInfo& info2) {
17   EXPECT_EQ(info1.id, info2.id);
18   EXPECT_EQ(info1.type, info2.type);
19   EXPECT_EQ(info1.url, info2.url);
20   EXPECT_EQ(info1.debugger_url, info2.debugger_url);
21 }
22
23 }  // namespace
24
25 TEST(ParseWebViewsInfo, Normal) {
26   WebViewsInfo views_info;
27   Status status = internal::ParseWebViewsInfo(
28       "[{\"type\": \"page\", \"id\": \"1\", \"url\": \"http://page1\","
29       "  \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]",
30       &views_info);
31   ASSERT_TRUE(status.IsOk());
32   ASSERT_EQ(1u, views_info.GetSize());
33   ExpectEqual(
34       WebViewInfo(
35           "1", "ws://debugurl1", "http://page1", WebViewInfo::kPage),
36       *views_info.GetForId("1"));
37 }
38
39 TEST(ParseWebViewsInfo, Multiple) {
40   WebViewsInfo views_info;
41   Status status = internal::ParseWebViewsInfo(
42       "[{\"type\": \"page\", \"id\": \"1\", \"url\": \"http://page1\","
43       "  \"webSocketDebuggerUrl\": \"ws://debugurl1\"},"
44       " {\"type\": \"other\", \"id\": \"2\", \"url\": \"http://page2\","
45       "  \"webSocketDebuggerUrl\": \"ws://debugurl2\"}]",
46       &views_info);
47   ASSERT_TRUE(status.IsOk());
48   ASSERT_EQ(2u, views_info.GetSize());
49   ExpectEqual(
50       WebViewInfo(
51           "1", "ws://debugurl1", "http://page1", WebViewInfo::kPage),
52       views_info.Get(0));
53   ExpectEqual(
54       WebViewInfo(
55           "2", "ws://debugurl2", "http://page2", WebViewInfo::kOther),
56       views_info.Get(1));
57 }
58
59 TEST(ParseWebViewsInfo, WithoutDebuggerUrl) {
60   WebViewsInfo views_info;
61   Status status = internal::ParseWebViewsInfo(
62       "[{\"type\": \"page\", \"id\": \"1\", \"url\": \"http://page1\"}]",
63       &views_info);
64   ASSERT_TRUE(status.IsOk());
65   ASSERT_EQ(1u, views_info.GetSize());
66   ExpectEqual(
67       WebViewInfo("1", std::string(), "http://page1", WebViewInfo::kPage),
68       views_info.Get(0));
69 }
70
71 namespace {
72
73 void AssertTypeIsOk(const std::string& type_as_string, WebViewInfo::Type type) {
74   WebViewsInfo views_info;
75   std::string data = "[{\"type\": \"" + type_as_string
76       + "\", \"id\": \"1\", \"url\": \"http://page1\"}]";
77   Status status = internal::ParseWebViewsInfo(data, &views_info);
78   ASSERT_TRUE(status.IsOk());
79   ASSERT_EQ(1u, views_info.GetSize());
80   ExpectEqual(WebViewInfo("1", std::string(), "http://page1", type),
81               views_info.Get(0));
82 }
83
84 void AssertFails(const std::string& data) {
85   WebViewsInfo views_info;
86   Status status = internal::ParseWebViewsInfo(data, &views_info);
87   ASSERT_FALSE(status.IsOk());
88   ASSERT_EQ(0u, views_info.GetSize());
89 }
90
91 }  // namespace
92
93 TEST(ParseWebViewsInfo, Types) {
94   AssertTypeIsOk("app", WebViewInfo::kApp);
95   AssertTypeIsOk("background_page", WebViewInfo::kBackgroundPage);
96   AssertTypeIsOk("page", WebViewInfo::kPage);
97   AssertTypeIsOk("worker", WebViewInfo::kWorker);
98   AssertTypeIsOk("other", WebViewInfo::kOther);
99   AssertFails("[{\"type\": \"\", \"id\": \"1\", \"url\": \"http://page1\"}]");
100 }
101
102 TEST(ParseWebViewsInfo, NonList) {
103   AssertFails("{\"id\": \"1\"}");
104 }
105
106 TEST(ParseWebViewsInfo, NonDictionary) {
107   AssertFails("[1]");
108 }
109
110 TEST(ParseWebViewsInfo, NoId) {
111   AssertFails(
112       "[{\"type\": \"page\", \"url\": \"http://page1\","
113       "  \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
114 }
115
116 TEST(ParseWebViewsInfo, InvalidId) {
117   AssertFails(
118       "[{\"type\": \"page\", \"id\": 1, \"url\": \"http://page1\","
119       "  \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
120 }
121
122 TEST(ParseWebViewsInfo, NoType) {
123   AssertFails(
124       "[{\"id\": \"1\", \"url\": \"http://page1\","
125       "  \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
126 }
127
128 TEST(ParseWebViewsInfo, InvalidType) {
129   AssertFails(
130       "[{\"type\": \"123\", \"id\": \"1\", \"url\": \"http://page1\","
131       "  \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
132 }
133
134 TEST(ParseWebViewsInfo, NoUrl) {
135   AssertFails(
136       "[{\"type\": \"page\", \"id\": \"1\","
137       "  \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
138 }
139
140 TEST(ParseWebViewsInfo, InvalidUrl) {
141   AssertFails(
142       "[{\"type\": \"page\", \"id\": \"1\", \"url\": 1,"
143       "  \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
144 }