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