onc_translator_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/onc/onc_translator.h" 6 7#include "base/memory/scoped_ptr.h" 8#include "base/values.h" 9#include "chromeos/network/onc/onc_constants.h" 10#include "chromeos/network/onc/onc_signature.h" 11#include "chromeos/network/onc/onc_test_utils.h" 12#include "testing/gtest/include/gtest/gtest.h" 13 14namespace chromeos { 15namespace onc { 16 17// First parameter: Filename of source ONC. 18// Second parameter: Filename of expected translated Shill json. 19class ONCTranslatorOncToShillTest 20 : public ::testing::TestWithParam<std::pair<std::string, std::string> > { 21}; 22 23// Test the translation from ONC to Shill json. 24TEST_P(ONCTranslatorOncToShillTest, Translate) { 25 std::string source_onc_filename = GetParam().first; 26 scoped_ptr<const base::DictionaryValue> onc_network( 27 test_utils::ReadTestDictionary(source_onc_filename)); 28 std::string result_shill_filename = GetParam().second; 29 scoped_ptr<const base::DictionaryValue> expected_shill_network( 30 test_utils::ReadTestDictionary(result_shill_filename)); 31 32 scoped_ptr<base::DictionaryValue> translation(TranslateONCObjectToShill( 33 &kNetworkConfigurationSignature, *onc_network)); 34 35 EXPECT_TRUE(test_utils::Equals(expected_shill_network.get(), 36 translation.get())); 37} 38 39// Test different network types, such that each ONC object type is tested at 40// least once. 41INSTANTIATE_TEST_CASE_P( 42 ONCTranslatorOncToShillTest, 43 ONCTranslatorOncToShillTest, 44 ::testing::Values( 45 std::make_pair("managed_ethernet.onc", "shill_ethernet.json"), 46 std::make_pair("valid_wifi_psk.onc", "shill_wifi_psk.json"), 47 std::make_pair("wifi_clientcert_with_cert_pems.onc", 48 "shill_wifi_clientcert.json"), 49 std::make_pair("valid_wifi_clientref.onc", 50 "shill_wifi_clientref.json"), 51 std::make_pair("valid_l2tpipsec.onc", "shill_l2tpipsec.json"), 52 std::make_pair("l2tpipsec_clientcert_with_cert_pems.onc", 53 "shill_l2tpipsec_clientcert.json"), 54 std::make_pair("valid_openvpn_with_cert_pems.onc", 55 "shill_openvpn.json"), 56 std::make_pair("openvpn_clientcert_with_cert_pems.onc", 57 "shill_openvpn_clientcert.json"))); 58 59// First parameter: Filename of source Shill json. 60// Second parameter: Filename of expected translated ONC network part. 61// 62// Note: This translation direction doesn't have to reconstruct all of the ONC 63// fields, as Chrome doesn't need all of a Service's properties. 64class ONCTranslatorShillToOncTest 65 : public ::testing::TestWithParam<std::pair<std::string, std::string> > { 66}; 67 68TEST_P(ONCTranslatorShillToOncTest, Translate) { 69 std::string source_shill_filename = GetParam().first; 70 scoped_ptr<const base::DictionaryValue> shill_network( 71 test_utils::ReadTestDictionary(source_shill_filename)); 72 73 std::string result_onc_filename = GetParam().second; 74 scoped_ptr<base::DictionaryValue> expected_onc_network( 75 test_utils::ReadTestDictionary(result_onc_filename)); 76 77 scoped_ptr<base::DictionaryValue> translation(TranslateShillServiceToONCPart( 78 *shill_network, &kNetworkWithStateSignature)); 79 80 EXPECT_TRUE(test_utils::Equals(expected_onc_network.get(), 81 translation.get())); 82} 83 84INSTANTIATE_TEST_CASE_P( 85 ONCTranslatorShillToOncTest, 86 ONCTranslatorShillToOncTest, 87 ::testing::Values( 88 std::make_pair("shill_l2tpipsec.json", 89 "translation_of_shill_l2tpipsec.onc"), 90 std::make_pair("shill_openvpn.json", 91 "translation_of_shill_openvpn.onc"), 92 std::make_pair("shill_openvpn_with_errors.json", 93 "translation_of_shill_openvpn_with_errors.onc"), 94 std::make_pair("shill_wifi_with_state.json", 95 "translation_of_shill_wifi_with_state.onc"))); 96 97} // namespace onc 98} // namespace chromeos 99