diff --git a/api/src/routes/api/spec/permission.spec.ts b/api/src/routes/api/spec/permission.spec.ts index aca367e..39b3f71 100644 --- a/api/src/routes/api/spec/permission.spec.ts +++ b/api/src/routes/api/spec/permission.spec.ts @@ -4,6 +4,7 @@ import { MongoMemoryServer } from 'mongodb-memory-server' import request from 'supertest' import appPromise from '../../../app' import { + DriveController, UserController, GroupController, ClientController, @@ -17,6 +18,27 @@ import { } from '../../../controllers' import { generateAccessToken, saveTokensInDB } from '../../../utils' +const deployPayload = { + appLoc: 'string', + streamWebFolder: 'string', + fileTree: { + members: [ + { + name: 'string', + type: 'folder', + members: [ + 'string', + { + name: 'string', + type: 'service', + code: 'string' + } + ] + } + ] + } +} + const clientId = 'someclientID' const adminUser = { displayName: 'Test Admin', @@ -478,6 +500,51 @@ describe('permission', () => { expect(res.body).toHaveLength(3) }) }) + + describe.only('verify', () => { + beforeAll(async () => { + await permissionController.createPermission({ + ...permission, + uri: '/SASjsApi/drive/deploy', + principalId: dbUser.id + }) + }) + + beforeEach(() => { + jest + .spyOn(DriveController.prototype, 'deploy') + .mockImplementation((deployPayload) => + Promise.resolve({ + status: 'success', + message: 'Files deployed successfully to @sasjs/server.' + }) + ) + }) + + afterEach(() => { + jest.resetAllMocks() + }) + + it('should create files in SASJS drive', async () => { + const accessToken = await generateAndSaveToken(dbUser.id) + + await request(app) + .get('/SASjsApi/drive/deploy') + .auth(accessToken, { type: 'bearer' }) + .send(deployPayload) + .expect(200) + }) + + it('should respond unauthorized', async () => { + const accessToken = await generateAndSaveToken(dbUser.id) + + await request(app) + .get('/SASjsApi/drive/deploy/upload') + .auth(accessToken, { type: 'bearer' }) + .send() + .expect(401) + }) + }) }) const generateSaveTokenAndCreateUser = async (