1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/network/network_ui_data.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/values.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/network/onc/onc_test_utils.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos { 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST(NetworkUIDataTest, ONCSource) { 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue ui_data_dict; 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_data_dict.SetString(NetworkUIData::kKeyONCSource, "user_import"); 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkUIData ui_data(ui_data_dict); 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(::onc::ONC_SOURCE_USER_IMPORT, ui_data.onc_source()); 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(ui_data.is_managed()); 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_data_dict.SetString(NetworkUIData::kKeyONCSource, "device_policy"); 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkUIData ui_data(ui_data_dict); 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(::onc::ONC_SOURCE_DEVICE_POLICY, ui_data.onc_source()); 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(ui_data.is_managed()); 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_data_dict.SetString(NetworkUIData::kKeyONCSource, "user_policy"); 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkUIData ui_data(ui_data_dict); 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(::onc::ONC_SOURCE_USER_POLICY, ui_data.onc_source()); 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(ui_data.is_managed()); 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST(NetworkUIDataTest, CertificateType) { 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue ui_data_dict; 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_data_dict.SetString(NetworkUIData::kKeyCertificateType, "none"); 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkUIData ui_data(ui_data_dict); 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(CLIENT_CERT_TYPE_NONE, ui_data.certificate_type()); 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue ui_data_dict; 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_data_dict.SetString(NetworkUIData::kKeyCertificateType, "ref"); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkUIData ui_data(ui_data_dict); 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(CLIENT_CERT_TYPE_REF, ui_data.certificate_type()); 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // for type pattern we need to have some kind of pattern 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string organization("Little If Any, Inc."); 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue ui_data_dict; 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue* pattern_dict = new base::DictionaryValue; 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue* issuer_dict = new base::DictionaryValue; 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) issuer_dict->SetString("Organization", organization); 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pattern_dict->Set("Issuer", issuer_dict); 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_data_dict.Set("certificate_pattern", pattern_dict); 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_data_dict.SetString(NetworkUIData::kKeyCertificateType, "pattern"); 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkUIData ui_data(ui_data_dict); 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(CLIENT_CERT_TYPE_PATTERN, ui_data.certificate_type()); 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST(NetworkUIDataTest, CertificatePattern) { 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string organization("Little If Any, Inc."); 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue ui_data_dict; 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue* pattern_dict = new base::DictionaryValue; 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue* issuer_dict = new base::DictionaryValue; 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) issuer_dict->SetString("Organization", organization); 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pattern_dict->Set("Issuer", issuer_dict); 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_data_dict.SetString("certificate_type", "pattern"); 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_data_dict.Set("certificate_pattern", pattern_dict); 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkUIData ui_data(ui_data_dict); 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(ui_data.certificate_pattern().Empty()); 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(organization, 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_data.certificate_pattern().issuer().organization()); 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class CreateUIDataTest 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : public ::testing::TestWithParam<std::pair<std::string, std::string> > { 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_P(CreateUIDataTest, CreateUIDataFromONC) { 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) namespace test_utils = onc::test_utils; 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<base::DictionaryValue> onc_network = 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test_utils::ReadTestDictionary(GetParam().first); 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<base::DictionaryValue> expected_uidata = 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test_utils::ReadTestDictionary(GetParam().second); 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<NetworkUIData> actual_uidata = 93a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) NetworkUIData::CreateFromONC( 944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ::onc::ONC_SOURCE_USER_POLICY, *onc_network); 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(actual_uidata != NULL); 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::DictionaryValue actual_uidata_dict; 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) actual_uidata->FillDictionary(&actual_uidata_dict); 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(test_utils::Equals(&actual_uidata_dict, expected_uidata.get())); 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)INSTANTIATE_TEST_CASE_P( 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CreateUIDataTest, 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CreateUIDataTest, 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ::testing::Values( 106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::make_pair("wifi_clientcert_with_cert_pems.onc", 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "uidata_for_wifi_clientcert.json"), 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::make_pair("valid_wifi_clientref.onc", 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "uidata_for_wifi_clientref.json"), 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::make_pair("valid_wifi_psk.onc", 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "uidata_for_wifi_psk.json"), 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::make_pair("openvpn_clientcert_with_cert_pems.onc", 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "uidata_for_openvpn_clientcert.json"), 114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::make_pair("l2tpipsec_clientcert_with_cert_pems.onc", 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "uidata_for_l2tpipsec_clientcert.json"))); 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 118