@@ -1898,6 +1898,48 @@ Y_UNIT_TEST_SUITE(KqpFederatedQuery) {
18981898 UNIT_ASSERT_STRING_CONTAINS (readyOp.Status ().GetIssues ().ToString (), " File pattern '{' contains invalid wildcard:" );
18991899 }
19001900 }
1901+
1902+ Y_UNIT_TEST (TestSecretsExistingValidation) {
1903+ const TString bucket = " test_bucket14" ;
1904+
1905+ CreateBucket (bucket);
1906+
1907+ NKikimrConfig::TAppConfig appConfig;
1908+ appConfig.MutableFeatureFlags ()->SetEnableExternalSourceSchemaInference (true );
1909+ auto kikimr = NTestUtils::MakeKikimrRunner (appConfig);
1910+
1911+ auto tc = kikimr->GetTableClient ();
1912+ auto session = tc.CreateSession ().GetValueSync ().GetSession ();
1913+ const TString query = fmt::format (R"(
1914+ GRANT ALL ON `/Root` TO `test@builtin`;
1915+ CREATE OBJECT TestSecret (TYPE SECRET) WITH value = `test_value`;
1916+ CREATE EXTERNAL DATA SOURCE `/Root/external_data_source` WITH (
1917+ SOURCE_TYPE="ObjectStorage",
1918+ LOCATION="{location}",
1919+ AUTH_METHOD="SERVICE_ACCOUNT",
1920+ SERVICE_ACCOUNT_ID="TestSa",
1921+ SERVICE_ACCOUNT_SECRET_NAME="TestSecret"
1922+ );)" ,
1923+ " location" _a = GetBucketLocation (bucket)
1924+ );
1925+ auto result = session.ExecuteSchemeQuery (query).GetValueSync ();
1926+ UNIT_ASSERT_C (result.GetStatus () == NYdb::EStatus::SUCCESS, result.GetIssues ().ToString ());
1927+
1928+ auto db = kikimr->GetQueryClient (NYdb::NQuery::TClientSettings ().AuthToken (" test@builtin" ));
1929+
1930+ const TString sql = R"(
1931+ SELECT * FROM `/Root/external_data_source`.`/` WITH (
1932+ SCHEMA = (data String),
1933+ FORMAT = "csv_with_names"
1934+ ))" ;
1935+
1936+ auto scriptExecutionOperation = db.ExecuteScript (sql).ExtractValueSync ();
1937+ UNIT_ASSERT_VALUES_EQUAL_C (scriptExecutionOperation.Status ().GetStatus (), EStatus::SUCCESS, scriptExecutionOperation.Status ().GetIssues ().ToString ());
1938+
1939+ NYdb::NQuery::TScriptExecutionOperation readyOp = WaitScriptExecutionOperation (scriptExecutionOperation.Id (), kikimr->GetDriver ());
1940+ UNIT_ASSERT_EQUAL_C (readyOp.Metadata ().ExecStatus , EExecStatus::Failed, readyOp.Status ().GetIssues ().ToString ());
1941+ UNIT_ASSERT_STRING_CONTAINS (readyOp.Status ().GetIssues ().ToString (), " secret with name 'TestSecret' not found" );
1942+ }
19011943}
19021944
19031945} // namespace NKikimr::NKqp
0 commit comments