| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 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 | 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 "chrome/test/chromedriver/capabilities.h" | 5 #include "chrome/test/chromedriver/capabilities.h" |
| 6 | 6 |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "chrome/test/chromedriver/chrome/log.h" | 8 #include "chrome/test/chromedriver/chrome/log.h" |
| 9 #include "chrome/test/chromedriver/chrome/status.h" | 9 #include "chrome/test/chromedriver/chrome/status.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 switches.SetUnparsedSwitch("d=1"); | 94 switches.SetUnparsedSwitch("d=1"); |
| 95 switches.SetUnparsedSwitch("-e=--1=1"); | 95 switches.SetUnparsedSwitch("-e=--1=1"); |
| 96 | 96 |
| 97 ASSERT_EQ("---e=--1=1 --a --b --c=1 --d=1", switches.ToString()); | 97 ASSERT_EQ("---e=--1=1 --a --b --c=1 --d=1", switches.ToString()); |
| 98 } | 98 } |
| 99 | 99 |
| 100 TEST(ParseCapabilities, WithAndroidPackage) { | 100 TEST(ParseCapabilities, WithAndroidPackage) { |
| 101 Capabilities capabilities; | 101 Capabilities capabilities; |
| 102 base::DictionaryValue caps; | 102 base::DictionaryValue caps; |
| 103 caps.SetString("chromeOptions.androidPackage", "abc"); | 103 caps.SetString("chromeOptions.androidPackage", "abc"); |
| 104 Logger log(Log::kError); | 104 Status status = capabilities.Parse(caps); |
| 105 Status status = capabilities.Parse(caps, &log); | |
| 106 ASSERT_TRUE(status.IsOk()); | 105 ASSERT_TRUE(status.IsOk()); |
| 107 ASSERT_TRUE(capabilities.IsAndroid()); | 106 ASSERT_TRUE(capabilities.IsAndroid()); |
| 108 ASSERT_EQ("abc", capabilities.android_package); | 107 ASSERT_EQ("abc", capabilities.android_package); |
| 109 } | 108 } |
| 110 | 109 |
| 111 TEST(ParseCapabilities, EmptyAndroidPackage) { | 110 TEST(ParseCapabilities, EmptyAndroidPackage) { |
| 112 Capabilities capabilities; | 111 Capabilities capabilities; |
| 113 base::DictionaryValue caps; | 112 base::DictionaryValue caps; |
| 114 caps.SetString("chromeOptions.androidPackage", std::string()); | 113 caps.SetString("chromeOptions.androidPackage", std::string()); |
| 115 Logger log(Log::kError); | 114 Status status = capabilities.Parse(caps); |
| 116 Status status = capabilities.Parse(caps, &log); | |
| 117 ASSERT_FALSE(status.IsOk()); | 115 ASSERT_FALSE(status.IsOk()); |
| 118 } | 116 } |
| 119 | 117 |
| 120 TEST(ParseCapabilities, IllegalAndroidPackage) { | 118 TEST(ParseCapabilities, IllegalAndroidPackage) { |
| 121 Capabilities capabilities; | 119 Capabilities capabilities; |
| 122 base::DictionaryValue caps; | 120 base::DictionaryValue caps; |
| 123 caps.SetInteger("chromeOptions.androidPackage", 123); | 121 caps.SetInteger("chromeOptions.androidPackage", 123); |
| 124 Logger log(Log::kError); | 122 Status status = capabilities.Parse(caps); |
| 125 Status status = capabilities.Parse(caps, &log); | |
| 126 ASSERT_FALSE(status.IsOk()); | 123 ASSERT_FALSE(status.IsOk()); |
| 127 } | 124 } |
| 128 | 125 |
| 129 TEST(ParseCapabilities, LogPath) { | 126 TEST(ParseCapabilities, LogPath) { |
| 130 Capabilities capabilities; | 127 Capabilities capabilities; |
| 131 base::DictionaryValue caps; | 128 base::DictionaryValue caps; |
| 132 caps.SetString("chromeOptions.logPath", "path/to/logfile"); | 129 caps.SetString("chromeOptions.logPath", "path/to/logfile"); |
| 133 Logger log(Log::kError); | 130 Status status = capabilities.Parse(caps); |
| 134 Status status = capabilities.Parse(caps, &log); | |
| 135 ASSERT_TRUE(status.IsOk()); | 131 ASSERT_TRUE(status.IsOk()); |
| 136 ASSERT_STREQ("path/to/logfile", capabilities.log_path.c_str()); | 132 ASSERT_STREQ("path/to/logfile", capabilities.log_path.c_str()); |
| 137 } | 133 } |
| 138 | 134 |
| 139 TEST(ParseCapabilities, Args) { | 135 TEST(ParseCapabilities, Args) { |
| 140 Capabilities capabilities; | 136 Capabilities capabilities; |
| 141 base::ListValue args; | 137 base::ListValue args; |
| 142 args.AppendString("arg1"); | 138 args.AppendString("arg1"); |
| 143 args.AppendString("arg2=val"); | 139 args.AppendString("arg2=val"); |
| 144 base::DictionaryValue caps; | 140 base::DictionaryValue caps; |
| 145 caps.Set("chromeOptions.args", args.DeepCopy()); | 141 caps.Set("chromeOptions.args", args.DeepCopy()); |
| 146 | 142 |
| 147 Logger log(Log::kError); | 143 Status status = capabilities.Parse(caps); |
| 148 Status status = capabilities.Parse(caps, &log); | |
| 149 ASSERT_TRUE(status.IsOk()); | 144 ASSERT_TRUE(status.IsOk()); |
| 150 | 145 |
| 151 ASSERT_EQ(2u, capabilities.switches.GetSize()); | 146 ASSERT_EQ(2u, capabilities.switches.GetSize()); |
| 152 ASSERT_TRUE(capabilities.switches.HasSwitch("arg1")); | 147 ASSERT_TRUE(capabilities.switches.HasSwitch("arg1")); |
| 153 ASSERT_TRUE(capabilities.switches.HasSwitch("arg2")); | 148 ASSERT_TRUE(capabilities.switches.HasSwitch("arg2")); |
| 154 ASSERT_EQ("", capabilities.switches.GetSwitchValue("arg1")); | 149 ASSERT_EQ("", capabilities.switches.GetSwitchValue("arg1")); |
| 155 ASSERT_EQ("val", capabilities.switches.GetSwitchValue("arg2")); | 150 ASSERT_EQ("val", capabilities.switches.GetSwitchValue("arg2")); |
| 156 } | 151 } |
| 157 | 152 |
| 158 TEST(ParseCapabilities, Prefs) { | 153 TEST(ParseCapabilities, Prefs) { |
| 159 Capabilities capabilities; | 154 Capabilities capabilities; |
| 160 base::DictionaryValue prefs; | 155 base::DictionaryValue prefs; |
| 161 prefs.SetString("key1", "value1"); | 156 prefs.SetString("key1", "value1"); |
| 162 prefs.SetString("key2.k", "value2"); | 157 prefs.SetString("key2.k", "value2"); |
| 163 base::DictionaryValue caps; | 158 base::DictionaryValue caps; |
| 164 caps.Set("chromeOptions.prefs", prefs.DeepCopy()); | 159 caps.Set("chromeOptions.prefs", prefs.DeepCopy()); |
| 165 Logger log(Log::kError); | 160 Status status = capabilities.Parse(caps); |
| 166 Status status = capabilities.Parse(caps, &log); | |
| 167 ASSERT_TRUE(status.IsOk()); | 161 ASSERT_TRUE(status.IsOk()); |
| 168 ASSERT_TRUE(capabilities.prefs->Equals(&prefs)); | 162 ASSERT_TRUE(capabilities.prefs->Equals(&prefs)); |
| 169 } | 163 } |
| 170 | 164 |
| 171 TEST(ParseCapabilities, LocalState) { | 165 TEST(ParseCapabilities, LocalState) { |
| 172 Capabilities capabilities; | 166 Capabilities capabilities; |
| 173 base::DictionaryValue local_state; | 167 base::DictionaryValue local_state; |
| 174 local_state.SetString("s1", "v1"); | 168 local_state.SetString("s1", "v1"); |
| 175 local_state.SetString("s2.s", "v2"); | 169 local_state.SetString("s2.s", "v2"); |
| 176 base::DictionaryValue caps; | 170 base::DictionaryValue caps; |
| 177 caps.Set("chromeOptions.localState", local_state.DeepCopy()); | 171 caps.Set("chromeOptions.localState", local_state.DeepCopy()); |
| 178 Logger log(Log::kError); | 172 Status status = capabilities.Parse(caps); |
| 179 Status status = capabilities.Parse(caps, &log); | |
| 180 ASSERT_TRUE(status.IsOk()); | 173 ASSERT_TRUE(status.IsOk()); |
| 181 ASSERT_TRUE(capabilities.local_state->Equals(&local_state)); | 174 ASSERT_TRUE(capabilities.local_state->Equals(&local_state)); |
| 182 } | 175 } |
| 183 | 176 |
| 184 TEST(ParseCapabilities, Extensions) { | 177 TEST(ParseCapabilities, Extensions) { |
| 185 Capabilities capabilities; | 178 Capabilities capabilities; |
| 186 base::ListValue extensions; | 179 base::ListValue extensions; |
| 187 extensions.AppendString("ext1"); | 180 extensions.AppendString("ext1"); |
| 188 extensions.AppendString("ext2"); | 181 extensions.AppendString("ext2"); |
| 189 base::DictionaryValue caps; | 182 base::DictionaryValue caps; |
| 190 caps.Set("chromeOptions.extensions", extensions.DeepCopy()); | 183 caps.Set("chromeOptions.extensions", extensions.DeepCopy()); |
| 191 Logger log(Log::kError); | 184 Status status = capabilities.Parse(caps); |
| 192 Status status = capabilities.Parse(caps, &log); | |
| 193 ASSERT_TRUE(status.IsOk()); | 185 ASSERT_TRUE(status.IsOk()); |
| 194 ASSERT_EQ(2u, capabilities.extensions.size()); | 186 ASSERT_EQ(2u, capabilities.extensions.size()); |
| 195 ASSERT_EQ("ext1", capabilities.extensions[0]); | 187 ASSERT_EQ("ext1", capabilities.extensions[0]); |
| 196 ASSERT_EQ("ext2", capabilities.extensions[1]); | 188 ASSERT_EQ("ext2", capabilities.extensions[1]); |
| 197 } | 189 } |
| 198 | 190 |
| 199 TEST(ParseCapabilities, UnrecognizedProxyType) { | 191 TEST(ParseCapabilities, UnrecognizedProxyType) { |
| 200 Capabilities capabilities; | 192 Capabilities capabilities; |
| 201 base::DictionaryValue proxy; | 193 base::DictionaryValue proxy; |
| 202 proxy.SetString("proxyType", "unknown proxy type"); | 194 proxy.SetString("proxyType", "unknown proxy type"); |
| 203 base::DictionaryValue caps; | 195 base::DictionaryValue caps; |
| 204 caps.Set("proxy", proxy.DeepCopy()); | 196 caps.Set("proxy", proxy.DeepCopy()); |
| 205 Logger log(Log::kError); | 197 Status status = capabilities.Parse(caps); |
| 206 Status status = capabilities.Parse(caps, &log); | |
| 207 ASSERT_FALSE(status.IsOk()); | 198 ASSERT_FALSE(status.IsOk()); |
| 208 } | 199 } |
| 209 | 200 |
| 210 TEST(ParseCapabilities, IllegalProxyType) { | 201 TEST(ParseCapabilities, IllegalProxyType) { |
| 211 Capabilities capabilities; | 202 Capabilities capabilities; |
| 212 base::DictionaryValue proxy; | 203 base::DictionaryValue proxy; |
| 213 proxy.SetInteger("proxyType", 123); | 204 proxy.SetInteger("proxyType", 123); |
| 214 base::DictionaryValue caps; | 205 base::DictionaryValue caps; |
| 215 caps.Set("proxy", proxy.DeepCopy()); | 206 caps.Set("proxy", proxy.DeepCopy()); |
| 216 Logger log(Log::kError); | 207 Status status = capabilities.Parse(caps); |
| 217 Status status = capabilities.Parse(caps, &log); | |
| 218 ASSERT_FALSE(status.IsOk()); | 208 ASSERT_FALSE(status.IsOk()); |
| 219 } | 209 } |
| 220 | 210 |
| 221 TEST(ParseCapabilities, DirectProxy) { | 211 TEST(ParseCapabilities, DirectProxy) { |
| 222 Capabilities capabilities; | 212 Capabilities capabilities; |
| 223 base::DictionaryValue proxy; | 213 base::DictionaryValue proxy; |
| 224 proxy.SetString("proxyType", "DIRECT"); | 214 proxy.SetString("proxyType", "DIRECT"); |
| 225 base::DictionaryValue caps; | 215 base::DictionaryValue caps; |
| 226 caps.Set("proxy", proxy.DeepCopy()); | 216 caps.Set("proxy", proxy.DeepCopy()); |
| 227 Logger log(Log::kError); | 217 Status status = capabilities.Parse(caps); |
| 228 Status status = capabilities.Parse(caps, &log); | |
| 229 ASSERT_TRUE(status.IsOk()); | 218 ASSERT_TRUE(status.IsOk()); |
| 230 ASSERT_EQ(1u, capabilities.switches.GetSize()); | 219 ASSERT_EQ(1u, capabilities.switches.GetSize()); |
| 231 ASSERT_TRUE(capabilities.switches.HasSwitch("no-proxy-server")); | 220 ASSERT_TRUE(capabilities.switches.HasSwitch("no-proxy-server")); |
| 232 } | 221 } |
| 233 | 222 |
| 234 TEST(ParseCapabilities, SystemProxy) { | 223 TEST(ParseCapabilities, SystemProxy) { |
| 235 Capabilities capabilities; | 224 Capabilities capabilities; |
| 236 base::DictionaryValue proxy; | 225 base::DictionaryValue proxy; |
| 237 proxy.SetString("proxyType", "system"); | 226 proxy.SetString("proxyType", "system"); |
| 238 base::DictionaryValue caps; | 227 base::DictionaryValue caps; |
| 239 caps.Set("proxy", proxy.DeepCopy()); | 228 caps.Set("proxy", proxy.DeepCopy()); |
| 240 Logger log(Log::kError); | 229 Status status = capabilities.Parse(caps); |
| 241 Status status = capabilities.Parse(caps, &log); | |
| 242 ASSERT_TRUE(status.IsOk()); | 230 ASSERT_TRUE(status.IsOk()); |
| 243 ASSERT_EQ(0u, capabilities.switches.GetSize()); | 231 ASSERT_EQ(0u, capabilities.switches.GetSize()); |
| 244 } | 232 } |
| 245 | 233 |
| 246 TEST(ParseCapabilities, PacProxy) { | 234 TEST(ParseCapabilities, PacProxy) { |
| 247 Capabilities capabilities; | 235 Capabilities capabilities; |
| 248 base::DictionaryValue proxy; | 236 base::DictionaryValue proxy; |
| 249 proxy.SetString("proxyType", "PAC"); | 237 proxy.SetString("proxyType", "PAC"); |
| 250 proxy.SetString("proxyAutoconfigUrl", "test.wpad"); | 238 proxy.SetString("proxyAutoconfigUrl", "test.wpad"); |
| 251 base::DictionaryValue caps; | 239 base::DictionaryValue caps; |
| 252 caps.Set("proxy", proxy.DeepCopy()); | 240 caps.Set("proxy", proxy.DeepCopy()); |
| 253 Logger log(Log::kError); | 241 Status status = capabilities.Parse(caps); |
| 254 Status status = capabilities.Parse(caps, &log); | |
| 255 ASSERT_TRUE(status.IsOk()); | 242 ASSERT_TRUE(status.IsOk()); |
| 256 ASSERT_EQ(1u, capabilities.switches.GetSize()); | 243 ASSERT_EQ(1u, capabilities.switches.GetSize()); |
| 257 ASSERT_EQ("test.wpad", capabilities.switches.GetSwitchValue("proxy-pac-url")); | 244 ASSERT_EQ("test.wpad", capabilities.switches.GetSwitchValue("proxy-pac-url")); |
| 258 } | 245 } |
| 259 | 246 |
| 260 TEST(ParseCapabilities, MissingProxyAutoconfigUrl) { | 247 TEST(ParseCapabilities, MissingProxyAutoconfigUrl) { |
| 261 Capabilities capabilities; | 248 Capabilities capabilities; |
| 262 base::DictionaryValue proxy; | 249 base::DictionaryValue proxy; |
| 263 proxy.SetString("proxyType", "PAC"); | 250 proxy.SetString("proxyType", "PAC"); |
| 264 proxy.SetString("httpProxy", "http://localhost:8001"); | 251 proxy.SetString("httpProxy", "http://localhost:8001"); |
| 265 base::DictionaryValue caps; | 252 base::DictionaryValue caps; |
| 266 caps.Set("proxy", proxy.DeepCopy()); | 253 caps.Set("proxy", proxy.DeepCopy()); |
| 267 Logger log(Log::kError); | 254 Status status = capabilities.Parse(caps); |
| 268 Status status = capabilities.Parse(caps, &log); | |
| 269 ASSERT_FALSE(status.IsOk()); | 255 ASSERT_FALSE(status.IsOk()); |
| 270 } | 256 } |
| 271 | 257 |
| 272 TEST(ParseCapabilities, AutodetectProxy) { | 258 TEST(ParseCapabilities, AutodetectProxy) { |
| 273 Capabilities capabilities; | 259 Capabilities capabilities; |
| 274 base::DictionaryValue proxy; | 260 base::DictionaryValue proxy; |
| 275 proxy.SetString("proxyType", "autodetect"); | 261 proxy.SetString("proxyType", "autodetect"); |
| 276 base::DictionaryValue caps; | 262 base::DictionaryValue caps; |
| 277 caps.Set("proxy", proxy.DeepCopy()); | 263 caps.Set("proxy", proxy.DeepCopy()); |
| 278 Logger log(Log::kError); | 264 Status status = capabilities.Parse(caps); |
| 279 Status status = capabilities.Parse(caps, &log); | |
| 280 ASSERT_TRUE(status.IsOk()); | 265 ASSERT_TRUE(status.IsOk()); |
| 281 ASSERT_EQ(1u, capabilities.switches.GetSize()); | 266 ASSERT_EQ(1u, capabilities.switches.GetSize()); |
| 282 ASSERT_TRUE(capabilities.switches.HasSwitch("proxy-auto-detect")); | 267 ASSERT_TRUE(capabilities.switches.HasSwitch("proxy-auto-detect")); |
| 283 } | 268 } |
| 284 | 269 |
| 285 TEST(ParseCapabilities, ManualProxy) { | 270 TEST(ParseCapabilities, ManualProxy) { |
| 286 Capabilities capabilities; | 271 Capabilities capabilities; |
| 287 base::DictionaryValue proxy; | 272 base::DictionaryValue proxy; |
| 288 proxy.SetString("proxyType", "manual"); | 273 proxy.SetString("proxyType", "manual"); |
| 289 proxy.SetString("ftpProxy", "localhost:9001"); | 274 proxy.SetString("ftpProxy", "localhost:9001"); |
| 290 proxy.SetString("httpProxy", "localhost:8001"); | 275 proxy.SetString("httpProxy", "localhost:8001"); |
| 291 proxy.SetString("sslProxy", "localhost:10001"); | 276 proxy.SetString("sslProxy", "localhost:10001"); |
| 292 proxy.SetString("noProxy", "google.com, youtube.com"); | 277 proxy.SetString("noProxy", "google.com, youtube.com"); |
| 293 base::DictionaryValue caps; | 278 base::DictionaryValue caps; |
| 294 caps.Set("proxy", proxy.DeepCopy()); | 279 caps.Set("proxy", proxy.DeepCopy()); |
| 295 Logger log(Log::kError); | 280 Status status = capabilities.Parse(caps); |
| 296 Status status = capabilities.Parse(caps, &log); | |
| 297 ASSERT_TRUE(status.IsOk()); | 281 ASSERT_TRUE(status.IsOk()); |
| 298 ASSERT_EQ(2u, capabilities.switches.GetSize()); | 282 ASSERT_EQ(2u, capabilities.switches.GetSize()); |
| 299 ASSERT_EQ( | 283 ASSERT_EQ( |
| 300 "ftp=localhost:9001;http=localhost:8001;https=localhost:10001", | 284 "ftp=localhost:9001;http=localhost:8001;https=localhost:10001", |
| 301 capabilities.switches.GetSwitchValue("proxy-server")); | 285 capabilities.switches.GetSwitchValue("proxy-server")); |
| 302 ASSERT_EQ( | 286 ASSERT_EQ( |
| 303 "google.com, youtube.com", | 287 "google.com, youtube.com", |
| 304 capabilities.switches.GetSwitchValue("proxy-bypass-list")); | 288 capabilities.switches.GetSwitchValue("proxy-bypass-list")); |
| 305 } | 289 } |
| 306 | 290 |
| 307 TEST(ParseCapabilities, MissingSettingForManualProxy) { | 291 TEST(ParseCapabilities, MissingSettingForManualProxy) { |
| 308 Capabilities capabilities; | 292 Capabilities capabilities; |
| 309 base::DictionaryValue proxy; | 293 base::DictionaryValue proxy; |
| 310 proxy.SetString("proxyType", "manual"); | 294 proxy.SetString("proxyType", "manual"); |
| 311 base::DictionaryValue caps; | 295 base::DictionaryValue caps; |
| 312 caps.Set("proxy", proxy.DeepCopy()); | 296 caps.Set("proxy", proxy.DeepCopy()); |
| 313 Logger log(Log::kError); | 297 Status status = capabilities.Parse(caps); |
| 314 Status status = capabilities.Parse(caps, &log); | |
| 315 ASSERT_FALSE(status.IsOk()); | 298 ASSERT_FALSE(status.IsOk()); |
| 316 } | 299 } |
| 317 | 300 |
| 318 TEST(ParseCapabilities, IgnoreNullValueForManualProxy) { | 301 TEST(ParseCapabilities, IgnoreNullValueForManualProxy) { |
| 319 Capabilities capabilities; | 302 Capabilities capabilities; |
| 320 base::DictionaryValue proxy; | 303 base::DictionaryValue proxy; |
| 321 proxy.SetString("proxyType", "manual"); | 304 proxy.SetString("proxyType", "manual"); |
| 322 proxy.SetString("ftpProxy", "localhost:9001"); | 305 proxy.SetString("ftpProxy", "localhost:9001"); |
| 323 proxy.Set("sslProxy", base::Value::CreateNullValue()); | 306 proxy.Set("sslProxy", base::Value::CreateNullValue()); |
| 324 proxy.Set("noProxy", base::Value::CreateNullValue()); | 307 proxy.Set("noProxy", base::Value::CreateNullValue()); |
| 325 base::DictionaryValue caps; | 308 base::DictionaryValue caps; |
| 326 caps.Set("proxy", proxy.DeepCopy()); | 309 caps.Set("proxy", proxy.DeepCopy()); |
| 327 Logger log(Log::kError); | 310 Status status = capabilities.Parse(caps); |
| 328 Status status = capabilities.Parse(caps, &log); | |
| 329 ASSERT_TRUE(status.IsOk()); | 311 ASSERT_TRUE(status.IsOk()); |
| 330 ASSERT_EQ(1u, capabilities.switches.GetSize()); | 312 ASSERT_EQ(1u, capabilities.switches.GetSize()); |
| 331 ASSERT_TRUE(capabilities.switches.HasSwitch("proxy-server")); | 313 ASSERT_TRUE(capabilities.switches.HasSwitch("proxy-server")); |
| 332 ASSERT_EQ( | 314 ASSERT_EQ( |
| 333 "ftp=localhost:9001", | 315 "ftp=localhost:9001", |
| 334 capabilities.switches.GetSwitchValue("proxy-server")); | 316 capabilities.switches.GetSwitchValue("proxy-server")); |
| 335 } | 317 } |
| 336 | 318 |
| 337 TEST(ParseCapabilities, LoggingPrefsOk) { | 319 TEST(ParseCapabilities, LoggingPrefsOk) { |
| 338 Capabilities capabilities; | 320 Capabilities capabilities; |
| 339 base::DictionaryValue logging_prefs; | 321 base::DictionaryValue logging_prefs; |
| 340 logging_prefs.SetString("Network", "INFO"); | 322 logging_prefs.SetString("Network", "INFO"); |
| 341 base::DictionaryValue caps; | 323 base::DictionaryValue caps; |
| 342 caps.Set("loggingPrefs", logging_prefs.DeepCopy()); | 324 caps.Set("loggingPrefs", logging_prefs.DeepCopy()); |
| 343 Logger log(Log::kError); | 325 Status status = capabilities.Parse(caps); |
| 344 Status status = capabilities.Parse(caps, &log); | |
| 345 ASSERT_TRUE(status.IsOk()); | 326 ASSERT_TRUE(status.IsOk()); |
| 346 ASSERT_TRUE(capabilities.logging_prefs.get()); | 327 ASSERT_EQ(1u, capabilities.logging_prefs.size()); |
| 347 ASSERT_EQ(1u, capabilities.logging_prefs->size()); | 328 ASSERT_EQ(Log::kInfo, capabilities.logging_prefs["Network"]); |
| 348 std::string log_level; | |
| 349 ASSERT_TRUE(capabilities.logging_prefs->GetString("Network", &log_level)); | |
| 350 ASSERT_STREQ("INFO", log_level.c_str()); | |
| 351 } | 329 } |
| 352 | 330 |
| 353 TEST(ParseCapabilities, LoggingPrefsNotDict) { | 331 TEST(ParseCapabilities, LoggingPrefsNotDict) { |
| 354 Capabilities capabilities; | 332 Capabilities capabilities; |
| 355 base::DictionaryValue caps; | 333 base::DictionaryValue caps; |
| 356 caps.SetString("loggingPrefs", "INFO"); | 334 caps.SetString("loggingPrefs", "INFO"); |
| 357 Logger log(Log::kError); | 335 Status status = capabilities.Parse(caps); |
| 358 Status status = capabilities.Parse(caps, &log); | |
| 359 ASSERT_FALSE(status.IsOk()); | 336 ASSERT_FALSE(status.IsOk()); |
| 360 } | 337 } |
| 361 | 338 |
| 362 TEST(ParseCapabilities, ExcludeSwitches) { | 339 TEST(ParseCapabilities, ExcludeSwitches) { |
| 363 Capabilities capabilities; | 340 Capabilities capabilities; |
| 364 base::ListValue exclude_switches; | 341 base::ListValue exclude_switches; |
| 365 exclude_switches.AppendString("switch1"); | 342 exclude_switches.AppendString("switch1"); |
| 366 exclude_switches.AppendString("switch2"); | 343 exclude_switches.AppendString("switch2"); |
| 367 base::DictionaryValue caps; | 344 base::DictionaryValue caps; |
| 368 caps.Set("chromeOptions.excludeSwitches", exclude_switches.DeepCopy()); | 345 caps.Set("chromeOptions.excludeSwitches", exclude_switches.DeepCopy()); |
| 369 Logger log(Log::kError); | 346 Status status = capabilities.Parse(caps); |
| 370 Status status = capabilities.Parse(caps, &log); | |
| 371 ASSERT_TRUE(status.IsOk()); | 347 ASSERT_TRUE(status.IsOk()); |
| 372 ASSERT_EQ(2u, capabilities.exclude_switches.size()); | 348 ASSERT_EQ(2u, capabilities.exclude_switches.size()); |
| 373 const std::set<std::string>& switches = capabilities.exclude_switches; | 349 const std::set<std::string>& switches = capabilities.exclude_switches; |
| 374 ASSERT_TRUE(switches.find("switch1") != switches.end()); | 350 ASSERT_TRUE(switches.find("switch1") != switches.end()); |
| 375 ASSERT_TRUE(switches.find("switch2") != switches.end()); | 351 ASSERT_TRUE(switches.find("switch2") != switches.end()); |
| 376 } | 352 } |
| 377 | 353 |
| 378 TEST(ParseCapabilities, UseExistingBrowser) { | 354 TEST(ParseCapabilities, UseExistingBrowser) { |
| 379 Capabilities capabilities; | 355 Capabilities capabilities; |
| 380 base::DictionaryValue caps; | 356 base::DictionaryValue caps; |
| 381 caps.SetString("chromeOptions.debuggerAddress", "abc:123"); | 357 caps.SetString("chromeOptions.debuggerAddress", "abc:123"); |
| 382 Logger log(Log::kError); | 358 Status status = capabilities.Parse(caps); |
| 383 Status status = capabilities.Parse(caps, &log); | |
| 384 ASSERT_TRUE(status.IsOk()); | 359 ASSERT_TRUE(status.IsOk()); |
| 385 ASSERT_TRUE(capabilities.IsExistingBrowser()); | 360 ASSERT_TRUE(capabilities.IsExistingBrowser()); |
| 386 ASSERT_EQ("abc", capabilities.debugger_address.host()); | 361 ASSERT_EQ("abc", capabilities.debugger_address.host()); |
| 387 ASSERT_EQ(123, capabilities.debugger_address.port()); | 362 ASSERT_EQ(123, capabilities.debugger_address.port()); |
| 388 } | 363 } |
| OLD | NEW |