system: Rename Sysrepo to IETFSystem

In the next few commits we will start implementing czechlight-system
model, which is our custom model for (so far) firmware management.
This commit renames the original Sysrepo class to IETFSystem so it
better expresses that it support only ietf-system model.
The czechlight-system model will be handled by a separate class.

Also, move the IETFSystem class to a separate sysrepo namespace.

Change-Id: Ibc7dc6270424229dad3ad7c951d0e61a65a91ef0
diff --git a/tests/sysrepo_system-ietfsystem.cpp b/tests/sysrepo_system-ietfsystem.cpp
new file mode 100644
index 0000000..04add24
--- /dev/null
+++ b/tests/sysrepo_system-ietfsystem.cpp
@@ -0,0 +1,72 @@
+#include "trompeloeil_doctest.h"
+#include "pretty_printers.h"
+#include "system/IETFSystem.h"
+#include "test_log_setup.h"
+#include "test_sysrepo_helpers.h"
+#include "tests/configure.cmake.h"
+
+using namespace std::literals;
+
+TEST_CASE("Sysrepo ietf-system")
+{
+    trompeloeil::sequence seq1;
+
+    TEST_SYSREPO_INIT_LOGS;
+    TEST_SYSREPO_INIT;
+
+    SECTION("Test system-state")
+    {
+        TEST_SYSREPO_INIT_CLIENT;
+        static const auto modulePrefix = "/ietf-system:system-state"s;
+
+        SECTION("Valid data")
+        {
+            std::filesystem::path file;
+            std::map<std::string, std::string> expected;
+
+            SECTION("Real data")
+            {
+                file = CMAKE_CURRENT_SOURCE_DIR "/tests/system/os-release";
+                expected = {
+                    {"/clock", ""},
+                    {"/platform", ""},
+                    {"/platform/os-name", "CzechLight"},
+                    {"/platform/os-release", "v4-105-g8294175-dirty"},
+                    {"/platform/os-version", "v4-105-g8294175-dirty"},
+                };
+            }
+
+            SECTION("Missing =")
+            {
+                file = CMAKE_CURRENT_SOURCE_DIR "/tests/system/missing-equal";
+                expected = {
+                    {"/clock", ""},
+                    {"/platform", ""},
+                    {"/platform/os-name", ""},
+                    {"/platform/os-release", ""},
+                    {"/platform/os-version", ""},
+                };
+            }
+
+            SECTION("Empty values")
+            {
+                file = CMAKE_CURRENT_SOURCE_DIR "/tests/system/empty-values";
+                expected = {
+                    {"/clock", ""},
+                    {"/platform", ""},
+                    {"/platform/os-name", ""},
+                    {"/platform/os-release", ""},
+                    {"/platform/os-version", ""},
+                };
+            }
+
+            auto sysrepo = std::make_shared<velia::system::IETFSystem>(srSess, file);
+            REQUIRE(dataFromSysrepo(client, modulePrefix, SR_DS_OPERATIONAL) == expected);
+        }
+
+        SECTION("Invalid data (missing VERSION and NAME keys)")
+        {
+            REQUIRE_THROWS_AS(std::make_shared<velia::system::IETFSystem>(srSess, CMAKE_CURRENT_SOURCE_DIR "/tests/system/missing-keys"), std::out_of_range);
+        }
+    }
+}