From 1d1ef7179e0c0f0af04c647d6883c83bc4109212 Mon Sep 17 00:00:00 2001 From: Mihajlo Date: Fri, 25 Mar 2022 18:05:47 +0100 Subject: [PATCH 1/4] fix: file upload on SASJS SERVER Also fixed appendRequest when debug on while on SASJS SERVER --- package-lock.json | 14 +++++++------- package.json | 2 +- src/job-execution/FileUploader.ts | 10 ++++++++++ src/request/RequestClient.ts | 18 ++++++++++++++++++ 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 134f7f9..9d896d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "hasInstallScript": true, "license": "ISC", "dependencies": { - "@sasjs/utils": "2.40.0", + "@sasjs/utils": "2.40.1", "axios": "0.26.0", "axios-cookiejar-support": "1.0.1", "form-data": "4.0.0", @@ -1142,9 +1142,9 @@ } }, "node_modules/@sasjs/utils": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.40.0.tgz", - "integrity": "sha512-U0y/eqRlvfkMHmKDlr1xmeN+Rask7TnJPuRpOz71P8QpGYTw1M9AyZvzRSk503p4KCJb8ysdcqXyGVLfhuoM+A==", + "version": "2.40.1", + "resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.40.1.tgz", + "integrity": "sha512-wWYElDH71bSZTdZ5V38743vAnw2EPDhzH7+1s7zxINHpaQWK/qrDldI0vgVFLeGpxVU0D7WPZ/ltG6MoE2obeg==", "hasInstallScript": true, "dependencies": { "@types/fs-extra": "9.0.13", @@ -13870,9 +13870,9 @@ } }, "@sasjs/utils": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.40.0.tgz", - "integrity": "sha512-U0y/eqRlvfkMHmKDlr1xmeN+Rask7TnJPuRpOz71P8QpGYTw1M9AyZvzRSk503p4KCJb8ysdcqXyGVLfhuoM+A==", + "version": "2.40.1", + "resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.40.1.tgz", + "integrity": "sha512-wWYElDH71bSZTdZ5V38743vAnw2EPDhzH7+1s7zxINHpaQWK/qrDldI0vgVFLeGpxVU0D7WPZ/ltG6MoE2obeg==", "requires": { "@types/fs-extra": "9.0.13", "@types/prompts": "2.0.13", diff --git a/package.json b/package.json index e708586..f1b8a52 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ }, "main": "index.js", "dependencies": { - "@sasjs/utils": "2.40.0", + "@sasjs/utils": "2.40.1", "axios": "0.26.0", "axios-cookiejar-support": "1.0.1", "form-data": "4.0.0", diff --git a/src/job-execution/FileUploader.ts b/src/job-execution/FileUploader.ts index 868cfa6..a93d057 100644 --- a/src/job-execution/FileUploader.ts +++ b/src/job-execution/FileUploader.ts @@ -99,7 +99,17 @@ export class FileUploader extends BaseJobExecutor { ? parseWeboutResponse(res.result, uploadUrl) : res.result break + case ServerType.Sasjs: + if (typeof res.result._webout === 'object') { + jsonResponse = res.result._webout + } else { + const webout = parseWeboutResponse(res.result._webout, uploadUrl) + jsonResponse = getValidJson(webout) + } + break } + } else if (this.serverType === ServerType.Sasjs) { + jsonResponse = getValidJson(res.result._webout) } else { jsonResponse = typeof res.result === 'string' diff --git a/src/request/RequestClient.ts b/src/request/RequestClient.ts index 3645c08..462fb21 100644 --- a/src/request/RequestClient.ts +++ b/src/request/RequestClient.ts @@ -131,6 +131,24 @@ export class RequestClient implements HttpClient { } else { sasWork = response.log } + } else if (response?.result?.log) { + //In this scenario we know we got the response from SASJS server + //Log is array of `{ line: '' }` so we need to convert it back to text + //To be able to parse it with current functions. + let log: string = '' + + if (typeof log !== 'string') { + log = response.result.log.map((logLine: any) => logLine.line).join('\n') + } + + sourceCode = parseSourceCode(log) + generatedCode = parseGeneratedCode(log) + + if (response?.result?._webout) { + sasWork = response.result._webout.WORK + } else { + sasWork = log + } } else if (response?.result) { sourceCode = parseSourceCode(response.result) generatedCode = parseGeneratedCode(response.result) From b0eb8b07a8b44d21a620f6bf47b747cf4e6c561f Mon Sep 17 00:00:00 2001 From: Mihajlo Date: Fri, 25 Mar 2022 18:11:20 +0100 Subject: [PATCH 2/4] style: lint --- src/job-execution/FileUploader.ts | 5 ++++- src/request/RequestClient.ts | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/job-execution/FileUploader.ts b/src/job-execution/FileUploader.ts index a93d057..13aa107 100644 --- a/src/job-execution/FileUploader.ts +++ b/src/job-execution/FileUploader.ts @@ -103,7 +103,10 @@ export class FileUploader extends BaseJobExecutor { if (typeof res.result._webout === 'object') { jsonResponse = res.result._webout } else { - const webout = parseWeboutResponse(res.result._webout, uploadUrl) + const webout = parseWeboutResponse( + res.result._webout, + uploadUrl + ) jsonResponse = getValidJson(webout) } break diff --git a/src/request/RequestClient.ts b/src/request/RequestClient.ts index 462fb21..04ac98d 100644 --- a/src/request/RequestClient.ts +++ b/src/request/RequestClient.ts @@ -138,7 +138,9 @@ export class RequestClient implements HttpClient { let log: string = '' if (typeof log !== 'string') { - log = response.result.log.map((logLine: any) => logLine.line).join('\n') + log = response.result.log + .map((logLine: any) => logLine.line) + .join('\n') } sourceCode = parseSourceCode(log) From 784bab452260403c3cfd2f27bb7cee87d6638d5f Mon Sep 17 00:00:00 2001 From: Allan Bowe Date: Mon, 28 Mar 2022 12:30:01 +0000 Subject: [PATCH 3/4] fix: adding README for new sendMacVars service --- sasjs-tests/README.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/sasjs-tests/README.md b/sasjs-tests/README.md index 573ae53..a400a1e 100644 --- a/sasjs-tests/README.md +++ b/sasjs-tests/README.md @@ -84,6 +84,15 @@ parmcards4; %webout(CLOSE) ;;;; %mm_createwebservice(path=/Public/app/common,name=sendArr) +parmcards4; + data work.macvars; + set sashelp.vmacro; + run; + %webout(OPEN) + %webout(OBJ,macvars) + %webout(CLOSE) +;;;; +%mm_createwebservice(path=/Public/app/common,name=sendMacVars) parmcards4; let he who hath understanding, reckon the number of the beast ;;;; @@ -118,7 +127,6 @@ parmcards4; %webout(CLOSE) ;;;; %mp_createwebservice(path=/Public/app/common,name=sendObj) -filename ft15f001 temp; parmcards4; %webout(FETCH) %webout(OPEN) @@ -132,7 +140,15 @@ parmcards4; %webout(CLOSE) ;;;; %mp_createwebservice(path=/Public/app/common,name=sendArr) -filename ft15f001 temp; +parmcards4; + data work.macvars; + set sashelp.vmacro; + run; + %webout(OPEN) + %webout(OBJ,macvars) + %webout(CLOSE) +;;;; +%mp_createwebservice(path=/Public/app/common,name=sendMacVars) parmcards4; If you can keep your head when all about you Are losing theirs and blaming it on you, From ed90cd80365651eda0ee0acb59585fb4dc653ab3 Mon Sep 17 00:00:00 2001 From: Mihajlo Date: Mon, 28 Mar 2022 17:32:30 +0200 Subject: [PATCH 4/4] chore: uploadFile test added --- sasjs-tests/package-lock.json | 20 ++++++------- sasjs-tests/src/App.tsx | 4 ++- sasjs-tests/src/testSuites/FileUpload.ts | 35 +++++++++++++++++++++++ sasjs-tests/src/testSuites/RequestData.ts | 1 + 4 files changed, 49 insertions(+), 11 deletions(-) create mode 100644 sasjs-tests/src/testSuites/FileUpload.ts diff --git a/sasjs-tests/package-lock.json b/sasjs-tests/package-lock.json index 1117451..72347b4 100644 --- a/sasjs-tests/package-lock.json +++ b/sasjs-tests/package-lock.json @@ -2388,11 +2388,11 @@ "node_modules/@sasjs/adapter": { "version": "5.0.0", "resolved": "file:../build/sasjs-adapter-5.0.0.tgz", - "integrity": "sha512-lbDWueAEnfNlu4OGrc9hBEzT0aoLfAy7eLd2nLHArrF6zukcSGBNhUgOqxIhlz4WeBdf1gt3nk1G7p5X1mrWYQ==", + "integrity": "sha512-5qtEs9yFuZ4v2UrFGNHeCIr/yZTp7D9He+e+N333qW9mdLJJ8fzRifuur/rFE6bNPqC2bdCjicYkO/yrHR4LQw==", "hasInstallScript": true, "license": "ISC", "dependencies": { - "@sasjs/utils": "2.36.1", + "@sasjs/utils": "2.40.1", "axios": "0.26.0", "axios-cookiejar-support": "1.0.1", "form-data": "4.0.0", @@ -2422,9 +2422,9 @@ } }, "node_modules/@sasjs/utils": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.36.1.tgz", - "integrity": "sha512-JkGUpLOODsvkeU+S25jb9k2WnvzyD2w6cEk7YyQ/byuqKL8xawH91PPWegrVcJlDY8WmqKE4CPcA3d1mM3B3LA==", + "version": "2.40.1", + "resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.40.1.tgz", + "integrity": "sha512-wWYElDH71bSZTdZ5V38743vAnw2EPDhzH7+1s7zxINHpaQWK/qrDldI0vgVFLeGpxVU0D7WPZ/ltG6MoE2obeg==", "hasInstallScript": true, "dependencies": { "@types/fs-extra": "9.0.13", @@ -20998,9 +20998,9 @@ }, "@sasjs/adapter": { "version": "file:../build/sasjs-adapter-5.0.0.tgz", - "integrity": "sha512-lbDWueAEnfNlu4OGrc9hBEzT0aoLfAy7eLd2nLHArrF6zukcSGBNhUgOqxIhlz4WeBdf1gt3nk1G7p5X1mrWYQ==", + "integrity": "sha512-5qtEs9yFuZ4v2UrFGNHeCIr/yZTp7D9He+e+N333qW9mdLJJ8fzRifuur/rFE6bNPqC2bdCjicYkO/yrHR4LQw==", "requires": { - "@sasjs/utils": "2.36.1", + "@sasjs/utils": "2.40.1", "axios": "0.26.0", "axios-cookiejar-support": "1.0.1", "form-data": "4.0.0", @@ -21022,9 +21022,9 @@ } }, "@sasjs/utils": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.36.1.tgz", - "integrity": "sha512-JkGUpLOODsvkeU+S25jb9k2WnvzyD2w6cEk7YyQ/byuqKL8xawH91PPWegrVcJlDY8WmqKE4CPcA3d1mM3B3LA==", + "version": "2.40.1", + "resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.40.1.tgz", + "integrity": "sha512-wWYElDH71bSZTdZ5V38743vAnw2EPDhzH7+1s7zxINHpaQWK/qrDldI0vgVFLeGpxVU0D7WPZ/ltG6MoE2obeg==", "requires": { "@types/fs-extra": "9.0.13", "@types/prompts": "2.0.13", diff --git a/sasjs-tests/src/App.tsx b/sasjs-tests/src/App.tsx index d0b92a2..066c12a 100644 --- a/sasjs-tests/src/App.tsx +++ b/sasjs-tests/src/App.tsx @@ -6,6 +6,7 @@ import { specialCaseTests } from './testSuites/SpecialCases' import { sasjsRequestTests } from './testSuites/SasjsRequests' import '@sasjs/test-framework/dist/index.css' import { computeTests } from './testSuites/Compute' +import { fileUploadTests } from './testSuites/FileUpload' const App = (): ReactElement<{}> => { const { adapter, config } = useContext(AppContext) @@ -18,7 +19,8 @@ const App = (): ReactElement<{}> => { sendArrTests(adapter), sendObjTests(adapter), specialCaseTests(adapter), - sasjsRequestTests(adapter) + sasjsRequestTests(adapter), + fileUploadTests(adapter) ] if (adapter.getSasjsConfig().serverType === 'SASVIYA') { diff --git a/sasjs-tests/src/testSuites/FileUpload.ts b/sasjs-tests/src/testSuites/FileUpload.ts new file mode 100644 index 0000000..b068ee4 --- /dev/null +++ b/sasjs-tests/src/testSuites/FileUpload.ts @@ -0,0 +1,35 @@ +import SASjs from '@sasjs/adapter' +import { TestSuite } from '@sasjs/test-framework' + +export const fileUploadTests = (adapter: SASjs): TestSuite => ({ + name: 'File Upload Tests', + tests: [ + { + title: 'Upload File', + description: 'Should upload the file to VIYA', + test: async () => { + let blob: any = new Blob(['test'], { type: 'text/html' }) + blob['lastModifiedDate'] = '' + blob['name'] = 'macvars_testfile' + let file = blob + + const filesToUpload = [ + { + file: file, + fileName: file.name + } + ] + + return adapter.uploadFile('common/sendMacVars', filesToUpload, null) + }, + assertion: (response: any) => + (response.macvars as any[]).findIndex( + (el: any) => el.NAME === '_WEBIN_FILE_COUNT' && el.VALUE === '1' + ) > -1 && + (response.macvars as any[]).findIndex( + (el: any) => + el.NAME === '_WEBIN_FILENAME' && el.VALUE === 'macvars_testfile' + ) > -1 + } + ] +}) diff --git a/sasjs-tests/src/testSuites/RequestData.ts b/sasjs-tests/src/testSuites/RequestData.ts index b4bf93e..c0584e9 100644 --- a/sasjs-tests/src/testSuites/RequestData.ts +++ b/sasjs-tests/src/testSuites/RequestData.ts @@ -218,6 +218,7 @@ export const sendObjTests = (adapter: SASjs): TestSuite => ({ const invalidData: any = { xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx: [{ col1: 42 }] } + return adapter.request('common/sendObj', invalidData).catch((e) => e) }, assertion: (error: any) =>