| OLD | NEW |
| 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 Loading... |
| 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 } |
| OLD | NEW |