]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[709-cb_cmds-add-support-for-commands-to-manage-the-servers] Added a toElement method...
authorFrancis Dupont <fdupont@isc.org>
Wed, 3 Jul 2019 07:19:20 +0000 (09:19 +0200)
committerFrancis Dupont <fdupont@isc.org>
Wed, 3 Jul 2019 23:10:51 +0000 (01:10 +0200)
src/lib/database/server.cc
src/lib/database/server.h
src/lib/database/tests/server_unittest.cc
src/lib/database/testutils/schema.h

index 48cba3135969dd0b4b175aa69969566c3767b35f..e023563529d17db0e1856ca3f89e07a6bf857b81 100644 (file)
@@ -28,5 +28,15 @@ Server::create(const ServerTag& tag, const std::string& description) {
     return (boost::make_shared<Server>(tag, description));
 }
 
+ElementPtr
+Server::toElement() const {
+    ElementPtr result = Element::createMap();
+
+    result->set("server-tag", Element::create(getServerTagAsText()));
+    result->set("description", Element::create(getDescription()));
+
+    return (result);
+}
+
 } // end of namespace isc::db
 } // end of namespace isc
index e971ba37806afd1826bb49c3e6ced4645ef316c0..8ca8a436fc7c5b568199e7a20d51784091079b80 100644 (file)
@@ -8,6 +8,7 @@
 #define DB_SERVER_H
 
 #include <cc/base_stamped_element.h>
+#include <cc/cfg_to_element.h>
 #include <cc/server_tag.h>
 #include <boost/shared_ptr.hpp>
 #include <string>
@@ -28,7 +29,7 @@ typedef boost::shared_ptr<Server> ServerPtr;
 /// provided by the administrator and the metadata.
 ///
 /// This class extends the base class with the server description field.
-class Server : public data::BaseStampedElement {
+class Server : public data::BaseStampedElement,  public data::CfgToElement {
 public:
 
     /// @brief Constructor.
@@ -69,6 +70,11 @@ public:
         return (description_);
     }
 
+    /// @brief Unparses server object.
+    ///
+    /// @return A pointer to unparsed server configuration.
+    virtual data::ElementPtr toElement() const;
+
 private:
 
     /// @brief Server tag.
index 4a650f81d8dea95d547ec72b44d1e0fd99acf228..8cc0ceb5a746d5b6410c8506d4d8681526ed816d 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <config.h>
 #include <database/server_collection.h>
+#include <testutils/test_to_element.h>
 #include <exceptions/exceptions.h>
 #include <gtest/gtest.h>
 #include <string>
@@ -34,6 +35,23 @@ TEST(ServerTest, tooLongDescription) {
                  BadValue);
 }
 
+// Tests that toElement method works well.
+TEST(ServerTest, toEDlement) {
+    ServerPtr server1 = Server::create(ServerTag("foo"), "a server");
+    std::string expected1 = "{"
+        "\"server-tag\": \"foo\","
+        "\"description\": \"a server\""
+        " }";
+    isc::test::runToElementTest<Server>(expected1, *server1);
+
+    ServerPtr server2 =Server::create(ServerTag("bar"));
+    std::string expected2= "{"
+        "\"server-tag\": \"bar\","
+        "\"description\": \"\""
+        " }";
+    isc::test::runToElementTest<Server>(expected2, *server2);
+}
+
 // Tests that it is possible to fetch server by tag fromn the collection.
 TEST(ServerFetcherTest, getByTag) {
     ServerCollection servers;
index df95792ab22816583bb82661ece58d441a4ed8b5..1b34f3825546d996e5dabde7544941fb5c613ac5 100644 (file)
@@ -49,7 +49,7 @@ std::string connectionString(const char* type, const char* name = NULL,
 /// @brief Determines if  wiping only the data between tests is enabled
 ///
 /// @return true if the environment variable, KEA_TEST_DB_WIPE_DATA_ONLY is
-/// defined as "true" or if it is not present. 
+/// defined as "true" or if it is not present.
 bool softWipeEnabled();
 
 };