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