diff --git a/api/.nvmrc b/api/.nvmrc new file mode 100644 index 0000000..e2838c8 --- /dev/null +++ b/api/.nvmrc @@ -0,0 +1 @@ +v16.14.0 \ No newline at end of file diff --git a/api/src/routes/api/spec/drive.spec.ts b/api/src/routes/api/spec/drive.spec.ts index 1d979bb..7740f92 100644 --- a/api/src/routes/api/spec/drive.spec.ts +++ b/api/src/routes/api/spec/drive.spec.ts @@ -74,14 +74,19 @@ describe('files', () => { const res = await request(app) .post('/SASjsApi/drive/deploy') .auth(accessToken, { type: 'bearer' }) - .send(payload) + .send({ appLoc: '/Public', fileTree: payload }) expect(res.statusCode).toEqual(400) - expect(res.body).toEqual({ - status: 'failure', - message: 'Provided not supported data format.', - example: getTreeExample() - }) + + if (payload === undefined) { + expect(res.text).toEqual('"fileTree" is required') + } else { + expect(res.body).toEqual({ + status: 'failure', + message: 'Provided not supported data format.', + example: getTreeExample() + }) + } } it('should respond with payload example if valid payload was not provided', async () => { @@ -140,11 +145,11 @@ describe('files', () => { }) }) - it('should respond with payload example if valid payload was not provided', async () => { + it('should successfully deploy if valid payload was provided', async () => { const res = await request(app) .post('/SASjsApi/drive/deploy') .auth(accessToken, { type: 'bearer' }) - .send({ fileTree: getTreeExample() }) + .send({ appLoc: '/public', fileTree: getTreeExample() }) expect(res.statusCode).toEqual(200) expect(res.text).toEqual( @@ -154,6 +159,7 @@ describe('files', () => { const testJobFolder = path.join( getTmpFilesFolderPath(), + 'public', 'jobs', 'extract' ) diff --git a/web/.nvmrc b/web/.nvmrc new file mode 100644 index 0000000..e2838c8 --- /dev/null +++ b/web/.nvmrc @@ -0,0 +1 @@ +v16.14.0 \ No newline at end of file diff --git a/web/package-lock.json b/web/package-lock.json index e03cbd0..7667dbc 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -9215,11 +9215,14 @@ } }, "node_modules/prismjs": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", - "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", "dev": true, - "peer": true + "peer": true, + "engines": { + "node": ">=6" + } }, "node_modules/process": { "version": "0.11.10", @@ -18181,9 +18184,9 @@ } }, "prismjs": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", - "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", "dev": true, "peer": true }, diff --git a/web/src/components/header.tsx b/web/src/components/header.tsx index 59b860d..9efefa2 100644 --- a/web/src/components/header.tsx +++ b/web/src/components/header.tsx @@ -5,6 +5,13 @@ import AppBar from '@mui/material/AppBar' import Toolbar from '@mui/material/Toolbar' import Tabs from '@mui/material/Tabs' import Tab from '@mui/material/Tab' +import Button from '@mui/material/Button' +import OpenInNewIcon from '@mui/icons-material/OpenInNew' + +const NODE_ENV = process.env.NODE_ENV +const PORT_API = process.env.PORT_API +const baseUrl = + NODE_ENV === 'development' ? `http://localhost:${PORT_API ?? 5000}` : '' const Header = (props: any) => { const history = useHistory() @@ -52,6 +59,18 @@ const Header = (props: any) => { component={Link} /> + )