Skip to content

Commit 37dbbd2

Browse files
committed
Fix datasets lookup logic
1 parent 56e094f commit 37dbbd2

File tree

6 files changed

+168
-115
lines changed

6 files changed

+168
-115
lines changed

src/adapter/graphql/tests/tests/test_gql_data.rs

+16-7
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,16 @@ fn create_catalog_with_local_workspace(tempdir: &Path, is_multitenant: bool) ->
4545

4646
/////////////////////////////////////////////////////////////////////////////////////////
4747

48-
async fn create_test_dataset(catalog: &dill::Catalog, tempdir: &Path) {
48+
async fn create_test_dataset(
49+
catalog: &dill::Catalog,
50+
tempdir: &Path,
51+
account_name: Option<AccountName>,
52+
) {
4953
let dataset_repo = catalog.get_one::<dyn DatasetRepository>().unwrap();
5054

5155
let dataset = dataset_repo
5256
.create_dataset(
53-
&DatasetAlias::new(None, DatasetName::new_unchecked("foo")),
57+
&DatasetAlias::new(account_name, DatasetName::new_unchecked("foo")),
5458
MetadataFactory::metadata_block(MetadataFactory::seed(DatasetKind::Root).build())
5559
.build_typed(),
5660
)
@@ -107,7 +111,7 @@ async fn create_test_dataset(catalog: &dill::Catalog, tempdir: &Path) {
107111
async fn test_dataset_schema_local_fs() {
108112
let tempdir = tempfile::tempdir().unwrap();
109113
let catalog = create_catalog_with_local_workspace(tempdir.path(), false);
110-
create_test_dataset(&catalog, tempdir.path()).await;
114+
create_test_dataset(&catalog, tempdir.path(), None).await;
111115

112116
let schema = kamu_adapter_graphql::schema_quiet();
113117
let res = schema
@@ -161,12 +165,17 @@ async fn test_dataset_schema_local_fs() {
161165

162166
/////////////////////////////////////////////////////////////////////////////////////////
163167

164-
#[test_group::group(engine, datafusion)]
168+
// #[test_group::group(engine, datafusion)]
165169
#[test_log::test(tokio::test)]
166170
async fn test_dataset_case_insensetive_schema_local_fs() {
167171
let tempdir = tempfile::tempdir().unwrap();
168172
let catalog = create_catalog_with_local_workspace(tempdir.path(), true);
169-
create_test_dataset(&catalog, tempdir.path()).await;
173+
create_test_dataset(
174+
&catalog,
175+
tempdir.path(),
176+
Some(AccountName::new_unchecked("KaMu")),
177+
)
178+
.await;
170179

171180
let schema = kamu_adapter_graphql::schema_quiet();
172181
let res = schema
@@ -225,7 +234,7 @@ async fn test_dataset_case_insensetive_schema_local_fs() {
225234
async fn test_dataset_tail_local_fs() {
226235
let tempdir = tempfile::tempdir().unwrap();
227236
let catalog = create_catalog_with_local_workspace(tempdir.path(), false);
228-
create_test_dataset(&catalog, tempdir.path()).await;
237+
create_test_dataset(&catalog, tempdir.path(), None).await;
229238

230239
let schema = kamu_adapter_graphql::schema_quiet();
231240
let res = schema
@@ -266,7 +275,7 @@ async fn test_dataset_tail_local_fs() {
266275
async fn test_dataset_tail_empty_local_fs() {
267276
let tempdir = tempfile::tempdir().unwrap();
268277
let catalog = create_catalog_with_local_workspace(tempdir.path(), false);
269-
create_test_dataset(&catalog, tempdir.path()).await;
278+
create_test_dataset(&catalog, tempdir.path(), None).await;
270279

271280
let schema = kamu_adapter_graphql::schema_quiet();
272281
let res = schema

src/adapter/graphql/tests/tests/test_gql_metadata_chain.rs

+53-57
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,11 @@ use crate::utils::{authentication_catalogs, expect_anonymous_access_error};
2525

2626
#[test_log::test(tokio::test)]
2727
async fn test_metadata_chain_events() {
28-
let tempdir = tempfile::tempdir().unwrap();
29-
let datasets_dir = tempdir.path().join("datasets");
30-
std::fs::create_dir(&datasets_dir).unwrap();
31-
32-
let base_catalog = dill::CatalogBuilder::new()
33-
.add::<EventBus>()
34-
.add::<DependencyGraphServiceInMemory>()
35-
.add_builder(
36-
DatasetRepositoryLocalFs::builder()
37-
.with_root(datasets_dir)
38-
.with_multi_tenant(false),
39-
)
40-
.bind::<dyn DatasetRepository, DatasetRepositoryLocalFs>()
41-
.add::<auth::AlwaysHappyDatasetActionAuthorizer>()
42-
.build();
28+
let harness = GraphQLMetadataChainHarness::new(false);
4329

4430
// Init dataset
45-
let (_, catalog_authorized) = authentication_catalogs(&base_catalog);
46-
let dataset_repo = catalog_authorized
31+
let dataset_repo = harness
32+
.catalog_authorized
4733
.get_one::<dyn DatasetRepository>()
4834
.unwrap();
4935
let create_result = dataset_repo
@@ -126,7 +112,7 @@ async fn test_metadata_chain_events() {
126112

127113
let schema = kamu_adapter_graphql::schema_quiet();
128114
let res = schema
129-
.execute(async_graphql::Request::new(request_code.clone()).data(catalog_authorized))
115+
.execute(async_graphql::Request::new(request_code.clone()).data(harness.catalog_authorized))
130116
.await;
131117
assert!(res.is_ok(), "{res:?}");
132118

@@ -179,23 +165,10 @@ async fn test_metadata_chain_events() {
179165

180166
#[test_log::test(tokio::test)]
181167
async fn metadata_chain_append_event() {
182-
let tempdir = tempfile::tempdir().unwrap();
183-
184-
let base_catalog = dill::CatalogBuilder::new()
185-
.add::<EventBus>()
186-
.add::<DependencyGraphServiceInMemory>()
187-
.add_builder(
188-
DatasetRepositoryLocalFs::builder()
189-
.with_root(tempdir.path().join("datasets"))
190-
.with_multi_tenant(false),
191-
)
192-
.bind::<dyn DatasetRepository, DatasetRepositoryLocalFs>()
193-
.add::<auth::AlwaysHappyDatasetActionAuthorizer>()
194-
.build();
168+
let harness = GraphQLMetadataChainHarness::new(false);
195169

196-
let (catalog_anonymous, catalog_authorized) = authentication_catalogs(&base_catalog);
197-
198-
let dataset_repo = catalog_authorized
170+
let dataset_repo = harness
171+
.catalog_authorized
199172
.get_one::<dyn DatasetRepository>()
200173
.unwrap();
201174
let create_result = dataset_repo
@@ -245,12 +218,12 @@ async fn metadata_chain_append_event() {
245218
let schema = kamu_adapter_graphql::schema_quiet();
246219

247220
let res = schema
248-
.execute(async_graphql::Request::new(request_code.clone()).data(catalog_anonymous))
221+
.execute(async_graphql::Request::new(request_code.clone()).data(harness.catalog_anonymous))
249222
.await;
250223
expect_anonymous_access_error(res);
251224

252225
let res = schema
253-
.execute(async_graphql::Request::new(request_code.clone()).data(catalog_authorized))
226+
.execute(async_graphql::Request::new(request_code.clone()).data(harness.catalog_authorized))
254227
.await;
255228
assert!(res.is_ok(), "{res:?}");
256229
assert_eq!(
@@ -275,23 +248,10 @@ async fn metadata_chain_append_event() {
275248

276249
#[test_log::test(tokio::test)]
277250
async fn metadata_update_readme_new() {
278-
let tempdir = tempfile::tempdir().unwrap();
279-
280-
let base_catalog = dill::CatalogBuilder::new()
281-
.add::<EventBus>()
282-
.add::<DependencyGraphServiceInMemory>()
283-
.add_builder(
284-
DatasetRepositoryLocalFs::builder()
285-
.with_root(tempdir.path().join("datasets"))
286-
.with_multi_tenant(false),
287-
)
288-
.bind::<dyn DatasetRepository, DatasetRepositoryLocalFs>()
289-
.add::<auth::AlwaysHappyDatasetActionAuthorizer>()
290-
.build();
251+
let harness = GraphQLMetadataChainHarness::new(false);
291252

292-
let (catalog_anonymous, catalog_authorized) = authentication_catalogs(&base_catalog);
293-
294-
let dataset_repo = catalog_authorized
253+
let dataset_repo = harness
254+
.catalog_authorized
295255
.get_one::<dyn DatasetRepository>()
296256
.unwrap();
297257
let create_result = dataset_repo
@@ -331,14 +291,16 @@ async fn metadata_update_readme_new() {
331291

332292
let res = schema
333293
.execute(
334-
async_graphql::Request::new(new_readme_request_code.clone()).data(catalog_anonymous),
294+
async_graphql::Request::new(new_readme_request_code.clone())
295+
.data(harness.catalog_anonymous),
335296
)
336297
.await;
337298
expect_anonymous_access_error(res);
338299

339300
let res = schema
340301
.execute(
341-
async_graphql::Request::new(new_readme_request_code).data(catalog_authorized.clone()),
302+
async_graphql::Request::new(new_readme_request_code)
303+
.data(harness.catalog_authorized.clone()),
342304
)
343305
.await;
344306

@@ -399,7 +361,7 @@ async fn metadata_update_readme_new() {
399361
)
400362
.replace("<id>", &create_result.dataset_handle.id.to_string()),
401363
)
402-
.data(catalog_authorized.clone()),
364+
.data(harness.catalog_authorized.clone()),
403365
)
404366
.await;
405367

@@ -437,7 +399,7 @@ async fn metadata_update_readme_new() {
437399
)
438400
.replace("<id>", &create_result.dataset_handle.id.to_string()),
439401
)
440-
.data(catalog_authorized.clone()),
402+
.data(harness.catalog_authorized.clone()),
441403
)
442404
.await;
443405

@@ -490,7 +452,7 @@ async fn metadata_update_readme_new() {
490452
)
491453
.replace("<id>", &create_result.dataset_handle.id.to_string()),
492454
)
493-
.data(catalog_authorized),
455+
.data(harness.catalog_authorized),
494456
)
495457
.await;
496458

@@ -535,3 +497,37 @@ async fn assert_attachments_eq(dataset: Arc<dyn Dataset>, expected: SetAttachmen
535497
}
536498

537499
////////////////////////////////////////////////////////////////////////////////////////
500+
501+
struct GraphQLMetadataChainHarness {
502+
_tempdir: tempfile::TempDir,
503+
catalog_authorized: dill::Catalog,
504+
catalog_anonymous: dill::Catalog,
505+
}
506+
507+
impl GraphQLMetadataChainHarness {
508+
fn new(is_multi_tenant: bool) -> Self {
509+
let tempdir = tempfile::tempdir().unwrap();
510+
let datasets_dir = tempdir.path().join("datasets");
511+
std::fs::create_dir(&datasets_dir).unwrap();
512+
513+
let base_catalog = dill::CatalogBuilder::new()
514+
.add::<EventBus>()
515+
.add::<DependencyGraphServiceInMemory>()
516+
.add_builder(
517+
DatasetRepositoryLocalFs::builder()
518+
.with_root(datasets_dir)
519+
.with_multi_tenant(is_multi_tenant),
520+
)
521+
.bind::<dyn DatasetRepository, DatasetRepositoryLocalFs>()
522+
.add::<auth::AlwaysHappyDatasetActionAuthorizer>()
523+
.build();
524+
525+
let (catalog_anonymous, catalog_authorized) = authentication_catalogs(&base_catalog);
526+
527+
Self {
528+
_tempdir: tempdir,
529+
catalog_anonymous,
530+
catalog_authorized,
531+
}
532+
}
533+
}

src/domain/opendatafabric/src/identity/dataset_identity.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ impl DatasetAliasPattern {
293293
}
294294

295295
pub fn matches(&self, dataset_handle: &DatasetHandle) -> bool {
296-
self.account_name == dataset_handle.alias.account_name
296+
(self.account_name.is_none() || self.account_name == dataset_handle.alias.account_name)
297297
&& self
298298
.dataset_name_pattern
299299
.matches(&dataset_handle.alias.dataset_name)

src/domain/opendatafabric/tests/tests/test_dataset_refs.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ fn test_dataset_ref_pattern_match() {
117117
},
118118
};
119119

120-
assert!(!pattern.matches(&dataset_handle));
120+
assert!(pattern.matches(&dataset_handle));
121121

122122
let dataset_account = "account1";
123123
let dataset_name_pattern = "net%";

0 commit comments

Comments
 (0)