Fix `binary` data passing via sysrepo and NETCONF
Change-Id: I1e30621fa9d1189efd964593e76f381c2cb3378d
diff --git a/src/libyang_utils.cpp b/src/libyang_utils.cpp
index 3b924ad..ddb3630 100644
--- a/src/libyang_utils.cpp
+++ b/src/libyang_utils.cpp
@@ -30,7 +30,7 @@
case LY_TYPE_IDENT:
return identityRef_{value->ident()->module()->name(), value->ident()->name()};
case LY_TYPE_BINARY:
- return std::string{value->binary()};
+ return binary_{value->binary()};
case LY_TYPE_DEC64:
{
auto v = value->dec64();
diff --git a/src/sysrepo_access.cpp b/src/sysrepo_access.cpp
index bc7431b..b40b9f1 100644
--- a/src/sysrepo_access.cpp
+++ b/src/sysrepo_access.cpp
@@ -45,6 +45,8 @@
auto pair = splitModuleNode(value->data()->get_identityref());
return identityRef_{*pair.first, pair.second};
}
+ case SR_BINARY_T:
+ return binary_{value->data()->get_binary()};
case SR_DECIMAL64_T:
return value->data()->get_decimal64();
case SR_CONTAINER_T:
diff --git a/tests/datastore_access.cpp b/tests/datastore_access.cpp
index a1c8906..51bcd81 100644
--- a/tests/datastore_access.cpp
+++ b/tests/datastore_access.cpp
@@ -348,6 +348,17 @@
REQUIRE(datastore.getItems("/example-schema:beast") == expected);
}
+ SECTION("binary")
+ {
+ datastore.setLeaf("/example-schema:blob", binary_{"cHduegByIQ=="s});
+ REQUIRE_CALL(mock, write("/example-schema:blob", std::nullopt, "cHduegByIQ=="s));
+ datastore.commitChanges();
+ DatastoreAccess::Tree expected {
+ {"/example-schema:blob", binary_{"cHduegByIQ=="s}},
+ };
+ REQUIRE(datastore.getItems("/example-schema:blob") == expected);
+ }
+
SECTION("operational data")
{
MockDataSupplier mockOpsData;
diff --git a/tests/example-schema.yang b/tests/example-schema.yang
index a24b891..5d84eda 100644
--- a/tests/example-schema.yang
+++ b/tests/example-schema.yang
@@ -239,4 +239,8 @@
base "Animal";
}
}
+
+ leaf blob {
+ type binary;
+ }
}