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

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

Issue 8759014: Add ONC VPN support for OpenVPN and L2TP/IPsec VPNs (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
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"
19 20
20 namespace chromeos { 21 namespace chromeos {
21 22
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
22 class OncNetworkParserTest : public testing::Test { 106 class OncNetworkParserTest : public testing::Test {
23 public: 107 public:
24 static void SetUpTestCase() { 108 static void SetUpTestCase() {
25 ASSERT_TRUE(temp_db_dir_.Get().CreateUniqueTempDir()); 109 ASSERT_TRUE(temp_db_dir_.Get().CreateUniqueTempDir());
26 // Ideally, we'd open a test DB for each test case, and close it 110 // Ideally, we'd open a test DB for each test case, and close it
27 // again, removing the temp dir, but unfortunately, there's a 111 // again, removing the temp dir, but unfortunately, there's a
28 // bug in NSS that prevents this from working, so we just open 112 // bug in NSS that prevents this from working, so we just open
29 // it once, and empty it for each test case. Here's the bug: 113 // it once, and empty it for each test case. Here's the bug:
30 // https://bugzilla.mozilla.org/show_bug.cgi?id=588269 114 // https://bugzilla.mozilla.org/show_bug.cgi?id=588269
31 ASSERT_TRUE( 115 ASSERT_TRUE(
(...skipping 13 matching lines...) Expand all
45 129
46 // Test db should be empty at start of test. 130 // Test db should be empty at start of test.
47 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 131 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size());
48 } 132 }
49 133
50 virtual void TearDown() { 134 virtual void TearDown() {
51 EXPECT_TRUE(CleanupSlotContents(slot_->os_module_handle())); 135 EXPECT_TRUE(CleanupSlotContents(slot_->os_module_handle()));
52 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size()); 136 EXPECT_EQ(0U, ListCertsInSlot(slot_->os_module_handle()).size());
53 } 137 }
54 138
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
55 protected: 149 protected:
56 scoped_refptr<net::CryptoModule> slot_; 150 scoped_refptr<net::CryptoModule> slot_;
57 net::CertDatabase cert_db_; 151 net::CertDatabase cert_db_;
58 152
59 private: 153 private:
60 net::CertificateList ListCertsInSlot(PK11SlotInfo* slot) { 154 net::CertificateList ListCertsInSlot(PK11SlotInfo* slot) {
61 net::CertificateList result; 155 net::CertificateList result;
62 CERTCertList* cert_list = PK11_ListCertsInSlot(slot); 156 CERTCertList* cert_list = PK11_ListCertsInSlot(slot);
63 for (CERTCertListNode* node = CERT_LIST_HEAD(cert_list); 157 for (CERTCertListNode* node = CERT_LIST_HEAD(cert_list);
64 !CERT_LIST_END(node, cert_list); 158 !CERT_LIST_END(node, cert_list);
(...skipping 14 matching lines...) Expand all
79 for (size_t i = 0; i < certs.size(); ++i) { 173 for (size_t i = 0; i < certs.size(); ++i) {
80 if (!cert_db_.DeleteCertAndKey(certs[i])) 174 if (!cert_db_.DeleteCertAndKey(certs[i]))
81 ok = false; 175 ok = false;
82 } 176 }
83 return ok; 177 return ok;
84 } 178 }
85 179
86 static base::LazyInstance<ScopedTempDir> temp_db_dir_; 180 static base::LazyInstance<ScopedTempDir> temp_db_dir_;
87 }; 181 };
88 182
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
89 // static 225 // static
90 base::LazyInstance<ScopedTempDir> OncNetworkParserTest::temp_db_dir_ = 226 base::LazyInstance<ScopedTempDir> OncNetworkParserTest::temp_db_dir_ =
91 LAZY_INSTANCE_INITIALIZER; 227 LAZY_INSTANCE_INITIALIZER;
92 228
93 TEST_F(OncNetworkParserTest, TestCreateNetworkWifi1) { 229 TEST_F(OncNetworkParserTest, TestCreateNetworkWifi1) {
94 std::string test_blob( 230 std::string test_blob(
95 "{" 231 "{"
96 " \"NetworkConfigurations\": [{" 232 " \"NetworkConfigurations\": [{"
97 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\"," 233 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
98 " \"Type\": \"WiFi\"," 234 " \"Type\": \"WiFi\","
99 " \"WiFi\": {" 235 " \"WiFi\": {"
100 " \"Security\": \"WEP\"," 236 " \"Security\": \"WEP-PSK\","
101 " \"SSID\": \"ssid\"," 237 " \"SSID\": \"ssid\","
102 " \"Passphrase\": \"pass\"," 238 " \"Passphrase\": \"pass\","
103 " }" 239 " }"
104 " }]" 240 " }]"
105 "}"); 241 "}");
106 OncNetworkParser parser(test_blob); 242 OncNetworkParser parser(test_blob);
107 243
108 EXPECT_EQ(1, parser.GetNetworkConfigsSize()); 244 EXPECT_EQ(1, parser.GetNetworkConfigsSize());
109 EXPECT_EQ(0, parser.GetCertificatesSize()); 245 EXPECT_EQ(0, parser.GetCertificatesSize());
110 EXPECT_FALSE(parser.ParseNetwork(1)); 246 EXPECT_FALSE(parser.ParseNetwork(1));
111 Network* network = parser.ParseNetwork(0); 247 Network* network = parser.ParseNetwork(0);
112 ASSERT_TRUE(network); 248 ASSERT_TRUE(network);
113 249
114 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI); 250 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI);
115 WifiNetwork* wifi = static_cast<WifiNetwork*>(network); 251 WifiNetwork* wifi = static_cast<WifiNetwork*>(network);
116 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_WEP); 252 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_WEP);
253 CheckStringProperty(wifi, PROPERTY_INDEX_SECURITY, flimflam::kSecurityWep);
117 EXPECT_EQ(wifi->name(), "ssid"); 254 EXPECT_EQ(wifi->name(), "ssid");
255 CheckStringProperty(wifi, PROPERTY_INDEX_SSID, "ssid");
118 EXPECT_EQ(wifi->auto_connect(), false); 256 EXPECT_EQ(wifi->auto_connect(), false);
119 EXPECT_EQ(wifi->passphrase(), "pass"); 257 EXPECT_EQ(wifi->passphrase(), "pass");
258 CheckStringProperty(wifi, PROPERTY_INDEX_PASSPHRASE, "pass");
120 } 259 }
121 260
122 TEST_F(OncNetworkParserTest, TestCreateNetworkWifiEAP1) { 261 TEST_F(OncNetworkParserTest, TestCreateNetworkWifiEAP1) {
123 std::string test_blob( 262 std::string test_blob(
124 "{" 263 "{"
125 " \"NetworkConfigurations\": [{" 264 " \"NetworkConfigurations\": [{"
126 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\"," 265 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
127 " \"Type\": \"WiFi\"," 266 " \"Type\": \"WiFi\","
128 " \"WiFi\": {" 267 " \"WiFi\": {"
129 " \"Security\": \"WPA2\"," 268 " \"Security\": \"WPA-EAP\","
130 " \"SSID\": \"ssid\"," 269 " \"SSID\": \"ssid\","
131 " \"AutoConnect\": true," 270 " \"AutoConnect\": true,"
132 " \"EAP\": {" 271 " \"EAP\": {"
133 " \"Outer\": \"PEAP\"," 272 " \"Outer\": \"PEAP\","
134 " \"UseSystemCAs\": false," 273 " \"UseSystemCAs\": false,"
135 " }" 274 " }"
136 " }" 275 " }"
137 " }]" 276 " }]"
138 "}"); 277 "}");
139 OncNetworkParser parser(test_blob); 278 OncNetworkParser parser(test_blob);
140 279
141 EXPECT_EQ(1, parser.GetNetworkConfigsSize()); 280 EXPECT_EQ(1, parser.GetNetworkConfigsSize());
142 EXPECT_EQ(0, parser.GetCertificatesSize()); 281 EXPECT_EQ(0, parser.GetCertificatesSize());
143 EXPECT_FALSE(parser.ParseNetwork(1)); 282 EXPECT_FALSE(parser.ParseNetwork(1));
144 Network* network = parser.ParseNetwork(0); 283 Network* network = parser.ParseNetwork(0);
145 ASSERT_TRUE(network); 284 ASSERT_TRUE(network);
146 285
147 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI); 286 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI);
148 WifiNetwork* wifi = static_cast<WifiNetwork*>(network); 287 WifiNetwork* wifi = static_cast<WifiNetwork*>(network);
149 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_8021X); 288 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_8021X);
289 CheckStringProperty(wifi, PROPERTY_INDEX_SECURITY, flimflam::kSecurity8021x);
150 EXPECT_EQ(wifi->name(), "ssid"); 290 EXPECT_EQ(wifi->name(), "ssid");
151 EXPECT_EQ(wifi->auto_connect(), true); 291 EXPECT_EQ(wifi->auto_connect(), true);
292 CheckBooleanProperty(wifi, PROPERTY_INDEX_AUTO_CONNECT, true);
152 EXPECT_EQ(wifi->eap_method(), EAP_METHOD_PEAP); 293 EXPECT_EQ(wifi->eap_method(), EAP_METHOD_PEAP);
294 CheckStringProperty(wifi, PROPERTY_INDEX_EAP_METHOD,
295 flimflam::kEapMethodPEAP);
153 EXPECT_EQ(wifi->eap_use_system_cas(), false); 296 EXPECT_EQ(wifi->eap_use_system_cas(), false);
154 } 297 }
155 298
156 TEST_F(OncNetworkParserTest, TestCreateNetworkWifiEAP2) { 299 TEST_F(OncNetworkParserTest, TestCreateNetworkWifiEAP2) {
157 std::string test_blob( 300 std::string test_blob(
158 "{" 301 "{"
159 " \"NetworkConfigurations\": [{" 302 " \"NetworkConfigurations\": [{"
160 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\"," 303 " \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5045}\","
161 " \"Type\": \"WiFi\"," 304 " \"Type\": \"WiFi\","
162 " \"WiFi\": {" 305 " \"WiFi\": {"
163 " \"Security\": \"WPA2\"," 306 " \"Security\": \"WPA-EAP\","
164 " \"SSID\": \"ssid\"," 307 " \"SSID\": \"ssid\","
165 " \"AutoConnect\": false," 308 " \"AutoConnect\": false,"
166 " \"EAP\": {" 309 " \"EAP\": {"
167 " \"Outer\": \"LEAP\"," 310 " \"Outer\": \"LEAP\","
168 " \"Identity\": \"user\"," 311 " \"Identity\": \"user\","
169 " \"Password\": \"pass\"," 312 " \"Password\": \"pass\","
170 " \"AnonymousIdentity\": \"anon\"," 313 " \"AnonymousIdentity\": \"anon\","
171 " }" 314 " }"
172 " }" 315 " }"
173 " }]" 316 " }]"
174 "}"); 317 "}");
175 OncNetworkParser parser(test_blob); 318 OncNetworkParser parser(test_blob);
176 319
177 EXPECT_EQ(1, parser.GetNetworkConfigsSize()); 320 EXPECT_EQ(1, parser.GetNetworkConfigsSize());
178 EXPECT_EQ(0, parser.GetCertificatesSize()); 321 EXPECT_EQ(0, parser.GetCertificatesSize());
179 EXPECT_FALSE(parser.ParseNetwork(1)); 322 EXPECT_FALSE(parser.ParseNetwork(1));
180 Network* network = parser.ParseNetwork(0); 323 Network* network = parser.ParseNetwork(0);
181 ASSERT_TRUE(network); 324 ASSERT_TRUE(network);
182 325
183 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI); 326 EXPECT_EQ(network->type(), chromeos::TYPE_WIFI);
184 WifiNetwork* wifi = static_cast<WifiNetwork*>(network); 327 WifiNetwork* wifi = static_cast<WifiNetwork*>(network);
185 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_8021X); 328 EXPECT_EQ(wifi->encryption(), chromeos::SECURITY_8021X);
186 EXPECT_EQ(wifi->name(), "ssid"); 329 EXPECT_EQ(wifi->name(), "ssid");
187 EXPECT_EQ(wifi->auto_connect(), false); 330 EXPECT_EQ(wifi->auto_connect(), false);
188 EXPECT_EQ(wifi->eap_method(), EAP_METHOD_LEAP); 331 EXPECT_EQ(wifi->eap_method(), EAP_METHOD_LEAP);
189 EXPECT_EQ(wifi->eap_use_system_cas(), true); 332 EXPECT_EQ(wifi->eap_use_system_cas(), true);
190 EXPECT_EQ(wifi->eap_identity(), "user"); 333 EXPECT_EQ(wifi->eap_identity(), "user");
334 CheckStringProperty(wifi, PROPERTY_INDEX_EAP_IDENTITY, "user");
191 EXPECT_EQ(wifi->eap_passphrase(), "pass"); 335 EXPECT_EQ(wifi->eap_passphrase(), "pass");
336 CheckStringProperty(wifi, PROPERTY_INDEX_EAP_PASSWORD, "pass");
192 EXPECT_EQ(wifi->eap_anonymous_identity(), "anon"); 337 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 Network* network = parser.ParseNetwork(0);
352 ASSERT_TRUE(network != NULL);
353
354 EXPECT_EQ(network->type(), chromeos::TYPE_VPN);
355 CheckStringProperty(network, PROPERTY_INDEX_TYPE, flimflam::kTypeVPN);
356 VirtualNetwork* vpn = static_cast<VirtualNetwork*>(network);
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 Network* network = parser.ParseNetwork(0);
431 ASSERT_TRUE(network != NULL);
432
433 EXPECT_EQ(network->type(), chromeos::TYPE_VPN);
434 CheckStringProperty(network, PROPERTY_INDEX_TYPE, flimflam::kTypeVPN);
435 VirtualNetwork* vpn = static_cast<VirtualNetwork*>(network);
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());
193 } 447 }
194 448
195 TEST_F(OncNetworkParserTest, TestAddServerCertificate) { 449 TEST_F(OncNetworkParserTest, TestAddServerCertificate) {
196 std::string test_blob( 450 std::string test_blob(
197 "{" 451 "{"
198 " \"Certificates\": [" 452 " \"Certificates\": ["
199 " {" 453 " {"
200 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697aa}\"," 454 " \"GUID\": \"{f998f760-272b-6939-4c2beffe428697aa}\","
201 " \"Type\": \"Server\"," 455 " \"Type\": \"Server\","
202 " \"X509\": \"MIICWDCCAcECAxAAATANBgkqhkiG9w0BAQQFADCBkzEVM" 456 " \"X509\": \"MIICWDCCAcECAxAAATANBgkqhkiG9w0BAQQFADCBkzEVM"
(...skipping 12 matching lines...) Expand all
215 " }" 469 " }"
216 " ]," 470 " ],"
217 "}"); 471 "}");
218 OncNetworkParser parser(test_blob); 472 OncNetworkParser parser(test_blob);
219 473
220 EXPECT_EQ(1, parser.GetCertificatesSize()); 474 EXPECT_EQ(1, parser.GetCertificatesSize());
221 EXPECT_TRUE(parser.ParseCertificate(0)); 475 EXPECT_TRUE(parser.ParseCertificate(0));
222 } 476 }
223 477
224 TEST_F(OncNetworkParserTest, TestAddAuthorityCertificate) { 478 TEST_F(OncNetworkParserTest, TestAddAuthorityCertificate) {
225 const std::string test_blob("{" 479 const std::string test_blob(std::string("{"
226 " \"Certificates\": [" 480 " \"Certificates\": [") +
227 " {" 481 std::string(kCertificateWebAuthority) + std::string(
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 " }"
251 " ]," 482 " ],"
252 "}"); 483 "}"));
253 OncNetworkParser parser(test_blob); 484 OncNetworkParser parser(test_blob);
254 485
255 EXPECT_EQ(1, parser.GetCertificatesSize()); 486 EXPECT_EQ(1, parser.GetCertificatesSize());
256 EXPECT_TRUE(parser.ParseCertificate(0)); 487 EXPECT_TRUE(parser.ParseCertificate(0));
257 } 488 }
258 489
259 TEST_F(OncNetworkParserTest, TestAddClientCertificate) { 490 TEST_F(OncNetworkParserTest, TestAddClientCertificate) {
260 std::string test_blob( 491 std::string test_blob(
261 "{" 492 "{"
262 " \"Certificates\": [" 493 " \"Certificates\": ["
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 "AQU1M+0WRDkoVGbGg1jj7q2fI67qHIECBzRYESpgt5iAgIIAA==\"" 528 "AQU1M+0WRDkoVGbGg1jj7q2fI67qHIECBzRYESpgt5iAgIIAA==\""
298 " }" 529 " }"
299 " ]," 530 " ],"
300 "}"); 531 "}");
301 OncNetworkParser parser(test_blob); 532 OncNetworkParser parser(test_blob);
302 533
303 EXPECT_EQ(1, parser.GetCertificatesSize()); 534 EXPECT_EQ(1, parser.GetCertificatesSize());
304 EXPECT_TRUE(parser.ParseCertificate(0)); 535 EXPECT_TRUE(parser.ParseCertificate(0));
305 } 536 }
306 537
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 Network* network = parser.ParseNetwork(0);
555 ASSERT_TRUE(network != NULL);
556 EXPECT_EQ(network->type(), chromeos::TYPE_VPN);
557 VirtualNetwork* vpn = static_cast<VirtualNetwork*>(network);
558 EXPECT_EQ(PROVIDER_TYPE_OPEN_VPN, vpn->provider_type());
559 }
560
307 } // namespace chromeos 561 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698