Skip to content

Commit 2ce09f3

Browse files
committed
tests
1 parent 16d62ed commit 2ce09f3

File tree

1 file changed

+155
-0
lines changed

1 file changed

+155
-0
lines changed

spec/MongoStorageAdapter.spec.js

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,4 +649,159 @@ describe_only_db('mongo')('MongoStorageAdapter', () => {
649649
});
650650
});
651651
}
652+
653+
describe('index creation options', () => {
654+
beforeEach(async () => {
655+
await new MongoStorageAdapter({ uri: databaseURI }).deleteAllClasses();
656+
});
657+
658+
async function getIndexes(collectionName) {
659+
const adapter = Config.get(Parse.applicationId).database.adapter;
660+
const collections = await adapter.database.listCollections({ name: collectionName }).toArray();
661+
if (collections.length === 0) {
662+
return [];
663+
}
664+
return await adapter.database.collection(collectionName).indexes();
665+
}
666+
667+
it('should skip username index when createIndexUsername is false', async () => {
668+
await reconfigureServer({
669+
databaseAdapter: undefined,
670+
databaseURI,
671+
databaseOptions: { createIndexUsername: false },
672+
});
673+
const indexes = await getIndexes('_User');
674+
expect(indexes.find(idx => idx.name === 'username_1')).toBeUndefined();
675+
});
676+
677+
it('should create username index when createIndexUsername is true', async () => {
678+
await reconfigureServer({
679+
databaseAdapter: undefined,
680+
databaseURI,
681+
databaseOptions: { createIndexUsername: true },
682+
});
683+
const indexes = await getIndexes('_User');
684+
expect(indexes.find(idx => idx.name === 'username_1')).toBeDefined();
685+
});
686+
687+
it('should skip case-insensitive username index when createIndexUsernameCaseInsensitive is false', async () => {
688+
await reconfigureServer({
689+
databaseAdapter: undefined,
690+
databaseURI,
691+
databaseOptions: { createIndexUsernameCaseInsensitive: false },
692+
});
693+
const indexes = await getIndexes('_User');
694+
expect(indexes.find(idx => idx.name === 'case_insensitive_username')).toBeUndefined();
695+
});
696+
697+
it('should create case-insensitive username index when createIndexUsernameCaseInsensitive is true', async () => {
698+
await reconfigureServer({
699+
databaseAdapter: undefined,
700+
databaseURI,
701+
databaseOptions: { createIndexUsernameCaseInsensitive: true },
702+
});
703+
const indexes = await getIndexes('_User');
704+
expect(indexes.find(idx => idx.name === 'case_insensitive_username')).toBeDefined();
705+
});
706+
707+
it('should skip email index when createIndexEmail is false', async () => {
708+
await reconfigureServer({
709+
databaseAdapter: undefined,
710+
databaseURI,
711+
databaseOptions: { createIndexEmail: false },
712+
});
713+
const indexes = await getIndexes('_User');
714+
expect(indexes.find(idx => idx.name === 'email_1')).toBeUndefined();
715+
});
716+
717+
it('should create email index when createIndexEmail is true', async () => {
718+
await reconfigureServer({
719+
databaseAdapter: undefined,
720+
databaseURI,
721+
databaseOptions: { createIndexEmail: true },
722+
});
723+
const indexes = await getIndexes('_User');
724+
expect(indexes.find(idx => idx.name === 'email_1')).toBeDefined();
725+
});
726+
727+
it('should skip case-insensitive email index when createIndexEmailCaseInsensitive is false', async () => {
728+
await reconfigureServer({
729+
databaseAdapter: undefined,
730+
databaseURI,
731+
databaseOptions: { createIndexEmailCaseInsensitive: false },
732+
});
733+
const indexes = await getIndexes('_User');
734+
expect(indexes.find(idx => idx.name === 'case_insensitive_email')).toBeUndefined();
735+
});
736+
737+
it('should create case-insensitive email index when createIndexEmailCaseInsensitive is true', async () => {
738+
await reconfigureServer({
739+
databaseAdapter: undefined,
740+
databaseURI,
741+
databaseOptions: { createIndexEmailCaseInsensitive: true },
742+
});
743+
const indexes = await getIndexes('_User');
744+
expect(indexes.find(idx => idx.name === 'case_insensitive_email')).toBeDefined();
745+
});
746+
747+
it('should skip email verify token index when createIndexEmailVerifyToken is false', async () => {
748+
await reconfigureServer({
749+
databaseAdapter: undefined,
750+
databaseURI,
751+
databaseOptions: { createIndexEmailVerifyToken: false },
752+
});
753+
const indexes = await getIndexes('_User');
754+
expect(indexes.find(idx => idx.name === '_email_verify_token' || idx.name === '_email_verify_token_1')).toBeUndefined();
755+
});
756+
757+
it('should create email verify token index when createIndexEmailVerifyToken is true', async () => {
758+
await reconfigureServer({
759+
databaseAdapter: undefined,
760+
databaseURI,
761+
databaseOptions: { createIndexEmailVerifyToken: true },
762+
});
763+
const indexes = await getIndexes('_User');
764+
expect(indexes.find(idx => idx.name === '_email_verify_token' || idx.name === '_email_verify_token_1')).toBeDefined();
765+
});
766+
767+
it('should skip password reset token index when createIndexPasswordResetToken is false', async () => {
768+
await reconfigureServer({
769+
databaseAdapter: undefined,
770+
databaseURI,
771+
databaseOptions: { createIndexPasswordResetToken: false },
772+
});
773+
const indexes = await getIndexes('_User');
774+
expect(indexes.find(idx => idx.name === '_perishable_token' || idx.name === '_perishable_token_1')).toBeUndefined();
775+
});
776+
777+
it('should create password reset token index when createIndexPasswordResetToken is true', async () => {
778+
await reconfigureServer({
779+
databaseAdapter: undefined,
780+
databaseURI,
781+
databaseOptions: { createIndexPasswordResetToken: true },
782+
});
783+
const indexes = await getIndexes('_User');
784+
expect(indexes.find(idx => idx.name === '_perishable_token' || idx.name === '_perishable_token_1')).toBeDefined();
785+
});
786+
787+
it('should skip role name index when createIndexRoleName is false', async () => {
788+
await reconfigureServer({
789+
databaseAdapter: undefined,
790+
databaseURI,
791+
databaseOptions: { createIndexRoleName: false },
792+
});
793+
const indexes = await getIndexes('_Role');
794+
expect(indexes.find(idx => idx.name === 'name_1')).toBeUndefined();
795+
});
796+
797+
it('should create role name index when createIndexRoleName is true', async () => {
798+
await reconfigureServer({
799+
databaseAdapter: undefined,
800+
databaseURI,
801+
databaseOptions: { createIndexRoleName: true },
802+
});
803+
const indexes = await getIndexes('_Role');
804+
expect(indexes.find(idx => idx.name === 'name_1')).toBeDefined();
805+
});
806+
});
652807
});

0 commit comments

Comments
 (0)