Skip to content

Commit c8b6129

Browse files
committed
Fix enableCollationCaseComparison, caseInsensitive and test
1 parent 7bff03c commit c8b6129

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

spec/DatabaseController.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ describe('DatabaseController', function () {
515515
it('should not find a case insensitive user by email with convertEmailToLowercase', async () => {
516516
await reconfigureServer({ convertEmailToLowercase: true });
517517
const user = new Parse.User();
518-
await user.save({ email: 'EXAMPLE@EXAMPLE.COM', password: 'password' });
518+
await user.save({ username: 'EXAMPLE', email: 'EXAMPLE@EXAMPLE.COM', password: 'password' });
519519

520520
const query = new Parse.Query(Parse.User);
521521
query.equalTo('email', 'EXAMPLE@EXAMPLE.COM');

src/Controllers/DatabaseController.js

+16-14
Original file line numberDiff line numberDiff line change
@@ -1235,7 +1235,7 @@ class DatabaseController {
12351235
keys,
12361236
readPreference,
12371237
hint,
1238-
caseInsensitive,
1238+
caseInsensitive: this.options.enableCollationCaseComparison ? false : caseInsensitive,
12391239
explain,
12401240
};
12411241
Object.keys(sort).forEach(fieldName => {
@@ -1739,25 +1739,27 @@ class DatabaseController {
17391739
throw error;
17401740
});
17411741

1742-
await this.adapter
1743-
.ensureIndex('_User', requiredUserFields, ['username'], 'case_insensitive_username', true)
1744-
.catch(error => {
1745-
logger.warn('Unable to create case insensitive username index: ', error);
1746-
throw error;
1747-
});
1742+
if (!this.options.enableCollationCaseComparison) {
1743+
await this.adapter
1744+
.ensureIndex('_User', requiredUserFields, ['username'], 'case_insensitive_username', true)
1745+
.catch(error => {
1746+
logger.warn('Unable to create case insensitive username index: ', error);
1747+
throw error;
1748+
});
1749+
1750+
await this.adapter
1751+
.ensureIndex('_User', requiredUserFields, ['email'], 'case_insensitive_email', true)
1752+
.catch(error => {
1753+
logger.warn('Unable to create case insensitive email index: ', error);
1754+
throw error;
1755+
});
1756+
}
17481757

17491758
await this.adapter.ensureUniqueness('_User', requiredUserFields, ['email']).catch(error => {
17501759
logger.warn('Unable to ensure uniqueness for user email addresses: ', error);
17511760
throw error;
17521761
});
17531762

1754-
await this.adapter
1755-
.ensureIndex('_User', requiredUserFields, ['email'], 'case_insensitive_email', true)
1756-
.catch(error => {
1757-
logger.warn('Unable to create case insensitive email index: ', error);
1758-
throw error;
1759-
});
1760-
17611763
await this.adapter.ensureUniqueness('_Role', requiredRoleFields, ['name']).catch(error => {
17621764
logger.warn('Unable to ensure uniqueness for role name: ', error);
17631765
throw error;

0 commit comments

Comments
 (0)