summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEgor Tarasov <[email protected]>2024-02-01 14:11:56 +0100
committerGitHub <[email protected]>2024-02-01 16:11:56 +0300
commitf099e3dba5bab22b1c08cac790f6e0c079dfc827 (patch)
tree1e29be87dc37ed18a6450ec148bed2a01d3eecc3
parentc97124041530af10fc5350c96c82f7ff7bb526d6 (diff)
Document proto bytes field decoding with a test (#1509)
-rw-r--r--ydb/library/yaml_config/yaml_config_parser.cpp6
-rw-r--r--ydb/library/yaml_config/yaml_config_parser.h2
-rw-r--r--ydb/library/yaml_config/yaml_config_ut.cpp21
3 files changed, 26 insertions, 3 deletions
diff --git a/ydb/library/yaml_config/yaml_config_parser.cpp b/ydb/library/yaml_config/yaml_config_parser.cpp
index 9a25818fbf3..068314afb76 100644
--- a/ydb/library/yaml_config/yaml_config_parser.cpp
+++ b/ydb/library/yaml_config/yaml_config_parser.cpp
@@ -943,10 +943,12 @@ namespace NKikimr::NYaml {
return result;
}
- void Parse(const TString& data, NKikimrConfig::TAppConfig& config) {
+ void Parse(const TString& data, NKikimrConfig::TAppConfig& config, bool needsTransforming) {
auto yamlNode = YAML::Load(data);
NJson::TJsonValue jsonNode = Yaml2Json(yamlNode, true);
- TransformConfig(jsonNode);
+ if (needsTransforming) {
+ TransformConfig(jsonNode);
+ }
NProtobufJson::MergeJson2Proto(jsonNode, config, GetJsonToProtoConfig());
}
}
diff --git a/ydb/library/yaml_config/yaml_config_parser.h b/ydb/library/yaml_config/yaml_config_parser.h
index ac6a293b1a8..cd5eaa467fb 100644
--- a/ydb/library/yaml_config/yaml_config_parser.h
+++ b/ydb/library/yaml_config/yaml_config_parser.h
@@ -19,5 +19,5 @@ namespace NKikimr::NYaml {
void TransformConfig(NJson::TJsonValue& config, bool relaxed = false);
- void Parse(const TString& data, NKikimrConfig::TAppConfig& config);
+ void Parse(const TString& data, NKikimrConfig::TAppConfig& config, bool needsTransforming = true);
}
diff --git a/ydb/library/yaml_config/yaml_config_ut.cpp b/ydb/library/yaml_config/yaml_config_ut.cpp
index 6dd524e8280..0e295df2db7 100644
--- a/ydb/library/yaml_config/yaml_config_ut.cpp
+++ b/ydb/library/yaml_config/yaml_config_ut.cpp
@@ -1,4 +1,5 @@
#include "yaml_config.h"
+#include "yaml_config_parser.h"
#include <library/cpp/testing/unittest/registar.h>
@@ -1767,4 +1768,24 @@ obj: {value: 2} # comment2
UNIT_ASSERT_VALUES_EQUAL(res, exp);
}
}
+
+ Y_UNIT_TEST(ProtoBytesFieldDoesNotDecodeBase64) {
+ // "c2FtcGxlLXBpbgo=" -> base64 decode -> "sample-pin"
+ TString config = R"(
+pdisk_key_config:
+ keys:
+ - container_path: "/a/b/c"
+ pin: "c2FtcGxlLXBpbgo="
+ id: "sample-encryption-key"
+ version: 1
+)";
+ NKikimrConfig::TAppConfig cfg;
+ NKikimr::NYaml::Parse(config, cfg, false);
+
+ UNIT_ASSERT(cfg.has_pdiskkeyconfig());
+ auto keys = cfg.pdiskkeyconfig().GetKeys();
+ UNIT_ASSERT_VALUES_EQUAL(keys.end() - keys.begin(), 1);
+ auto key = keys.at(0);
+ UNIT_ASSERT_VALUES_EQUAL("c2FtcGxlLXBpbgo=", key.pin());
+ }
}