Index: chromeos/network/onc/onc_validator_unittest.cc |
diff --git a/chromeos/network/onc/onc_validator_unittest.cc b/chromeos/network/onc/onc_validator_unittest.cc |
index f02e9cf38268aff78f4324b4dbec916e3a5a82d5..5d543fe761050be74159961b4d5399645759f964 100644 |
--- a/chromeos/network/onc/onc_validator_unittest.cc |
+++ b/chromeos/network/onc/onc_validator_unittest.cc |
@@ -5,12 +5,14 @@ |
#include "chromeos/network/onc/onc_validator.h" |
#include <string> |
+#include <utility> |
#include "base/memory/scoped_ptr.h" |
#include "base/values.h" |
#include "chromeos/network/onc/onc_constants.h" |
#include "chromeos/network/onc/onc_signature.h" |
#include "chromeos/network/onc/onc_test_utils.h" |
+#include "chromeos/network/onc/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)); |
+ scoped_ptr<const base::DictionaryValue> original( |
+ ReadDictionaryFromJson(kEmptyUnencryptedConfiguration)); |
+ |
+ Validator::Result result; |
+ scoped_ptr<const base::DictionaryValue> repaired( |
+ validator->ValidateAndRepairObject(&kToplevelConfigurationSignature, |
+ *original, &result)); |
+ EXPECT_EQ(Validator::VALID, result); |
+ EXPECT_TRUE(test_utils::Equals(original.get(), repaired.get())); |
+} |
+ |
// This test case is about validating valid ONC objects. |
-TEST(ONCValidatorValidTest, ValidPolicyOnc) { |
+class ONCValidatorValidTest |
+ : public ::testing::TestWithParam< |
+ std::pair<std::string, const OncValueSignature*> > { |
+ protected: |
+ std::string GetFilename() const { |
+ return GetParam().first; |
+ } |
+ |
+ const 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())); |
+ |
+ Validator::Result result; |
+ scoped_ptr<const base::DictionaryValue> repaired( |
+ validator->ValidateAndRepairObject(GetSignature(), *original, &result)); |
+ EXPECT_EQ(Validator::VALID, result); |
+ EXPECT_TRUE(test_utils::Equals(original.get(), repaired.get())); |
} |
+INSTANTIATE_TEST_CASE_P( |
+ ONCValidatorValidTest, |
+ ONCValidatorValidTest, |
+ ::testing::Values(std::make_pair("managed_toplevel.onc", |
+ &kToplevelConfigurationSignature), |
+ std::make_pair("encrypted.onc", |
+ &kToplevelConfigurationSignature), |
+ std::make_pair("managed_vpn.onc", |
+ &kNetworkConfigurationSignature), |
+ 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,11 +108,14 @@ class ONCValidatorInvalidTest : public ::testing::TestWithParam<bool> { |
const base::DictionaryValue* object = NULL; |
ASSERT_TRUE(invalid_->GetDictionary(path_to_object, &object)); |
+ Validator::Result result; |
scoped_ptr<base::DictionaryValue> actual_repaired = |
- validator->ValidateAndRepairObject(signature, *object); |
+ validator->ValidateAndRepairObject(signature, *object, &result); |
if (GetParam() || path_to_repaired == "") { |
+ EXPECT_EQ(Validator::INVALID, result); |
EXPECT_EQ(NULL, actual_repaired.get()); |
} else { |
+ EXPECT_EQ(Validator::VALID_WITH_WARNINGS, result); |
const base::DictionaryValue* expected_repaired = NULL; |
invalid_->GetDictionary(path_to_repaired, &expected_repaired); |
EXPECT_TRUE(test_utils::Equals(expected_repaired, actual_repaired.get())); |