blob: ff07b0c5867101af04a10262888eee14cbb3b937 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/network/network_ui_data.h"
#include "base/values.h"
#include "chromeos/network/onc/onc_test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace chromeos {
TEST(NetworkUIDataTest, ONCSource) {
base::DictionaryValue ui_data_dict;
ui_data_dict.SetString(NetworkUIData::kKeyONCSource, "user_import");
{
NetworkUIData ui_data(ui_data_dict);
EXPECT_EQ(::onc::ONC_SOURCE_USER_IMPORT, ui_data.onc_source());
EXPECT_FALSE(ui_data.is_managed());
}
ui_data_dict.SetString(NetworkUIData::kKeyONCSource, "device_policy");
{
NetworkUIData ui_data(ui_data_dict);
EXPECT_EQ(::onc::ONC_SOURCE_DEVICE_POLICY, ui_data.onc_source());
EXPECT_TRUE(ui_data.is_managed());
}
ui_data_dict.SetString(NetworkUIData::kKeyONCSource, "user_policy");
{
NetworkUIData ui_data(ui_data_dict);
EXPECT_EQ(::onc::ONC_SOURCE_USER_POLICY, ui_data.onc_source());
EXPECT_TRUE(ui_data.is_managed());
}
}
TEST(NetworkUIDataTest, CertificateType) {
{
base::DictionaryValue ui_data_dict;
ui_data_dict.SetString(NetworkUIData::kKeyCertificateType, "none");
NetworkUIData ui_data(ui_data_dict);
EXPECT_EQ(CLIENT_CERT_TYPE_NONE, ui_data.certificate_type());
}
{
base::DictionaryValue ui_data_dict;
ui_data_dict.SetString(NetworkUIData::kKeyCertificateType, "ref");
NetworkUIData ui_data(ui_data_dict);
EXPECT_EQ(CLIENT_CERT_TYPE_REF, ui_data.certificate_type());
}
{
// for type pattern we need to have some kind of pattern
std::string organization("Little If Any, Inc.");
base::DictionaryValue ui_data_dict;
base::DictionaryValue* pattern_dict = new base::DictionaryValue;
base::DictionaryValue* issuer_dict = new base::DictionaryValue;
issuer_dict->SetString("Organization", organization);
pattern_dict->Set("Issuer", issuer_dict);
ui_data_dict.Set("certificate_pattern", pattern_dict);
ui_data_dict.SetString(NetworkUIData::kKeyCertificateType, "pattern");
NetworkUIData ui_data(ui_data_dict);
EXPECT_EQ(CLIENT_CERT_TYPE_PATTERN, ui_data.certificate_type());
}
}
TEST(NetworkUIDataTest, CertificatePattern) {
std::string organization("Little If Any, Inc.");
base::DictionaryValue ui_data_dict;
base::DictionaryValue* pattern_dict = new base::DictionaryValue;
base::DictionaryValue* issuer_dict = new base::DictionaryValue;
issuer_dict->SetString("Organization", organization);
pattern_dict->Set("Issuer", issuer_dict);
ui_data_dict.SetString("certificate_type", "pattern");
ui_data_dict.Set("certificate_pattern", pattern_dict);
NetworkUIData ui_data(ui_data_dict);
EXPECT_FALSE(ui_data.certificate_pattern().Empty());
EXPECT_EQ(organization,
ui_data.certificate_pattern().issuer().organization());
}
class CreateUIDataTest
: public ::testing::TestWithParam<std::pair<std::string, std::string> > {
};
TEST_P(CreateUIDataTest, CreateUIDataFromONC) {
namespace test_utils = onc::test_utils;
scoped_ptr<base::DictionaryValue> onc_network =
test_utils::ReadTestDictionary(GetParam().first);
scoped_ptr<base::DictionaryValue> expected_uidata =
test_utils::ReadTestDictionary(GetParam().second);
scoped_ptr<NetworkUIData> actual_uidata =
NetworkUIData::CreateFromONC(
::onc::ONC_SOURCE_USER_POLICY, *onc_network);
EXPECT_TRUE(actual_uidata != NULL);
base::DictionaryValue actual_uidata_dict;
actual_uidata->FillDictionary(&actual_uidata_dict);
EXPECT_TRUE(test_utils::Equals(&actual_uidata_dict, expected_uidata.get()));
}
INSTANTIATE_TEST_CASE_P(
CreateUIDataTest,
CreateUIDataTest,
::testing::Values(
std::make_pair("wifi_clientcert_with_cert_pems.onc",
"uidata_for_wifi_clientcert.json"),
std::make_pair("valid_wifi_clientref.onc",
"uidata_for_wifi_clientref.json"),
std::make_pair("valid_wifi_psk.onc",
"uidata_for_wifi_psk.json"),
std::make_pair("openvpn_clientcert_with_cert_pems.onc",
"uidata_for_openvpn_clientcert.json"),
std::make_pair("l2tpipsec_clientcert_with_cert_pems.onc",
"uidata_for_l2tpipsec_clientcert.json")));
} // namespace chromeos