Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4538)

Unified Diff: chrome/browser/chromeos/network_settings/onc_validator_unittest.cc

Issue 11415148: Adding error handling to ONC validation. (Closed) Base URL: http://git.chromium.org/chromium/src.git@extract_onc_certificate
Patch Set: Initial patch. Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 {

Powered by Google App Engine
This is Rietveld 408576698