diff --git a/phosphor-regulators/test/validate-regulators-config_tests.cpp b/phosphor-regulators/test/validate-regulators-config_tests.cpp
index 33e762b..8a8ee9f 100644
--- a/phosphor-regulators/test/validate-regulators-config_tests.cpp
+++ b/phosphor-regulators/test/validate-regulators-config_tests.cpp
@@ -538,6 +538,139 @@
                             "1 is not of type u'string'");
     }
 }
+TEST(ValidateRegulatorsConfigTest, Configuration)
+{
+    json configurationFile = validConfigFile;
+    configurationFile["chassis"][0]["devices"][0]["configuration"]["comments"]
+                     [0] = "Set rail to 1.25V using standard rule";
+    configurationFile["chassis"][0]["devices"][0]["configuration"]["volts"] =
+        1.25;
+    configurationFile["chassis"][0]["devices"][0]["configuration"]["rule_id"] =
+        "set_voltage_rule";
+    // Valid: test configuration with property rule_id and with no actions.
+    {
+        json configFile = configurationFile;
+        EXPECT_JSON_VALID(configFile);
+    }
+    // Valid: test configuration with property actions and with no rule_id.
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"].erase(
+            "rule_id");
+        configFile["chassis"][0]["devices"][0]["configuration"]["actions"][0]
+                  ["compare_presence"]["fru"] =
+                      "/system/chassis/motherboard/cpu3";
+        configFile["chassis"][0]["devices"][0]["configuration"]["actions"][0]
+                  ["compare_presence"]["value"] = true;
+        EXPECT_JSON_VALID(configFile);
+    }
+    // Valid: comments not specified (optional property).
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"].erase(
+            "comments");
+        EXPECT_JSON_VALID(configFile);
+    }
+    // Valid: volts not specified (optional property).
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"].erase("volts");
+        EXPECT_JSON_VALID(configFile);
+    }
+    // Valid: configuration is property of a rail (vs. a device).
+    {
+        json configFile = validConfigFile;
+        configFile["chassis"][0]["devices"][0]["rails"][0]["configuration"]
+                  ["comments"][0] = "Set rail to 1.25V using standard rule";
+        configFile["chassis"][0]["devices"][0]["rails"][0]["configuration"]
+                  ["volts"] = 1.25;
+        configFile["chassis"][0]["devices"][0]["rails"][0]["configuration"]
+                  ["rule_id"] = "set_voltage_rule";
+        EXPECT_JSON_VALID(configFile);
+    }
+    // Invalid: comments property has wrong data type (not an array).
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"]["comments"] = 1;
+        EXPECT_JSON_INVALID(configFile, "Validation failed.",
+                            "1 is not of type u'array'");
+    }
+    // Invalid: test configuration with both actions and rule_id properties.
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"]["actions"][0]
+                  ["compare_presence"]["fru"] =
+                      "/system/chassis/motherboard/cpu3";
+        configFile["chassis"][0]["devices"][0]["configuration"]["actions"][0]
+                  ["compare_presence"]["value"] = true;
+        EXPECT_JSON_INVALID(
+            configFile, "Validation failed.",
+            "{u'volts': 1.25, u'comments': [u'Set rail to 1.25V using standard "
+            "rule'], u'actions': [{u'compare_presence': {u'value': True, "
+            "u'fru': u'/system/chassis/motherboard/cpu3'}}], u'rule_id': "
+            "u'set_voltage_rule'} is valid under each of {u'required': "
+            "[u'actions']}, {u'required': [u'rule_id']}");
+    }
+    // Invalid: test configuration with no rule_id and actions.
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"].erase(
+            "rule_id");
+        EXPECT_JSON_INVALID(configFile, "Validation failed.",
+                            "u'rule_id' is a required property");
+    }
+    // Invalid: test configuration with property volts wrong type.
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"]["volts"] = true;
+        EXPECT_JSON_INVALID(configFile, "Validation failed.",
+                            "True is not of type u'number'");
+    }
+    // Invalid: test configuration with property rule_id wrong type.
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"]["rule_id"] =
+            true;
+        EXPECT_JSON_INVALID(configFile, "Validation failed.",
+                            "True is not of type u'string'");
+    }
+    // Invalid: test configuration with property actions wrong type.
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"].erase(
+            "rule_id");
+        configFile["chassis"][0]["devices"][0]["configuration"]["actions"] =
+            true;
+        EXPECT_JSON_INVALID(configFile, "Validation failed.",
+                            "True is not of type u'array'");
+    }
+    // Invalid: test configuration with property comments empty array.
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"]["comments"] =
+            json::array();
+        EXPECT_JSON_INVALID(configFile, "Validation failed.",
+                            "[] is too short");
+    }
+    // Invalid: test configuration with property rule_id wrong format.
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"]["rule_id"] =
+            "id!";
+        EXPECT_JSON_INVALID(configFile, "Validation failed.",
+                            "u'id!' does not match u'^[A-Za-z0-9_]+$'");
+    }
+    // Invalid: test configuration with property actions empty array.
+    {
+        json configFile = configurationFile;
+        configFile["chassis"][0]["devices"][0]["configuration"].erase(
+            "rule_id");
+        configFile["chassis"][0]["devices"][0]["configuration"]["actions"] =
+            json::array();
+        EXPECT_JSON_INVALID(configFile, "Validation failed.",
+                            "[] is too short");
+    }
+}
 TEST(ValidateRegulatorsConfigTest, Device)
 {
 
