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