@@ -2264,6 +2264,48 @@ Y_UNIT_TEST_SUITE(KqpFederatedQuery) {
2264
2264
UNIT_ASSERT_STRING_CONTAINS (readyOp.Status ().GetIssues ().ToString (), " File pattern '{' contains invalid wildcard:" );
2265
2265
}
2266
2266
}
2267
+
2268
+ Y_UNIT_TEST (TestSecretsExistingValidation) {
2269
+ const TString bucket = " test_bucket14" ;
2270
+
2271
+ CreateBucket (bucket);
2272
+
2273
+ NKikimrConfig::TAppConfig appConfig;
2274
+ appConfig.MutableFeatureFlags ()->SetEnableExternalSourceSchemaInference (true );
2275
+ auto kikimr = NTestUtils::MakeKikimrRunner (appConfig);
2276
+
2277
+ auto tc = kikimr->GetTableClient ();
2278
+ auto session = tc.CreateSession ().GetValueSync ().GetSession ();
2279
+ const TString query = fmt::format (R"(
2280
+ GRANT ALL ON `/Root` TO `test@builtin`;
2281
+ CREATE OBJECT TestSecret (TYPE SECRET) WITH value = `test_value`;
2282
+ CREATE EXTERNAL DATA SOURCE `/Root/external_data_source` WITH (
2283
+ SOURCE_TYPE="ObjectStorage",
2284
+ LOCATION="{location}",
2285
+ AUTH_METHOD="SERVICE_ACCOUNT",
2286
+ SERVICE_ACCOUNT_ID="TestSa",
2287
+ SERVICE_ACCOUNT_SECRET_NAME="TestSecret"
2288
+ );)" ,
2289
+ " location" _a = GetBucketLocation (bucket)
2290
+ );
2291
+ auto result = session.ExecuteSchemeQuery (query).GetValueSync ();
2292
+ UNIT_ASSERT_C (result.GetStatus () == NYdb::EStatus::SUCCESS, result.GetIssues ().ToString ());
2293
+
2294
+ auto db = kikimr->GetQueryClient (NYdb::NQuery::TClientSettings ().AuthToken (" test@builtin" ));
2295
+
2296
+ const TString sql = R"(
2297
+ SELECT * FROM `/Root/external_data_source`.`/` WITH (
2298
+ SCHEMA = (data String),
2299
+ FORMAT = "csv_with_names"
2300
+ ))" ;
2301
+
2302
+ auto scriptExecutionOperation = db.ExecuteScript (sql).ExtractValueSync ();
2303
+ UNIT_ASSERT_VALUES_EQUAL_C (scriptExecutionOperation.Status ().GetStatus (), EStatus::SUCCESS, scriptExecutionOperation.Status ().GetIssues ().ToString ());
2304
+
2305
+ NYdb::NQuery::TScriptExecutionOperation readyOp = WaitScriptExecutionOperation (scriptExecutionOperation.Id (), kikimr->GetDriver ());
2306
+ UNIT_ASSERT_EQUAL_C (readyOp.Metadata ().ExecStatus , EExecStatus::Failed, readyOp.Status ().GetIssues ().ToString ());
2307
+ UNIT_ASSERT_STRING_CONTAINS (readyOp.Status ().GetIssues ().ToString (), " secret with name 'TestSecret' not found" );
2308
+ }
2267
2309
}
2268
2310
2269
2311
} // namespace NKikimr::NKqp
0 commit comments