Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: chrome/test/chromedriver/chrome_impl_unittest.cc

Issue 12321057: [chromedriver] Implement reconnection to DevTools. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits. Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/test/chromedriver/chrome_impl.cc ('k') | chrome/test/chromedriver/devtools_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <list> 5 #include <list>
6 #include <string> 6 #include <string>
7 7
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "chrome/test/chromedriver/chrome_impl.h" 11 #include "chrome/test/chromedriver/chrome_impl.h"
12 #include "chrome/test/chromedriver/devtools_client.h" 12 #include "chrome/test/chromedriver/devtools_client.h"
13 #include "chrome/test/chromedriver/status.h" 13 #include "chrome/test/chromedriver/status.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 namespace {
17
18 typedef std::list<internal::WebViewInfo> WebViewInfoList;
19
20 void ExpectEqual(const internal::WebViewInfo& info1,
21 const internal::WebViewInfo& info2) {
22 EXPECT_EQ(info1.id, info2.id);
23 EXPECT_EQ(info1.type, info2.type);
24 EXPECT_EQ(info1.url, info2.url);
25 EXPECT_EQ(info1.debugger_url, info2.debugger_url);
26 }
27
28 } // namespace
29
16 TEST(ParsePagesInfo, Normal) { 30 TEST(ParsePagesInfo, Normal) {
17 std::list<std::string> ids; 31 WebViewInfoList list;
18 Status status = internal::ParsePagesInfo( 32 Status status = internal::ParsePagesInfo(
19 "[{\"type\": \"page\", \"id\":\"1\"," 33 "[{\"type\": \"page\", \"id\": \"1\", \"url\": \"http://page1\","
20 " \"webSocketDebuggerUrl\": \"http://debugurl\"}]", 34 " \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]",
21 &ids); 35 &list);
22 ASSERT_TRUE(status.IsOk()); 36 ASSERT_TRUE(status.IsOk());
23 ASSERT_EQ(1u, ids.size()); 37 ASSERT_EQ(1u, list.size());
24 ASSERT_EQ("1", ids.front()); 38 ExpectEqual(
39 internal::WebViewInfo(
40 "1", "ws://debugurl1", "http://page1", internal::WebViewInfo::kPage),
41 list.front());
25 } 42 }
26 43
27 TEST(ParsePagesInfo, Multiple) { 44 TEST(ParsePagesInfo, Multiple) {
28 std::list<std::string> ids; 45 WebViewInfoList list;
29 Status status = internal::ParsePagesInfo( 46 Status status = internal::ParsePagesInfo(
30 "[{\"type\": \"page\", \"id\":\"1\"," 47 "[{\"type\": \"page\", \"id\": \"1\", \"url\": \"http://page1\","
31 " \"webSocketDebuggerUrl\": \"http://debugurl\"}," 48 " \"webSocketDebuggerUrl\": \"ws://debugurl1\"},"
32 " {\"type\": \"page\", \"id\":\"2\"," 49 " {\"type\": \"other\", \"id\": \"2\", \"url\": \"http://page2\","
33 " \"webSocketDebuggerUrl\": \"http://debugurl2\"}]", 50 " \"webSocketDebuggerUrl\": \"ws://debugurl2\"}]",
34 &ids); 51 &list);
35 ASSERT_TRUE(status.IsOk()); 52 ASSERT_TRUE(status.IsOk());
36 ASSERT_EQ(2u, ids.size()); 53 ASSERT_EQ(2u, list.size());
37 ASSERT_EQ("1", ids.front()); 54 ExpectEqual(
38 ASSERT_EQ("2", ids.back()); 55 internal::WebViewInfo(
56 "1", "ws://debugurl1", "http://page1", internal::WebViewInfo::kPage),
57 list.front());
58 ExpectEqual(
59 internal::WebViewInfo(
60 "2", "ws://debugurl2", "http://page2", internal::WebViewInfo::kOther),
61 list.back());
39 } 62 }
40 63
41 TEST(ParsePagesInfo, WithoutDebuggerUrl) { 64 TEST(ParsePagesInfo, WithoutDebuggerUrl) {
42 std::list<std::string> ids; 65 WebViewInfoList list;
43 Status status = internal::ParsePagesInfo( 66 Status status = internal::ParsePagesInfo(
44 "[{\"type\": \"page\", \"id\":\"1\"," 67 "[{\"type\": \"page\", \"id\": \"1\", \"url\": \"http://page1\"}]",
45 " \"webSocketDebuggerUrl\": \"http://debugurl\"}," 68 &list);
46 " {\"type\": \"page\", \"id\":\"2\"}]",
47 &ids);
48 ASSERT_TRUE(status.IsOk()); 69 ASSERT_TRUE(status.IsOk());
49 ASSERT_EQ(2u, ids.size()); 70 ASSERT_EQ(1u, list.size());
50 ASSERT_EQ("1", ids.front()); 71 ExpectEqual(
51 ASSERT_EQ("2", ids.back()); 72 internal::WebViewInfo(
73 "1", "", "http://page1", internal::WebViewInfo::kPage),
74 list.front());
52 } 75 }
53 76
54 namespace { 77 namespace {
55 78
56 void AssertFails(const std::string& data) { 79 void AssertFails(const std::string& data) {
57 std::list<std::string> urls; 80 WebViewInfoList list;
58 Status status = internal::ParsePagesInfo(data, &urls); 81 Status status = internal::ParsePagesInfo(data, &list);
59 ASSERT_FALSE(status.IsOk()); 82 ASSERT_FALSE(status.IsOk());
60 ASSERT_EQ(0u, urls.size()); 83 ASSERT_EQ(0u, list.size());
61 } 84 }
62 85
63 } // namespace 86 } // namespace
64 87
65 TEST(ParsePagesInfo, InvalidJSON) {
66 AssertFails("[");
67 }
68
69 TEST(ParsePagesInfo, NonList) { 88 TEST(ParsePagesInfo, NonList) {
70 AssertFails("{}"); 89 AssertFails("{\"id\": \"1\"}");
71 } 90 }
72 91
73 TEST(ParsePagesInfo, NonDictionary) { 92 TEST(ParsePagesInfo, NonDictionary) {
74 AssertFails("[1]"); 93 AssertFails("[1]");
75 } 94 }
76 95
77 TEST(ParsePagesInfo, NoDebuggerUrl) { 96 TEST(ParsePagesInfo, NoId) {
78 AssertFails("[{\"hi\": 1}]"); 97 AssertFails(
98 "[{\"type\": \"page\", \"url\": \"http://page1\","
99 " \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
79 } 100 }
80 101
81 TEST(ParsePagesInfo, InvalidDebuggerUrl) { 102 TEST(ParsePagesInfo, InvalidId) {
82 AssertFails("[{\"webSocketDebuggerUrl\": 1}]"); 103 AssertFails(
104 "[{\"type\": \"page\", \"id\": 1, \"url\": \"http://page1\","
105 " \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
106 }
107
108 TEST(ParsePagesInfo, NoType) {
109 AssertFails(
110 "[{\"id\": \"1\", \"url\": \"http://page1\","
111 " \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
112 }
113
114 TEST(ParsePagesInfo, InvalidType) {
115 AssertFails(
116 "[{\"type\": \"123\", \"id\": \"1\", \"url\": \"http://page1\","
117 " \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
118 }
119
120 TEST(ParsePagesInfo, NoUrl) {
121 AssertFails(
122 "[{\"type\": \"page\", \"id\": \"1\","
123 " \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
124 }
125
126 TEST(ParsePagesInfo, InvalidUrl) {
127 AssertFails(
128 "[{\"type\": \"page\", \"id\": \"1\", \"url\": 1,"
129 " \"webSocketDebuggerUrl\": \"ws://debugurl1\"}]");
83 } 130 }
84 131
85 namespace { 132 namespace {
86 133
87 void AssertVersionFails(const std::string& data) { 134 void AssertVersionFails(const std::string& data) {
88 std::string version; 135 std::string version;
89 Status status = internal::ParseVersionInfo(data, &version); 136 Status status = internal::ParseVersionInfo(data, &version);
90 ASSERT_TRUE(status.IsError()); 137 ASSERT_TRUE(status.IsError());
91 ASSERT_TRUE(version.empty()); 138 ASSERT_TRUE(version.empty());
92 } 139 }
(...skipping 11 matching lines...) Expand all
104 TEST(ParseVersionInfo, NoBrowserKey) { 151 TEST(ParseVersionInfo, NoBrowserKey) {
105 AssertVersionFails("{}"); 152 AssertVersionFails("{}");
106 } 153 }
107 154
108 TEST(ParseVersionInfo, Valid) { 155 TEST(ParseVersionInfo, Valid) {
109 std::string version; 156 std::string version;
110 Status status = internal::ParseVersionInfo("{\"Browser\": \"1\"}", &version); 157 Status status = internal::ParseVersionInfo("{\"Browser\": \"1\"}", &version);
111 ASSERT_TRUE(status.IsOk()); 158 ASSERT_TRUE(status.IsOk());
112 ASSERT_EQ("1", version); 159 ASSERT_EQ("1", version);
113 } 160 }
OLDNEW
« no previous file with comments | « chrome/test/chromedriver/chrome_impl.cc ('k') | chrome/test/chromedriver/devtools_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698