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

Side by Side Diff: chrome/test/webdriver/webdriver_capabilities_parser_unittest.cc

Issue 8341044: Enhance and refactor ChromeDriver's capability handling. Log warning for (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ... Created 9 years, 1 month 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
OLDNEW
(Empty)
1 // Copyright (c) 2011 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 "base/base64.h"
6 #include "base/file_path.h"
7 #include "base/file_util.h"
8 #include "base/scoped_temp_dir.h"
9 #include "base/values.h"
10 #include "chrome/common/zip.h"
11 #include "chrome/test/webdriver/webdriver_capabilities_parser.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 using base::DictionaryValue;
15 using base::ListValue;
16 using base::Value;
17
18 namespace webdriver {
19
20 TEST(CapabilitiesParser, NoCaps) {
21 Capabilities caps;
22 DictionaryValue dict;
23 CapabilitiesParser parser(&dict, FilePath(), &caps);
24 ASSERT_FALSE(parser.Parse());
25 }
26
27 TEST(CapabilitiesParser, SimpleCaps) {
28 DictionaryValue dict;
29 DictionaryValue* options = new DictionaryValue();
30 dict.Set("chromeOptions", options);
31
32 options->SetString("binary", "binary");
33 options->SetString("channel", "channel");
34 options->SetBoolean("detach", true);
35 options->SetBoolean("loadAsync", true);
36 options->SetBoolean("nativeEvents", true);
37 options->SetBoolean("verbose", true);
38
39 Capabilities caps;
40 ScopedTempDir temp_dir;
41 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
42 CapabilitiesParser parser(&dict, temp_dir.path(), &caps);
43 ASSERT_FALSE(parser.Parse());
44 EXPECT_EQ(FILE_PATH_LITERAL("binary"), caps.command.GetProgram().value());
45 EXPECT_STREQ("channel", caps.channel.c_str());
46 EXPECT_TRUE(caps.detach);
47 EXPECT_TRUE(caps.load_async);
48 EXPECT_TRUE(caps.native_events);
49 EXPECT_TRUE(caps.verbose);
50 }
51
52 TEST(CapabilitiesParser, Args) {
53 DictionaryValue dict;
54 DictionaryValue* options = new DictionaryValue();
55 dict.Set("chromeOptions", options);
56
57 ListValue* args = new ListValue();
58 args->Append(Value::CreateStringValue("arg1"));
59 args->Append(Value::CreateStringValue("arg2=val"));
60 args->Append(Value::CreateStringValue("arg3='a space'"));
61 options->Set("args", args);
62
63 Capabilities caps;
64 ScopedTempDir temp_dir;
65 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
66 CapabilitiesParser parser(&dict, temp_dir.path(), &caps);
67 ASSERT_FALSE(parser.Parse());
68 EXPECT_TRUE(caps.command.HasSwitch("arg1"));
69 EXPECT_STREQ("val", caps.command.GetSwitchValueASCII("arg2").c_str());
70 EXPECT_STREQ("'a space'", caps.command.GetSwitchValueASCII("arg3").c_str());
71 }
72
73 TEST(CapabilitiesParser, Extensions) {
74 DictionaryValue dict;
75 DictionaryValue* options = new DictionaryValue();
76 dict.Set("chromeOptions", options);
77
78 ListValue* extensions = new ListValue();
79 extensions->Append(Value::CreateStringValue("TWFu"));
80 extensions->Append(Value::CreateStringValue("TWFuTWFu"));
81 options->Set("extensions", extensions);
82
83 Capabilities caps;
84 ScopedTempDir temp_dir;
85 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
86 CapabilitiesParser parser(&dict, temp_dir.path(), &caps);
87 ASSERT_FALSE(parser.Parse());
88 ASSERT_EQ(2u, caps.extensions.size());
89 std::string contents;
90 ASSERT_TRUE(file_util::ReadFileToString(caps.extensions[0], &contents));
91 EXPECT_STREQ("Man", contents.c_str());
92 contents.clear();
93 ASSERT_TRUE(file_util::ReadFileToString(caps.extensions[1], &contents));
94 EXPECT_STREQ("ManMan", contents.c_str());
95 }
96
97 TEST(CapabilitiesParser, Profile) {
98 DictionaryValue dict;
99 DictionaryValue* options = new DictionaryValue();
100 dict.Set("chromeOptions", options);
101
102 ScopedTempDir temp_dir;
103 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
104 FilePath folder = temp_dir.path().AppendASCII("folder");
105 ASSERT_TRUE(file_util::CreateDirectory(folder));
106 ASSERT_EQ(4, file_util::WriteFile(
107 folder.AppendASCII("data"), "data", 4));
108 FilePath zip = temp_dir.path().AppendASCII("data.zip");
109 ASSERT_TRUE(zip::Zip(folder, zip, false /* include_hidden_files */));
110 std::string contents;
111 ASSERT_TRUE(file_util::ReadFileToString(zip, &contents));
112 std::string base64;
113 ASSERT_TRUE(base::Base64Encode(contents, &base64));
114 options->SetString("profile", base64);
115
116 Capabilities caps;
117 CapabilitiesParser parser(&dict, temp_dir.path(), &caps);
118 ASSERT_FALSE(parser.Parse());
119 std::string new_contents;
120 ASSERT_TRUE(file_util::ReadFileToString(
121 caps.profile.AppendASCII("data"), &new_contents));
122 EXPECT_STREQ("data", new_contents.c_str());
123 }
124
125 TEST(CapabilitiesParser, UnknownCap) {
126 Capabilities caps;
127 DictionaryValue dict;
128 dict.SetString("chromeOptions.nosuchcap", "none");
129 CapabilitiesParser parser(&dict, FilePath(), &caps);
130 ASSERT_FALSE(parser.Parse());
131 }
132
133 TEST(CapabilitiesParser, BadInput) {
134 Capabilities caps;
135 DictionaryValue dict;
136 dict.SetString("chromeOptions.verbose", "false");
137 CapabilitiesParser parser(&dict, FilePath(), &caps);
138 ASSERT_TRUE(parser.Parse());
139 }
140
141 } // namespace webdriver
OLDNEW
« no previous file with comments | « chrome/test/webdriver/webdriver_capabilities_parser.cc ('k') | chrome/test/webdriver/webdriver_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698