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 { |