onc_translator_unittest.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Use of this source code is governed by a BSD-style license that can be
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// found in the LICENSE file.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "chromeos/network/onc/onc_translator.h"
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "base/memory/scoped_ptr.h"
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "base/values.h"
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "chromeos/network/onc/onc_signature.h"
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "chromeos/network/onc/onc_test_utils.h"
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "components/onc/onc_constants.h"
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "testing/gtest/include/gtest/gtest.h"
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace chromeos {
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnamespace onc {
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// First parameter: Filename of source ONC.
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Second parameter: Filename of expected translated Shill json.
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectclass ONCTranslatorOncToShillTest
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    : public ::testing::TestWithParam<std::pair<std::string, std::string> > {
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project};
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Test the translation from ONC to Shill json.
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectTEST_P(ONCTranslatorOncToShillTest, Translate) {
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  std::string source_onc_filename = GetParam().first;
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  scoped_ptr<const base::DictionaryValue> onc_network(
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project      test_utils::ReadTestDictionary(source_onc_filename));
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  std::string result_shill_filename = GetParam().second;
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  scoped_ptr<const base::DictionaryValue> expected_shill_network(
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project      test_utils::ReadTestDictionary(result_shill_filename));
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  scoped_ptr<base::DictionaryValue> translation(TranslateONCObjectToShill(
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project      &kNetworkConfigurationSignature, *onc_network));
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  EXPECT_TRUE(test_utils::Equals(expected_shill_network.get(),
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                                 translation.get()));
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Test different network types, such that each ONC object type is tested at
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// least once.
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectINSTANTIATE_TEST_CASE_P(
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    ONCTranslatorOncToShillTest,
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    ONCTranslatorOncToShillTest,
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    ::testing::Values(
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("ethernet.onc", "shill_ethernet.json"),
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("ethernet_with_eap_and_cert_pems.onc",
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "shill_ethernet_with_eap.json"),
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("valid_wifi_psk.onc", "shill_wifi_psk.json"),
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("wifi_clientcert_with_cert_pems.onc",
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "shill_wifi_clientcert.json"),
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("valid_wifi_clientref.onc", "shill_wifi_clientref.json"),
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("valid_l2tpipsec.onc", "shill_l2tpipsec.json"),
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("l2tpipsec_clientcert_with_cert_pems.onc",
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "shill_l2tpipsec_clientcert.json"),
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("valid_openvpn_with_cert_pems.onc",
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "shill_openvpn.json"),
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("openvpn_clientcert_with_cert_pems.onc",
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "shill_openvpn_clientcert.json"),
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("cellular.onc",
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "shill_cellular.json")));
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// First parameter: Filename of source Shill json.
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Second parameter: Filename of expected translated ONC network part.
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// Note: This translation direction doesn't have to reconstruct all of the ONC
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// fields, as Chrome doesn't need all of a Service's properties.
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectclass ONCTranslatorShillToOncTest
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    : public ::testing::TestWithParam<std::pair<std::string, std::string> > {
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project};
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectTEST_P(ONCTranslatorShillToOncTest, Translate) {
7298d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom  std::string source_shill_filename = GetParam().first;
7398d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom  scoped_ptr<const base::DictionaryValue> shill_network(
7498d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom      test_utils::ReadTestDictionary(source_shill_filename));
7598d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom
7698d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom  std::string result_onc_filename = GetParam().second;
7798d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom  scoped_ptr<base::DictionaryValue> expected_onc_network(
7898d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom      test_utils::ReadTestDictionary(result_onc_filename));
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  scoped_ptr<base::DictionaryValue> translation(TranslateShillServiceToONCPart(
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project      *shill_network, &kNetworkWithStateSignature));
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  EXPECT_TRUE(test_utils::Equals(expected_onc_network.get(),
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                                 translation.get()));
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectINSTANTIATE_TEST_CASE_P(
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    ONCTranslatorShillToOncTest,
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    ONCTranslatorShillToOncTest,
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    ::testing::Values(
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("shill_ethernet.json",
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "translation_of_shill_ethernet.onc"),
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("shill_ethernet_with_eap.json",
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "translation_of_shill_ethernet_with_eap.onc"),
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("shill_wifi_clientcert.json",
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "translation_of_shill_wifi_clientcert.onc"),
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("shill_wifi_wpa1.json",
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "translation_of_shill_wifi_wpa1.onc"),
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("shill_l2tpipsec.json",
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "translation_of_shill_l2tpipsec.onc"),
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("shill_openvpn.json",
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "translation_of_shill_openvpn.onc"),
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("shill_openvpn_with_errors.json",
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "translation_of_shill_openvpn_with_errors.onc"),
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("shill_wifi_with_state.json",
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "translation_of_shill_wifi_with_state.onc"),
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        std::make_pair("shill_cellular_with_state.json",
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project                       "translation_of_shill_cellular_with_state.onc")));
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}  // namespace onc
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}  // namespace chromeos
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project