| Index: chrome/browser/chromeos/network_settings/onc_validator_unittest.cc | 
| diff --git a/chrome/browser/chromeos/network_settings/onc_validator_unittest.cc b/chrome/browser/chromeos/network_settings/onc_validator_unittest.cc | 
| index 1b97e5d3a4547406397f5800e2ac164b3e905acd..c10d182b07dcf29a4dc875874b36b7a41895a7d5 100644 | 
| --- a/chrome/browser/chromeos/network_settings/onc_validator_unittest.cc | 
| +++ b/chrome/browser/chromeos/network_settings/onc_validator_unittest.cc | 
| @@ -6,11 +6,13 @@ | 
|  | 
| #include <string> | 
|  | 
| +#include "base/logging.h" | 
| #include "base/memory/scoped_ptr.h" | 
| #include "base/values.h" | 
| #include "chrome/browser/chromeos/cros/onc_constants.h" | 
| #include "chrome/browser/chromeos/network_settings/onc_signature.h" | 
| #include "chrome/browser/chromeos/network_settings/onc_test_utils.h" | 
| +#include "chrome/browser/chromeos/network_settings/onc_utils.h" | 
| #include "testing/gtest/include/gtest/gtest.h" | 
|  | 
| namespace chromeos { | 
| @@ -28,25 +30,60 @@ scoped_ptr<Validator> CreateLiberalValidator(bool managed_onc) { | 
| } | 
| }  // namespace | 
|  | 
| +TEST(ONCValidatorValidTest, EmptyUnencryptedConfiguration) { | 
| +  scoped_ptr<Validator> validator(CreateStrictValidator(true)); | 
| +  std::string error; | 
| +  scoped_ptr<const base::DictionaryValue> original( | 
| +      ReadDictionaryFromJson(kEmptyUnencryptedConfiguration, &error)); | 
| + | 
| +  std::string messages; | 
| +  scoped_ptr<const base::DictionaryValue> repaired( | 
| +      validator->ValidateAndRepairObject(&kToplevelConfigurationSignature, | 
| +                                         *original, &messages)); | 
| +  EXPECT_TRUE(messages.empty()); | 
| +  EXPECT_TRUE(test_utils::Equals(original.get(), repaired.get())) << messages; | 
| +} | 
| + | 
| // This test case is about validating valid ONC objects. | 
| -TEST(ONCValidatorValidTest, ValidPolicyOnc) { | 
| +class ONCValidatorValidTest | 
| +    : public ::testing::TestWithParam< | 
| +        std::pair<std::string, | 
| +                  const onc::OncValueSignature*> > { | 
| + protected: | 
| +  std::string GetFilename() const { | 
| +    return GetParam().first; | 
| +  } | 
| + | 
| +  const onc::OncValueSignature* GetSignature() const { | 
| +    return GetParam().second; | 
| +  } | 
| +}; | 
| + | 
| +TEST_P(ONCValidatorValidTest, ValidPolicyOnc) { | 
| scoped_ptr<Validator> validator(CreateStrictValidator(true)); | 
| -  scoped_ptr<const base::DictionaryValue> network; | 
| -  scoped_ptr<base::DictionaryValue> repaired; | 
| - | 
| -  network = test_utils::ReadTestDictionary("policy.onc"); | 
| -  repaired = validator->ValidateAndRepairObject( | 
| -      &kNetworkConfigurationSignature, | 
| -      *network); | 
| -  EXPECT_TRUE(test_utils::Equals(network.get(), repaired.get())); | 
| - | 
| -  network = test_utils::ReadTestDictionary("valid.onc"); | 
| -  repaired = validator->ValidateAndRepairObject( | 
| -      &kNetworkConfigurationSignature, | 
| -      *network); | 
| -  EXPECT_TRUE(test_utils::Equals(network.get(), repaired.get())); | 
| +  scoped_ptr<const base::DictionaryValue> original( | 
| +      test_utils::ReadTestDictionary(GetFilename())); | 
| + | 
| +  std::string messages; | 
| +  scoped_ptr<const base::DictionaryValue> repaired( | 
| +      validator->ValidateAndRepairObject(GetSignature(), *original, &messages)); | 
| +  EXPECT_TRUE(messages.empty()); | 
| +  EXPECT_TRUE(test_utils::Equals(original.get(), repaired.get())) << messages; | 
| } | 
|  | 
| +INSTANTIATE_TEST_CASE_P( | 
| +    ONCValidatorValidTest, | 
| +    ONCValidatorValidTest, | 
| +    ::testing::Values(std::make_pair("managed_vpn.onc", | 
| +                                     &kNetworkConfigurationSignature), | 
| +                      std::make_pair("managed_toplevel.onc", | 
| +                                     &kToplevelConfigurationSignature), | 
| +                      std::make_pair("managed_ethernet.onc", | 
| +                                     &kNetworkConfigurationSignature), | 
| +                      // Ignore recommended arrays in unmanaged ONC: | 
| +                      std::make_pair("recommended_in_unmanaged.onc", | 
| +                                     &kNetworkConfigurationSignature))); | 
| + | 
| // Validate invalid ONC objects and check the resulting repaired object. This | 
| // test fixture loads a test json file into |invalid_| containing several test | 
| // objects which can be accessed by their path. The test boolean parameter | 
| @@ -71,8 +108,11 @@ class ONCValidatorInvalidTest : public ::testing::TestWithParam<bool> { | 
| const base::DictionaryValue* object = NULL; | 
| ASSERT_TRUE(invalid_->GetDictionary(path_to_object, &object)); | 
|  | 
| +    std::string messages; | 
| scoped_ptr<base::DictionaryValue> actual_repaired = | 
| -        validator->ValidateAndRepairObject(signature, *object); | 
| +        validator->ValidateAndRepairObject(signature, *object, &messages); | 
| +    EXPECT_FALSE(messages.empty()); | 
| +    DVLOG(1) << messages; | 
| if (GetParam() || path_to_repaired == "") { | 
| EXPECT_EQ(NULL, actual_repaired.get()); | 
| } else { | 
|  |