Skip to content

Commit

Permalink
sanitized the required inputs and updated cconfig to run test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
harshithad0703 committed Oct 22, 2024
1 parent 6854a44 commit 79f50de
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export const config = {
// http://mongodb.github.io/node-mongodb-native/3.1/api/MongoClient.html
options: {
connectTimeoutMS: 15000,
keepAlive: true,
// keepAlive: true, // keepAlive is not supported in later versions of mongodb
noDelay: true,
useNewUrlParser: true,
},
Expand Down
36 changes: 35 additions & 1 deletion src/stack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2017,6 +2017,9 @@ export class Stack {

private async bindLeftoverAssets(queries: IQuery, locale: string, pointerList: IShelf[]) {
// const contents = await readFile(getAssetsPath(locale) + '.json')
if (!this.sanitizeIQuery(queries)) {
throw new Error('Invalid queries provided');
}
const filteredAssets = await this.db.collection(getCollectionName({
content_type_uid: this.types.assets,
locale,
Expand Down Expand Up @@ -2096,6 +2099,9 @@ export class Stack {
}

private async getReferencePath(query, locale, currentInclude) {
if (!this.sanityQueryAny(query)) {
throw new Error('Invalid query provided');
}
const schemas = await this.db.collection(getCollectionName({
content_type_uid: this.types.content_types,
locale,
Expand Down Expand Up @@ -2184,6 +2190,9 @@ export class Stack {

private async fetchEntries(query: IQuery, locale: string, paths: string[], include: string[], includeAll:
boolean = false) {
if (!this.sanitizeIQuery(query)) {
throw new Error('Invalid queries provided');
}
const result = await this.db.collection(getCollectionName({
content_type_uid: 'entries',
locale,
Expand Down Expand Up @@ -2376,5 +2385,30 @@ export class Stack {
paths,
}
}
// tslint:disable-next-line: max-file-line-count

private sanitizeIQuery(query: IQuery): boolean {
if (!query || typeof query !== 'object' || Array.isArray(query)) {
return false;
}
if (!query || !Array.isArray(query.$or)) {
return false;
}
for (const item of query.$or) {
if (
typeof item._content_type_uid !== 'string' ||
typeof item.uid !== 'string' ||
(item._version && typeof item._version.$exists !== 'boolean') ||
(item.locale && typeof item.locale !== 'string')
) {
return false;
}
}
return true;
}
private sanityQueryAny(query: any): boolean {
if (!query || typeof query !== 'object' || Array.isArray(query)) {
return false;
}
return true;
}
}
2 changes: 1 addition & 1 deletion test/expressions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ describe('# Expressional Operators', () => {
test('.regex()', () => {
return Stack.contentType('blog')
.entries()
.regex('title', '/^Blog Two$/', 'g')
.regex('title', '/^Blog Two$/', 'i')
.find()
.then((result: any) => {
checkEntries(result)
Expand Down
1 change: 0 additions & 1 deletion typings/config.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ export declare const config: {
locale: string;
options: {
connectTimeoutMS: number;
keepAlive: boolean;
noDelay: boolean;
useNewUrlParser: boolean;
};
Expand Down
2 changes: 2 additions & 0 deletions typings/stack.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1092,4 +1092,6 @@ export declare class Stack {
private bindReferences;
private includeAllReferencesIteration;
private getAllReferencePaths;
private sanitizeIQuery;
private sanityQueryAny;
}

0 comments on commit 79f50de

Please sign in to comment.