network_ui_data_unittest.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chromeos/network/network_ui_data.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/values.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chromeos/network/onc/onc_test_utils.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace chromeos {
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(NetworkUIDataTest, ONCSource) {
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::DictionaryValue ui_data_dict;
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ui_data_dict.SetString(NetworkUIData::kKeyONCSource, "user_import");
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    NetworkUIData ui_data(ui_data_dict);
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (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)  }
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ui_data_dict.SetString(NetworkUIData::kKeyONCSource, "device_policy");
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    NetworkUIData ui_data(ui_data_dict);
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EXPECT_EQ(::onc::ONC_SOURCE_DEVICE_POLICY, ui_data.onc_source());
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EXPECT_TRUE(ui_data.is_managed());
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ui_data_dict.SetString(NetworkUIData::kKeyONCSource, "user_policy");
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    NetworkUIData ui_data(ui_data_dict);
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EXPECT_EQ(::onc::ONC_SOURCE_USER_POLICY, ui_data.onc_source());
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EXPECT_TRUE(ui_data.is_managed());
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(NetworkUIDataTest, CertificateType) {
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    base::DictionaryValue ui_data_dict;
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ui_data_dict.SetString(NetworkUIData::kKeyCertificateType, "none");
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    NetworkUIData ui_data(ui_data_dict);
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EXPECT_EQ(CLIENT_CERT_TYPE_NONE, ui_data.certificate_type());
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  {
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    base::DictionaryValue ui_data_dict;
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ui_data_dict.SetString(NetworkUIData::kKeyCertificateType, "ref");
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    NetworkUIData ui_data(ui_data_dict);
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EXPECT_EQ(CLIENT_CERT_TYPE_REF, ui_data.certificate_type());
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  {
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // for type pattern we need to have some kind of pattern
52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    std::string organization("Little If Any, Inc.");
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    base::DictionaryValue ui_data_dict;
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    base::DictionaryValue* pattern_dict = new base::DictionaryValue;
55a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    base::DictionaryValue* issuer_dict = new base::DictionaryValue;
56a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    issuer_dict->SetString("Organization", organization);
57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    pattern_dict->Set("Issuer", issuer_dict);
58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    ui_data_dict.Set("certificate_pattern", pattern_dict);
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    ui_data_dict.SetString(NetworkUIData::kKeyCertificateType, "pattern");
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    NetworkUIData ui_data(ui_data_dict);
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    EXPECT_EQ(CLIENT_CERT_TYPE_PATTERN, ui_data.certificate_type());
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(NetworkUIDataTest, CertificatePattern) {
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string organization("Little If Any, Inc.");
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::DictionaryValue ui_data_dict;
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::DictionaryValue* pattern_dict = new base::DictionaryValue;
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::DictionaryValue* issuer_dict = new base::DictionaryValue;
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  issuer_dict->SetString("Organization", organization);
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  pattern_dict->Set("Issuer", issuer_dict);
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ui_data_dict.SetString("certificate_type", "pattern");
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ui_data_dict.Set("certificate_pattern", pattern_dict);
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  NetworkUIData ui_data(ui_data_dict);
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_FALSE(ui_data.certificate_pattern().Empty());
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_EQ(organization,
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)            ui_data.certificate_pattern().issuer().organization());
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CreateUIDataTest
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    : public ::testing::TestWithParam<std::pair<std::string, std::string> > {
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_P(CreateUIDataTest, CreateUIDataFromONC) {
852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  namespace test_utils = onc::test_utils;
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<base::DictionaryValue> onc_network =
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      test_utils::ReadTestDictionary(GetParam().first);
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<base::DictionaryValue> expected_uidata =
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      test_utils::ReadTestDictionary(GetParam().second);
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<NetworkUIData> actual_uidata =
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      NetworkUIData::CreateFromONC(
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          ::onc::ONC_SOURCE_USER_POLICY, *onc_network);
952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(actual_uidata != NULL);
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::DictionaryValue actual_uidata_dict;
982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  actual_uidata->FillDictionary(&actual_uidata_dict);
992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(test_utils::Equals(&actual_uidata_dict, expected_uidata.get()));
1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
101f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciINSTANTIATE_TEST_CASE_P(
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    CreateUIDataTest,
1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    CreateUIDataTest,
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ::testing::Values(
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)         std::make_pair("wifi_clientcert_with_cert_pems.onc",
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        "uidata_for_wifi_clientcert.json"),
1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)         std::make_pair("valid_wifi_clientref.onc",
1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        "uidata_for_wifi_clientref.json"),
1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)         std::make_pair("valid_wifi_psk.onc",
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        "uidata_for_wifi_psk.json"),
1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)         std::make_pair("openvpn_clientcert_with_cert_pems.onc",
1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        "uidata_for_openvpn_clientcert.json"),
114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)         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
118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)