Skip to content

Commit 4f0a219

Browse files
committed
Add unit tests
1 parent 9c451fd commit 4f0a219

File tree

4 files changed

+67
-12
lines changed

4 files changed

+67
-12
lines changed

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

+8-3
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ impl DatasetName {
223223
DatasetRef::Alias(DatasetAlias::new(None, self))
224224
}
225225

226-
fn lowercase_eq(&self, other: &Self) -> bool {
226+
pub fn lowercase_eq(&self, other: &Self) -> bool {
227227
self.to_lowercase() == other.to_lowercase()
228228
}
229229
}
@@ -262,7 +262,12 @@ impl DatasetAliasPattern {
262262
}
263263

264264
pub fn matches(&self, dataset_handle: &DatasetHandle) -> bool {
265-
(self.account_name.is_none() || self.account_name == dataset_handle.alias.account_name)
265+
((self.account_name.is_none() && dataset_handle.alias.account_name.is_none())
266+
|| self
267+
.account_name
268+
.as_ref()
269+
.unwrap()
270+
.lowercase_eq(dataset_handle.alias.account_name.as_ref().unwrap()))
266271
&& self
267272
.dataset_name_pattern
268273
.matches(&dataset_handle.alias.dataset_name)
@@ -311,7 +316,7 @@ newtype_str!(
311316
);
312317

313318
impl AccountName {
314-
fn lowercase_eq(&self, other: &Self) -> bool {
319+
pub fn lowercase_eq(&self, other: &Self) -> bool {
315320
self.to_lowercase() == other.to_lowercase()
316321
}
317322
}

src/domain/opendatafabric/tests/tests/test_dataset_identity.rs

+52
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,55 @@ fn test_dataset_refs_conversions() {
233233
alias: DatasetAlias::try_from("bar").unwrap(),
234234
});
235235
}
236+
237+
#[test]
238+
fn test_dataset_alias_eq() {
239+
assert_eq!(
240+
DatasetAlias::from_str("account/net.example.com").unwrap(),
241+
DatasetAlias::from_str("aCCouNt/net.ExaMplE.coM").unwrap(),
242+
);
243+
assert_eq!(
244+
DatasetAlias::from_str("account/net.example.com").unwrap(),
245+
DatasetAlias::from_str("account/net.example.com").unwrap(),
246+
);
247+
assert_eq!(
248+
DatasetAlias::from_str("net.example.com").unwrap(),
249+
DatasetAlias::from_str("net.ExaMplE.coM").unwrap(),
250+
);
251+
assert_ne!(
252+
DatasetAlias::from_str("account/net.example.com").unwrap(),
253+
DatasetAlias::from_str("aCCouNt1/net.eXamPle.cOm").unwrap(),
254+
);
255+
assert_ne!(
256+
DatasetAlias::from_str("account1/net.example.com").unwrap(),
257+
DatasetAlias::from_str("account/net.example.com").unwrap(),
258+
);
259+
assert_ne!(
260+
DatasetAlias::from_str("net.example.com").unwrap(),
261+
DatasetAlias::from_str("account/net.example.com").unwrap(),
262+
);
263+
}
264+
265+
#[test]
266+
fn test_dataset_remote_alias_eq() {
267+
assert_eq!(
268+
DatasetAliasRemote::from_str("repository/net.example.com").unwrap(),
269+
DatasetAliasRemote::from_str("repository/net.ExaMplE.coM").unwrap(),
270+
);
271+
assert_eq!(
272+
DatasetAliasRemote::from_str("repository/net.example.com").unwrap(),
273+
DatasetAliasRemote::from_str("repository/net.example.com").unwrap(),
274+
);
275+
assert_eq!(
276+
DatasetAliasRemote::from_str("repository/account/net.example.com").unwrap(),
277+
DatasetAliasRemote::from_str("repository/AccOuNt/net.ExaMplE.coM").unwrap(),
278+
);
279+
assert_ne!(
280+
DatasetAliasRemote::from_str("repository/net.example.com").unwrap(),
281+
DatasetAliasRemote::from_str("rEpoSitOry/net.ExaMplE.coM").unwrap(),
282+
);
283+
assert_ne!(
284+
DatasetAliasRemote::from_str("repository/account/net.example.com").unwrap(),
285+
DatasetAliasRemote::from_str("repository/net.example.com").unwrap(),
286+
);
287+
}

src/infra/core/src/repos/dataset_repository_local_fs.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -810,8 +810,9 @@ impl DatasetStorageStrategy for DatasetMultiTenantStorageStrategy {
810810
)
811811
.await?;
812812

813-
if candidate_dataset_alias.dataset_name.to_lowercase()
814-
== dataset_alias.dataset_name.to_lowercase()
813+
if candidate_dataset_alias
814+
.dataset_name
815+
.lowercase_eq(&dataset_alias.dataset_name)
815816
{
816817
return Ok(DatasetHandle::new(dataset_id, candidate_dataset_alias));
817818
}

src/infra/core/src/utils/datasets_filtering.rs

+4-7
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,8 @@ pub fn matches_remote_ref_pattern(
161161
DatasetRefAnyPattern::PatternRemote(repo_name, account_name, dataset_name_pattern) => {
162162
repo_name == &dataset_alias_remote.repo_name
163163
&& (dataset_alias_remote.account_name.is_some()
164-
&& account_name.to_lowercase()
165-
== dataset_alias_remote
166-
.account_name
167-
.as_ref()
168-
.unwrap()
169-
.to_lowercase())
164+
&& account_name
165+
.lowercase_eq(dataset_alias_remote.account_name.as_ref().unwrap()))
170166
&& dataset_name_pattern.matches(&dataset_alias_remote.dataset_name)
171167
}
172168
}
@@ -202,7 +198,8 @@ pub fn matches_local_ref_pattern(
202198
}
203199
DatasetRefAnyPattern::PatternAmbiguous(account_name, dataset_name_pattern) => {
204200
let account_name = AccountName::from_str(&account_name.pattern).unwrap();
205-
Some(account_name) == dataset_handle.alias.account_name
201+
(dataset_handle.alias.account_name.is_some()
202+
&& account_name.lowercase_eq(dataset_handle.alias.account_name.as_ref().unwrap()))
206203
&& dataset_name_pattern.matches(&dataset_handle.alias.dataset_name)
207204
}
208205
}

0 commit comments

Comments
 (0)