From 16c59a0abc55faa9f239f76a549bd8f209952660 Mon Sep 17 00:00:00 2001 From: Ilnaz Nizametdinov Date: Thu, 29 Feb 2024 12:57:27 +0300 Subject: Add OAuth support #2311 (#2312) --- ydb/core/protos/replication.proto | 1 + ydb/core/tx/replication/controller/replication.cpp | 3 +++ ydb/core/tx/replication/ut_helpers/test_env.h | 8 ++++++++ ydb/core/tx/replication/ydb_proxy/ydb_proxy_ut.cpp | 11 +++++++++++ 4 files changed, 23 insertions(+) diff --git a/ydb/core/protos/replication.proto b/ydb/core/protos/replication.proto index 4a7f21c0080..8d8b254d01c 100644 --- a/ydb/core/protos/replication.proto +++ b/ydb/core/protos/replication.proto @@ -28,6 +28,7 @@ message TReplicationConfig { // credentials oneof Credentials { TStaticCredentials StaticCredentials = 3; + string OAuthToken = 7; } // targets to be replicated diff --git a/ydb/core/tx/replication/controller/replication.cpp b/ydb/core/tx/replication/controller/replication.cpp index c5f3155c53d..8651f47181c 100644 --- a/ydb/core/tx/replication/controller/replication.cpp +++ b/ydb/core/tx/replication/controller/replication.cpp @@ -92,6 +92,9 @@ public: case NKikimrReplication::TReplicationConfig::kStaticCredentials: ydbProxy.Reset(CreateYdbProxy(Config.GetSrcEndpoint(), Config.GetSrcDatabase(), Config.GetStaticCredentials())); break; + case NKikimrReplication::TReplicationConfig::kOAuthToken: + ydbProxy.Reset(CreateYdbProxy(Config.GetSrcEndpoint(), Config.GetSrcDatabase(), Config.GetOAuthToken())); + break; default: ErrorState(TStringBuilder() << "Unexpected credentials: " << Config.GetCredentialsCase()); break; diff --git a/ydb/core/tx/replication/ut_helpers/test_env.h b/ydb/core/tx/replication/ut_helpers/test_env.h index 5a4a1b72c14..d5e8310185d 100644 --- a/ydb/core/tx/replication/ut_helpers/test_env.h +++ b/ydb/core/tx/replication/ut_helpers/test_env.h @@ -60,6 +60,14 @@ public: } } + explicit TEnv(const TString& builtin) + : TEnv(false) + { + UNIT_ASSERT_STRING_CONTAINS(builtin, "@builtin"); + Init(builtin); + Client.ModifyOwner("/", DomainName, builtin); + } + explicit TEnv(const TString& user, const TString& password) : TEnv(false) { diff --git a/ydb/core/tx/replication/ydb_proxy/ydb_proxy_ut.cpp b/ydb/core/tx/replication/ydb_proxy/ydb_proxy_ut.cpp index 504d6da3afb..356c5f15792 100644 --- a/ydb/core/tx/replication/ydb_proxy/ydb_proxy_ut.cpp +++ b/ydb/core/tx/replication/ydb_proxy/ydb_proxy_ut.cpp @@ -155,6 +155,17 @@ Y_UNIT_TEST_SUITE(YdbProxy) { } } + Y_UNIT_TEST(OAuthToken) { + TEnv env("user@builtin"); + // make dir + { + auto ev = env.Send( + new TEvYdbProxy::TEvMakeDirectoryRequest("/Root/dir", {})); + UNIT_ASSERT(ev); + UNIT_ASSERT(ev->Get()->Result.IsSuccess()); + } + } + Y_UNIT_TEST(CreateTable) { TEnv env; // invalid key -- cgit v1.3