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

Side by Side Diff: chrome/browser/chromeos/cros/onc_network_parser_unittest.cc

Issue 8819011: Revert 113120 - this CL broke then chromeos clang bot: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years 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/browser/chromeos/cros/onc_network_parser.cc ('k') | no next file » | 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) 2011 The Chromium Authors. All rights reserved. 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 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/browser/chromeos/cros/onc_network_parser.h" 5 #include "chrome/browser/chromeos/cros/onc_network_parser.h"
6 6
7 #include <cert.h> 7 #include <cert.h>
8 #include <pk11pub.h> 8 #include <pk11pub.h>
9 9
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
11 #include "base/scoped_temp_dir.h" 11 #include "base/scoped_temp_dir.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "chrome/browser/chromeos/cros/network_library.h" 13 #include "chrome/browser/chromeos/cros/network_library.h"
14 #include "crypto/nss_util.h" 14 #include "crypto/nss_util.h"
15 #include "net/base/cert_database.h" 15 #include "net/base/cert_database.h"
16 #include "net/base/crypto_module.h" 16 #include "net/base/crypto_module.h"
17 #include "net/base/x509_certificate.h" 17 #include "net/base/x509_certificate.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 #include "third_party/cros_system_api/dbus/service_constants.h"
20 19
21 namespace chromeos { 20 namespace chromeos {
22 21
23 const char kNetworkConfigurationOpenVPN[] =
24 " {"
25 " \"GUID\": \"{408290ea-9299-4757-ab04-8957d55f0f13}\","
26 " \"Type\": \"VPN\","
27 " \"Name\": \"MyVPN\","
28 " \"VPN\": {"
29 " \"Host\": \"vpn.acme.org\","
30 " \"Type\": \"OpenVPN\","
31 " \"OpenVPN\": {"
32 " \"AuthRetry\": \"interact\","
33 " \"CompLZO\": \"true\","
34 " \"KeyDirection\": \"1\","
35 " \"Port\": 443,"
36 " \"Proto\": \"udp\","
37 " \"PushPeerInfo\": true,"
38 " \"RemoteCertEKU\": \"TLS Web Server Authentication\","
39 " \"RemoteCertKU\": ["
40 " \"eo\""
41 " ],"
42 " \"RemoteCertTLS\": \"server\","
43 " \"RenegSec\": 0,"
44 " \"ServerPollTimeout\": 10,"
45 " \"StaticChallenge\": \"My static challenge\","
46 " \"TLSAuthContents\": \""
47 "-----BEGIN OpenVPN Static key V1-----\n"
48 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
49 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
50 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
51 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
52 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
53 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
54 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
55 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
56 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
57 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
58 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
59 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
60 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
61 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
62 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
63 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
64 "END OpenVPN Static key V1-----\n\","
65 " \"TLSRemote\": \"MyOpenVPNServer\","
66 " \"SaveCredentials\": false,"
67 " \"ServerCARef\": \"{55ca78f6-0842-4e1b-96a3-09a9e1a26ef5}\","
68 " \"ClientCertType\": \"Pattern\","
69 " \"ClientCertPattern\": {"
70 " \"IssuerRef\": \"{68a2ed90-13a1-4120-a1fe-282508320e18}\","
71 " \"EnrollmentURI\": ["
72 " \"chrome-extension://abc/keygen-cert.html\""
73 " ]"
74 " },"
75 " }"
76 " }"
77 " }";
78
79 const char kCertificateWebAuthority[] =
80 " {"
81 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697ab}\","
82 " \"Type\": \"Authority\","
83 " \"Trust\": [\"Web\"],"
84 " \"X509\": \"MIIDojCCAwugAwIBAgIJAKGvi5ZgEWDVMA0GCSqGSIb3D"
85 "QEBBAUAMIGTMRUwEwYDVQQKEwxHb29nbGUsIEluYy4xETAPBgNVBAsTCENocm9tZU9TMS"
86 "IwIAYJKoZIhvcNAQkBFhNnc3BlbmNlckBnb29nbGUuY29tMRowGAYDVQQHExFNb3VudGF"
87 "pbiBWaWV3LCBDQTELMAkGA1UECBMCQ0ExCzAJBgNVBAYTAlVTMQ0wCwYDVQQDEwRsbWFv"
88 "MB4XDTExMDMxNjIzNDcxMFoXDTEyMDMxNTIzNDcxMFowgZMxFTATBgNVBAoTDEdvb2dsZ"
89 "SwgSW5jLjERMA8GA1UECxMIQ2hyb21lT1MxIjAgBgkqhkiG9w0BCQEWE2dzcGVuY2VyQG"
90 "dvb2dsZS5jb20xGjAYBgNVBAcTEU1vdW50YWluIFZpZXcsIENBMQswCQYDVQQIEwJDQTE"
91 "LMAkGA1UEBhMCVVMxDTALBgNVBAMTBGxtYW8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ"
92 "AoGBAMDX6BQz2JUzIAVjetiXxDznd2wdqVqVHfNkbSRW+xBywgqUaIXmFEGUol7VzPfme"
93 "FV8o8ok/eFlQB0h6ycqgwwMd0KjtJs2ys/k0F5GuN0G7fsgr+NRnhVgxj21yF6gYTN/8a"
94 "9kscla/svdmp8ekexbALFnghbLBx3CgcqUxT+tAgMBAAGjgfswgfgwDAYDVR0TBAUwAwE"
95 "B/zAdBgNVHQ4EFgQUbYygbSkl4kpjCNuxoezFGupA97UwgcgGA1UdIwSBwDCBvYAUbYyg"
96 "bSkl4kpjCNuxoezFGupA97WhgZmkgZYwgZMxFTATBgNVBAoTDEdvb2dsZSwgSW5jLjERM"
97 "A8GA1UECxMIQ2hyb21lT1MxIjAgBgkqhkiG9w0BCQEWE2dzcGVuY2VyQGdvb2dsZS5jb2"
98 "0xGjAYBgNVBAcTEU1vdW50YWluIFZpZXcsIENBMQswCQYDVQQIEwJDQTELMAkGA1UEBhM"
99 "CVVMxDTALBgNVBAMTBGxtYW+CCQChr4uWYBFg1TANBgkqhkiG9w0BAQQFAAOBgQCDq9wi"
100 "Q4uVuf1CQU3sXfXCy1yqi5m8AsO9FxHvah5/SVFNwKllqTfedpCaWEswJ55YAojW9e+pY"
101 "2Fh3Fo/Y9YkF88KCtLuBjjqDKCRLxF4LycjHODKyQQ7mN/t5AtP9yKOsNvWF+M4IfReg5"
102 "1kohau6FauQx87by5NIRPdkNPvkQ==\""
103 " }";
104
105
106 class OncNetworkParserTest : public testing::Test { 22 class OncNetworkParserTest : public testing::Test {
107 public: 23 public:
108 static void SetUpTestCase() { 24 static void SetUpTestCase() {
109 ASSERT_TRUE(temp_db_dir_.Get().CreateUniqueTempDir()); 25 ASSERT_TRUE(temp_db_dir_.Get().CreateUniqueTempDir());
110 // Ideally, we'd open a test DB for each test case, and close it 26 // Ideally, we'd open a test DB for each test case, and close it
111 // again, removing the temp dir, but unfortunately, there's a 27 // again, removing the temp dir, but unfortunately, there's a
112 // bug in NSS that prevents this from working, so we just open 28 // bug in NSS that prevents this from working, so we just open
113 // it once, and empty it for each test case. Here's the bug: 29 // it once, and empty it for each test case. Here's the bug:
114 // https://bugzilla.mozilla.org/show_bug.cgi?id=588269 30 // https://bugzilla.mozilla.org/show_bug.cgi?id=588269
115 ASSERT_TRUE( 31 ASSERT_TRUE(
(...skipping 13 matching lines...) Expand all
129 45
130 // Test db should be empty at start of test. 46 // Test db should be empty at start of test.
131 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 47 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size());
132 } 48 }
133 49
134 virtual void TearDown() { 50 virtual void TearDown() {
135 EXPECT_TRUE(CleanupSlotContents(slot_->os_module_handle())); 51 EXPECT_TRUE(CleanupSlotContents(slot_->os_module_handle()));
136 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 52 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size());
137 } 53 }
138 54
139 const base::Value* GetExpectedProperty(const Network* network,
140 PropertyIndex index,
141 base::Value::Type expected_type);
142 void CheckStringProperty(const Network* network,
143 PropertyIndex index,
144 const char* expected);
145 void CheckBooleanProperty(const Network* network,
146 PropertyIndex index,
147 bool expected);
148
149 protected: 55 protected:
150 scoped_refptr<net::CryptoModule> slot_; 56 scoped_refptr<net::CryptoModule> slot_;
151 net::CertDatabase cert_db_; 57 net::CertDatabase cert_db_;
152 58
153 private: 59 private:
154 net::CertificateList ListCertsInSlot(PK11SlotInfo* slot) { 60 net::CertificateList ListCertsInSlot(PK11SlotInfo* slot) {
155 net::CertificateList result; 61 net::CertificateList result;
156 CERTCertList* cert_list = PK11_ListCertsInSlot(slot); 62 CERTCertList* cert_list = PK11_ListCertsInSlot(slot);
157 for (CERTCertListNode* node = CERT_LIST_HEAD(cert_list); 63 for (CERTCertListNode* node = CERT_LIST_HEAD(cert_list);
158 !CERT_LIST_END(node, cert_list); 64 !CERT_LIST_END(node, cert_list);
(...skipping 14 matching lines...) Expand all
173 for (size_t i = 0; i < certs.size(); ++i) { 79 for (size_t i = 0; i < certs.size(); ++i) {
174 if (!cert_db_.DeleteCertAndKey(certs[i])) 80 if (!cert_db_.DeleteCertAndKey(certs[i]))
175 ok = false; 81 ok = false;
176 } 82 }
177 return ok; 83 return ok;
178 } 84 }
179 85
180 static base::LazyInstance<ScopedTempDir> temp_db_dir_; 86 static base::LazyInstance<ScopedTempDir> temp_db_dir_;
181 }; 87 };
182 88
183 const base::Value* OncNetworkParserTest::GetExpectedProperty(
184 const Network* network,
185 PropertyIndex index,
186 base::Value::Type expected_type) {
187 const base::Value* value;
188 if (!network->GetProperty(index, &value)) {
189 ADD_FAILURE() << "Property " << index << " does not exist";
190 return NULL;
191 }
192 if (!value->IsType(expected_type)) {
193 ADD_FAILURE() << "Property " << index << " expected type "
194 << expected_type << " actual type "
195 << value->GetType();
196 return NULL;
197 }
198 return value;
199 }
200
201 void OncNetworkParserTest::CheckStringProperty(const Network* network,
202 PropertyIndex index,
203 const char* expected) {
204 const base::Value* value =
205 GetExpectedProperty(network, index, base::Value::TYPE_STRING);
206 if (!value)
207 return;
208 std::string string_value;
209 value->GetAsString(&string_value);
210 EXPECT_EQ(expected, string_value);
211 }
212
213 void OncNetworkParserTest::CheckBooleanProperty(const Network* network,
214 PropertyIndex index,
215 bool expected) {
216 const base::Value* value =
217 GetExpectedProperty(network, index, base::Value::TYPE_BOOLEAN);
218 if (!value)
219 return;
220 bool bool_value = false;
221 value->GetAsBoolean(&bool_value);
222 EXPECT_EQ(expected, bool_value);
223 }
224
225 // static 89 // static
226 base::LazyInstance<ScopedTempDir> OncNetworkParserTest::temp_db_dir_ = 90 base::LazyInstance<ScopedTempDir> OncNetworkParserTest::temp_db_dir_ =
227 LAZY_INSTANCE_INITIALIZER; 91 LAZY_INSTANCE_INITIALIZER;
228 92
229 TEST_F(OncNetworkParserTest, TestCreateNetworkWifi1) { 93 TEST_F(OncNetworkParserTest, TestCreateNetworkWifi1) {
230 std::string test_blob( 94 std::string test_blob(
231 "{" 95 "{"
232 " \"NetworkConfigurations\": [{" 96 " \"NetworkConfigurations\": [{"
233 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\"," 97 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
234 " \"Type\": \"WiFi\"," 98 " \"Type\": \"WiFi\","
235 " \"WiFi\": {" 99 " \"WiFi\": {"
236 " \"Security\": \"WEP-PSK\"," 100 " \"Security\": \"WEP\","
237 " \"SSID\": \"ssid\"," 101 " \"SSID\": \"ssid\","
238 " \"Passphrase\": \"pass\"," 102 " \"Passphrase\": \"pass\","
239 " }" 103 " }"
240 " }]" 104 " }]"
241 "}"); 105 "}");
242 OncNetworkParser parser(test_blob); 106 OncNetworkParser parser(test_blob);
243 107
244 EXPECT_EQ(1, parser.GetNetworkConfigsSize()); 108 EXPECT_EQ(1, parser.GetNetworkConfigsSize());
245 EXPECT_EQ(0, parser.GetCertificatesSize()); 109 EXPECT_EQ(0, parser.GetCertificatesSize());
246 EXPECT_FALSE(parser.ParseNetwork(1)); 110 EXPECT_FALSE(parser.ParseNetwork(1));
247 scoped_ptr<Network> network(parser.ParseNetwork(0)); 111 Network* network = parser.ParseNetwork(0);
248 ASSERT_TRUE(network.get()); 112 ASSERT_TRUE(network);
249 113
250 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI); 114 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI);
251 WifiNetwork* wifi = static_cast<WifiNetwork*>(network.get()); 115 WifiNetwork* wifi = static_cast<WifiNetwork*>(network);
252 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_WEP); 116 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_WEP);
253 CheckStringProperty(wifi, PROPERTY_INDEX_SECURITY, flimflam::kSecurityWep);
254 EXPECT_EQ(wifi->name(), "ssid"); 117 EXPECT_EQ(wifi->name(), "ssid");
255 CheckStringProperty(wifi, PROPERTY_INDEX_SSID, "ssid");
256 EXPECT_EQ(wifi->auto_connect(), false); 118 EXPECT_EQ(wifi->auto_connect(), false);
257 EXPECT_EQ(wifi->passphrase(), "pass"); 119 EXPECT_EQ(wifi->passphrase(), "pass");
258 CheckStringProperty(wifi, PROPERTY_INDEX_PASSPHRASE, "pass");
259 } 120 }
260 121
261 TEST_F(OncNetworkParserTest, TestCreateNetworkWifiEAP1) { 122 TEST_F(OncNetworkParserTest, TestCreateNetworkWifiEAP1) {
262 std::string test_blob( 123 std::string test_blob(
263 "{" 124 "{"
264 " \"NetworkConfigurations\": [{" 125 " \"NetworkConfigurations\": [{"
265 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\"," 126 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
266 " \"Type\": \"WiFi\"," 127 " \"Type\": \"WiFi\","
267 " \"WiFi\": {" 128 " \"WiFi\": {"
268 " \"Security\": \"WPA-EAP\"," 129 " \"Security\": \"WPA2\","
269 " \"SSID\": \"ssid\"," 130 " \"SSID\": \"ssid\","
270 " \"AutoConnect\": true," 131 " \"AutoConnect\": true,"
271 " \"EAP\": {" 132 " \"EAP\": {"
272 " \"Outer\": \"PEAP\"," 133 " \"Outer\": \"PEAP\","
273 " \"UseSystemCAs\": false," 134 " \"UseSystemCAs\": false,"
274 " }" 135 " }"
275 " }" 136 " }"
276 " }]" 137 " }]"
277 "}"); 138 "}");
278 OncNetworkParser parser(test_blob); 139 OncNetworkParser parser(test_blob);
279 140
280 EXPECT_EQ(1, parser.GetNetworkConfigsSize()); 141 EXPECT_EQ(1, parser.GetNetworkConfigsSize());
281 EXPECT_EQ(0, parser.GetCertificatesSize()); 142 EXPECT_EQ(0, parser.GetCertificatesSize());
282 EXPECT_FALSE(parser.ParseNetwork(1)); 143 EXPECT_FALSE(parser.ParseNetwork(1));
283 scoped_ptr<Network> network(parser.ParseNetwork(0)); 144 Network* network = parser.ParseNetwork(0);
284 ASSERT_TRUE(network.get()); 145 ASSERT_TRUE(network);
285 146
286 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI); 147 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI);
287 WifiNetwork* wifi = static_cast<WifiNetwork*>(network.get()); 148 WifiNetwork* wifi = static_cast<WifiNetwork*>(network);
288 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_8021X); 149 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_8021X);
289 CheckStringProperty(wifi, PROPERTY_INDEX_SECURITY, flimflam::kSecurity8021x);
290 EXPECT_EQ(wifi->name(), "ssid"); 150 EXPECT_EQ(wifi->name(), "ssid");
291 EXPECT_EQ(wifi->auto_connect(), true); 151 EXPECT_EQ(wifi->auto_connect(), true);
292 CheckBooleanProperty(wifi, PROPERTY_INDEX_AUTO_CONNECT, true);
293 EXPECT_EQ(wifi->eap_method(), EAP_METHOD_PEAP); 152 EXPECT_EQ(wifi->eap_method(), EAP_METHOD_PEAP);
294 CheckStringProperty(wifi, PROPERTY_INDEX_EAP_METHOD,
295 flimflam::kEapMethodPEAP);
296 EXPECT_EQ(wifi->eap_use_system_cas(), false); 153 EXPECT_EQ(wifi->eap_use_system_cas(), false);
297 } 154 }
298 155
299 TEST_F(OncNetworkParserTest, TestCreateNetworkWifiEAP2) { 156 TEST_F(OncNetworkParserTest, TestCreateNetworkWifiEAP2) {
300 std::string test_blob( 157 std::string test_blob(
301 "{" 158 "{"
302 " \"NetworkConfigurations\": [{" 159 " \"NetworkConfigurations\": [{"
303 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\"," 160 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
304 " \"Type\": \"WiFi\"," 161 " \"Type\": \"WiFi\","
305 " \"WiFi\": {" 162 " \"WiFi\": {"
306 " \"Security\": \"WPA-EAP\"," 163 " \"Security\": \"WPA2\","
307 " \"SSID\": \"ssid\"," 164 " \"SSID\": \"ssid\","
308 " \"AutoConnect\": false," 165 " \"AutoConnect\": false,"
309 " \"EAP\": {" 166 " \"EAP\": {"
310 " \"Outer\": \"LEAP\"," 167 " \"Outer\": \"LEAP\","
311 " \"Identity\": \"user\"," 168 " \"Identity\": \"user\","
312 " \"Password\": \"pass\"," 169 " \"Password\": \"pass\","
313 " \"AnonymousIdentity\": \"anon\"," 170 " \"AnonymousIdentity\": \"anon\","
314 " }" 171 " }"
315 " }" 172 " }"
316 " }]" 173 " }]"
317 "}"); 174 "}");
318 OncNetworkParser parser(test_blob); 175 OncNetworkParser parser(test_blob);
319 176
320 EXPECT_EQ(1, parser.GetNetworkConfigsSize()); 177 EXPECT_EQ(1, parser.GetNetworkConfigsSize());
321 EXPECT_EQ(0, parser.GetCertificatesSize()); 178 EXPECT_EQ(0, parser.GetCertificatesSize());
322 EXPECT_FALSE(parser.ParseNetwork(1)); 179 EXPECT_FALSE(parser.ParseNetwork(1));
323 scoped_ptr<Network> network(parser.ParseNetwork(0)); 180 Network* network = parser.ParseNetwork(0);
324 ASSERT_TRUE(network.get()); 181 ASSERT_TRUE(network);
325 182
326 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI); 183 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI);
327 WifiNetwork* wifi = static_cast<WifiNetwork*>(network.get()); 184 WifiNetwork* wifi = static_cast<WifiNetwork*>(network);
328 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_8021X); 185 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_8021X);
329 EXPECT_EQ(wifi->name(), "ssid"); 186 EXPECT_EQ(wifi->name(), "ssid");
330 EXPECT_EQ(wifi->auto_connect(), false); 187 EXPECT_EQ(wifi->auto_connect(), false);
331 EXPECT_EQ(wifi->eap_method(), EAP_METHOD_LEAP); 188 EXPECT_EQ(wifi->eap_method(), EAP_METHOD_LEAP);
332 EXPECT_EQ(wifi->eap_use_system_cas(), true); 189 EXPECT_EQ(wifi->eap_use_system_cas(), true);
333 EXPECT_EQ(wifi->eap_identity(), "user"); 190 EXPECT_EQ(wifi->eap_identity(), "user");
334 CheckStringProperty(wifi, PROPERTY_INDEX_EAP_IDENTITY, "user");
335 EXPECT_EQ(wifi->eap_passphrase(), "pass"); 191 EXPECT_EQ(wifi->eap_passphrase(), "pass");
336 CheckStringProperty(wifi, PROPERTY_INDEX_EAP_PASSWORD, "pass");
337 EXPECT_EQ(wifi->eap_anonymous_identity(), "anon"); 192 EXPECT_EQ(wifi->eap_anonymous_identity(), "anon");
338 CheckStringProperty(wifi, PROPERTY_INDEX_EAP_ANONYMOUS_IDENTITY, "anon");
339 }
340
341 TEST_F(OncNetworkParserTest, TestCreateNetworkOpenVPN) {
342 std::string test_blob(std::string(
343 "{"
344 " \"NetworkConfigurations\": [") +
345 std::string(kNetworkConfigurationOpenVPN) + std::string(
346 " ]}"));
347 OncNetworkParser parser(test_blob);
348
349 EXPECT_EQ(1, parser.GetNetworkConfigsSize());
350 EXPECT_EQ(0, parser.GetCertificatesSize());
351 scoped_ptr<Network> network(parser.ParseNetwork(0));
352 ASSERT_TRUE(network.get() != NULL);
353
354 EXPECT_EQ(network->type(), chromeos::TYPE_VPN);
355 CheckStringProperty(network.get(), PROPERTY_INDEX_TYPE, flimflam::kTypeVPN);
356 VirtualNetwork* vpn = static_cast<VirtualNetwork*>(network.get());
357 EXPECT_EQ("MyVPN", vpn->name());
358 EXPECT_EQ(PROVIDER_TYPE_OPEN_VPN, vpn->provider_type());
359 CheckStringProperty(vpn, PROPERTY_INDEX_PROVIDER_TYPE,
360 flimflam::kProviderOpenVpn);
361 EXPECT_EQ("vpn.acme.org", vpn->server_hostname());
362 CheckStringProperty(vpn, PROPERTY_INDEX_PROVIDER_HOST, "vpn.acme.org");
363 CheckStringProperty(vpn, PROPERTY_INDEX_VPN_DOMAIN, "");
364 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_AUTHRETRY, "interact");
365 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_CACERT,
366 "{55ca78f6-0842-4e1b-96a3-09a9e1a26ef5}");
367 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_COMPLZO, "true");
368 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_KEYDIRECTION, "1");
369 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_PORT, "443");
370 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_PROTO, "udp");
371 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_PUSHPEERINFO, "true");
372 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_REMOTECERTEKU,
373 "TLS Web Server Authentication");
374 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_REMOTECERTKU, "eo");
375 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_REMOTECERTTLS, "server");
376 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_RENEGSEC, "0");
377 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_SERVERPOLLTIMEOUT, "10");
378 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_STATICCHALLENGE,
379 "My static challenge");
380 // Check the default properties are set.
381 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_AUTHUSERPASS, "");
382 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_MGMT_ENABLE, "");
383
384 std::string tls_auth_contents;
385 const Value* tls_auth_value =
386 GetExpectedProperty(vpn, PROPERTY_INDEX_OPEN_VPN_TLSAUTHCONTENTS,
387 base::Value::TYPE_STRING);
388 if (tls_auth_value != NULL) {
389 tls_auth_value->GetAsString(&tls_auth_contents);
390 EXPECT_NE(std::string::npos,
391 tls_auth_contents.find("END OpenVPN Static key V1-----\n"));
392 EXPECT_NE(std::string::npos,
393 tls_auth_contents.find(
394 "-----BEGIN OpenVPN Static key V1-----\n"));
395 }
396 CheckStringProperty(vpn, PROPERTY_INDEX_OPEN_VPN_TLSREMOTE,
397 "MyOpenVPNServer");
398 EXPECT_FALSE(vpn->save_credentials());
399 EXPECT_EQ("{55ca78f6-0842-4e1b-96a3-09a9e1a26ef5}", vpn->ca_cert_nss());
400 }
401
402 TEST_F(OncNetworkParserTest, TestCreateNetworkL2TPIPsec) {
403 std::string test_blob(
404 "{"
405 " \"NetworkConfigurations\": ["
406 " {"
407 " \"GUID\": \"{926b84e4-f2c5-0972-b9bbb8f44c4316f5}\","
408 " \"Name\": \"MyL2TPVPN\","
409 " \"Type\": \"VPN\","
410 " \"VPN\": {"
411 " \"Host\": \"l2tp.acme.org\","
412 " \"Type\": \"L2TP-IPsec\","
413 " \"IPsec\": {"
414 " \"IKEVersion\": 1,"
415 " \"AuthenticationType\": \"PSK\","
416 " \"PSK\": \"passphrase\""
417 " },"
418 " \"L2TP\": {"
419 " \"SaveCredentials\": false"
420 " }"
421 " }"
422 " }"
423 " ],"
424 " \"Certificates\": []"
425 "}");
426 OncNetworkParser parser(test_blob);
427
428 EXPECT_EQ(1, parser.GetNetworkConfigsSize());
429 EXPECT_EQ(0, parser.GetCertificatesSize());
430 scoped_ptr<Network> network(parser.ParseNetwork(0));
431 ASSERT_TRUE(network != NULL);
432
433 EXPECT_EQ(network->type(), chromeos::TYPE_VPN);
434 CheckStringProperty(network.get(), PROPERTY_INDEX_TYPE, flimflam::kTypeVPN);
435 VirtualNetwork* vpn = static_cast<VirtualNetwork*>(network.get());
436 EXPECT_EQ("MyL2TPVPN", vpn->name());
437 EXPECT_EQ(PROVIDER_TYPE_L2TP_IPSEC_PSK, vpn->provider_type());
438 CheckStringProperty(vpn, PROPERTY_INDEX_PROVIDER_TYPE,
439 flimflam::kProviderL2tpIpsec);
440 EXPECT_EQ("l2tp.acme.org", vpn->server_hostname());
441 CheckStringProperty(vpn, PROPERTY_INDEX_PROVIDER_HOST, "l2tp.acme.org");
442 CheckStringProperty(vpn, PROPERTY_INDEX_VPN_DOMAIN, "");
443 EXPECT_EQ("passphrase", vpn->psk_passphrase());
444 CheckStringProperty(vpn, PROPERTY_INDEX_L2TPIPSEC_PSK, "passphrase");
445 CheckStringProperty(vpn, PROPERTY_INDEX_IPSEC_IKEVERSION, "1");
446 EXPECT_FALSE(vpn->save_credentials());
447 } 193 }
448 194
449 TEST_F(OncNetworkParserTest, TestAddServerCertificate) { 195 TEST_F(OncNetworkParserTest, TestAddServerCertificate) {
450 std::string test_blob( 196 std::string test_blob(
451 "{" 197 "{"
452 " \"Certificates\": [" 198 " \"Certificates\": ["
453 " {" 199 " {"
454 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697aa}\"," 200 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697aa}\","
455 " \"Type\": \"Server\"," 201 " \"Type\": \"Server\","
456 " \"X509\": \"MIICWDCCAcECAxAAATANBgkqhkiG9w0BAQQFADCBkzEVM" 202 " \"X509\": \"MIICWDCCAcECAxAAATANBgkqhkiG9w0BAQQFADCBkzEVM"
(...skipping 12 matching lines...) Expand all
469 " }" 215 " }"
470 " ]," 216 " ],"
471 "}"); 217 "}");
472 OncNetworkParser parser(test_blob); 218 OncNetworkParser parser(test_blob);
473 219
474 EXPECT_EQ(1, parser.GetCertificatesSize()); 220 EXPECT_EQ(1, parser.GetCertificatesSize());
475 EXPECT_TRUE(parser.ParseCertificate(0)); 221 EXPECT_TRUE(parser.ParseCertificate(0));
476 } 222 }
477 223
478 TEST_F(OncNetworkParserTest, TestAddAuthorityCertificate) { 224 TEST_F(OncNetworkParserTest, TestAddAuthorityCertificate) {
479 const std::string test_blob(std::string("{" 225 const std::string test_blob("{"
480 " \"Certificates\": [") + 226 " \"Certificates\": ["
481 std::string(kCertificateWebAuthority) + std::string( 227 " {"
228 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697ab}\","
229 " \"Type\": \"Authority\","
230 " \"Trust\": [\"Web\"],"
231 " \"X509\": \"MIIDojCCAwugAwIBAgIJAKGvi5ZgEWDVMA0GCSqGSIb3D"
232 "QEBBAUAMIGTMRUwEwYDVQQKEwxHb29nbGUsIEluYy4xETAPBgNVBAsTCENocm9tZU9TMS"
233 "IwIAYJKoZIhvcNAQkBFhNnc3BlbmNlckBnb29nbGUuY29tMRowGAYDVQQHExFNb3VudGF"
234 "pbiBWaWV3LCBDQTELMAkGA1UECBMCQ0ExCzAJBgNVBAYTAlVTMQ0wCwYDVQQDEwRsbWFv"
235 "MB4XDTExMDMxNjIzNDcxMFoXDTEyMDMxNTIzNDcxMFowgZMxFTATBgNVBAoTDEdvb2dsZ"
236 "SwgSW5jLjERMA8GA1UECxMIQ2hyb21lT1MxIjAgBgkqhkiG9w0BCQEWE2dzcGVuY2VyQG"
237 "dvb2dsZS5jb20xGjAYBgNVBAcTEU1vdW50YWluIFZpZXcsIENBMQswCQYDVQQIEwJDQTE"
238 "LMAkGA1UEBhMCVVMxDTALBgNVBAMTBGxtYW8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ"
239 "AoGBAMDX6BQz2JUzIAVjetiXxDznd2wdqVqVHfNkbSRW+xBywgqUaIXmFEGUol7VzPfme"
240 "FV8o8ok/eFlQB0h6ycqgwwMd0KjtJs2ys/k0F5GuN0G7fsgr+NRnhVgxj21yF6gYTN/8a"
241 "9kscla/svdmp8ekexbALFnghbLBx3CgcqUxT+tAgMBAAGjgfswgfgwDAYDVR0TBAUwAwE"
242 "B/zAdBgNVHQ4EFgQUbYygbSkl4kpjCNuxoezFGupA97UwgcgGA1UdIwSBwDCBvYAUbYyg"
243 "bSkl4kpjCNuxoezFGupA97WhgZmkgZYwgZMxFTATBgNVBAoTDEdvb2dsZSwgSW5jLjERM"
244 "A8GA1UECxMIQ2hyb21lT1MxIjAgBgkqhkiG9w0BCQEWE2dzcGVuY2VyQGdvb2dsZS5jb2"
245 "0xGjAYBgNVBAcTEU1vdW50YWluIFZpZXcsIENBMQswCQYDVQQIEwJDQTELMAkGA1UEBhM"
246 "CVVMxDTALBgNVBAMTBGxtYW+CCQChr4uWYBFg1TANBgkqhkiG9w0BAQQFAAOBgQCDq9wi"
247 "Q4uVuf1CQU3sXfXCy1yqi5m8AsO9FxHvah5/SVFNwKllqTfedpCaWEswJ55YAojW9e+pY"
248 "2Fh3Fo/Y9YkF88KCtLuBjjqDKCRLxF4LycjHODKyQQ7mN/t5AtP9yKOsNvWF+M4IfReg5"
249 "1kohau6FauQx87by5NIRPdkNPvkQ==\""
250 " }"
482 " ]," 251 " ],"
483 "}")); 252 "}");
484 OncNetworkParser parser(test_blob); 253 OncNetworkParser parser(test_blob);
485 254
486 EXPECT_EQ(1, parser.GetCertificatesSize()); 255 EXPECT_EQ(1, parser.GetCertificatesSize());
487 EXPECT_TRUE(parser.ParseCertificate(0)); 256 EXPECT_TRUE(parser.ParseCertificate(0));
488 } 257 }
489 258
490 TEST_F(OncNetworkParserTest, TestAddClientCertificate) { 259 TEST_F(OncNetworkParserTest, TestAddClientCertificate) {
491 std::string test_blob( 260 std::string test_blob(
492 "{" 261 "{"
493 " \"Certificates\": [" 262 " \"Certificates\": ["
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 "AQU1M+0WRDkoVGbGg1jj7q2fI67qHIECBzRYESpgt5iAgIIAA==\"" 297 "AQU1M+0WRDkoVGbGg1jj7q2fI67qHIECBzRYESpgt5iAgIIAA==\""
529 " }" 298 " }"
530 " ]," 299 " ],"
531 "}"); 300 "}");
532 OncNetworkParser parser(test_blob); 301 OncNetworkParser parser(test_blob);
533 302
534 EXPECT_EQ(1, parser.GetCertificatesSize()); 303 EXPECT_EQ(1, parser.GetCertificatesSize());
535 EXPECT_TRUE(parser.ParseCertificate(0)); 304 EXPECT_TRUE(parser.ParseCertificate(0));
536 } 305 }
537 306
538 TEST_F(OncNetworkParserTest, TestNetworkAndCertificate) {
539 std::string test_blob(std::string(
540 "{"
541 " \"NetworkConfigurations\": [") +
542 std::string(kNetworkConfigurationOpenVPN) + std::string(
543 " ],"
544 " \"Certificates\": [") +
545 std::string(kCertificateWebAuthority) + std::string(
546 " ],"
547 "}"));
548 OncNetworkParser parser(test_blob);
549
550 EXPECT_EQ(1, parser.GetCertificatesSize());
551 EXPECT_TRUE(parser.ParseCertificate(0));
552
553 EXPECT_EQ(1, parser.GetNetworkConfigsSize());
554 scoped_ptr<Network> network(parser.ParseNetwork(0));
555 ASSERT_TRUE(network.get() != NULL);
556 EXPECT_EQ(network->type(), chromeos::TYPE_VPN);
557 VirtualNetwork* vpn = static_cast<VirtualNetwork*>(network.get());
558 EXPECT_EQ(PROVIDER_TYPE_OPEN_VPN, vpn->provider_type());
559 }
560
561 } // namespace chromeos 307 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/cros/onc_network_parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698