diff --git a/src/routes/index.ts b/src/routes/index.ts index 263c3ff..d6e5b12 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -63,7 +63,7 @@ router.get('/SASjsExecutor/do', async (req, res) => { .replace(new RegExp('/', 'g'), path.sep) // If no extension provided, add .sas extension - sasCodePath += !sasCodePath.includes('.') ? '.sas' : '' + sasCodePath += addExtensionIfNotFound(sasCodePath, 'sas') await new ExecutionController() .execute(sasCodePath, undefined, undefined, { ...req.query }) diff --git a/src/utils/file.ts b/src/utils/file.ts index cb29f48..c1de713 100644 --- a/src/utils/file.ts +++ b/src/utils/file.ts @@ -26,5 +26,11 @@ export const generateUniqueFileName = (fileName: string, extension = '') => ].join('') export const addExtensionIfNotFound = (value: string, extension: string) => { - return !value.includes('.') ? `.${extension}` : '' + const valueSplit = value.split('.') + + if (valueSplit.length < 2) return `.${extension}` + + const hasExt = valueSplit[valueSplit.length - 1].length === 3 + + return !hasExt ? `.${extension}` : '' } diff --git a/src/utils/spec/file.spec.ts b/src/utils/spec/file.spec.ts new file mode 100644 index 0000000..af353e3 --- /dev/null +++ b/src/utils/spec/file.spec.ts @@ -0,0 +1,11 @@ +import { addExtensionIfNotFound } from ".." + +describe('file utils', () => { + it('should add extension if missing', async () => { + expect(addExtensionIfNotFound('test', 'ext')).toEqual('.ext') + expect(addExtensionIfNotFound('test.test', 'ext')).toEqual('.ext') + expect(addExtensionIfNotFound('test.sas', 'ext')).toEqual('') + expect(addExtensionIfNotFound('test.test.test', 'ext')).toEqual('.ext') + expect(addExtensionIfNotFound('test.test.test.sas', 'ext')).toEqual('') + }) +}) \ No newline at end of file