@@ -1898,6 +1898,48 @@ Y_UNIT_TEST_SUITE(KqpFederatedQuery) {
1898
1898
UNIT_ASSERT_STRING_CONTAINS (readyOp.Status ().GetIssues ().ToString (), " File pattern '{' contains invalid wildcard:" );
1899
1899
}
1900
1900
}
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
+ }
1901
1943
}
1902
1944
1903
1945
} // namespace NKikimr::NKqp
0 commit comments