1
0
mirror of https://github.com/sasjs/server.git synced 2025-12-10 19:34:34 +00:00

feat: added mocking endpoints

This commit is contained in:
2022-08-25 15:58:08 +02:00
parent e94c56b23f
commit 0a0ba2cca5
6 changed files with 1951 additions and 1982 deletions

1
.gitignore vendored
View File

@@ -6,6 +6,7 @@ node_modules/
sas/
sasjs_root/
tmp/
api/mocks/*
build/
sasjsbuild/
sasjscore/

View File

@@ -96,6 +96,9 @@ PROTOCOL=
# default: 5000
PORT=
# options: [sas9|sasviya]
# If not present, mocking function is disabled
MOCK_SERVERTYPE=
#
## Additional SAS Options

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,57 @@
import { readFile } from '@sasjs/utils'
import express, { Request } from 'express'
import path from 'path'
const mockSas9Router = express.Router()
const { MOCK_SERVERTYPE } = process.env
mockSas9Router.post('/SASStoredProcess/do/', async (req, res) => {
let program = req.query._program?.toString() || ''
program = program.replace('/', '')
const filePath = path.join(process.cwd(), 'mocks', program)
let file
try {
file = await readFile(
filePath
)
} catch (err: any) {
console.error(`Mocked file on path: ${filePath} is not found.`)
return
}
if (!file) {
console.error(`Mocked file on path: ${filePath} is not found.`)
return
}
let fileContent = ''
try {
fileContent = JSON.parse(file)
} catch (err: any) {
fileContent = file
}
try {
res.send(fileContent)
} catch (err: any) {
res.status(403).send(err.toString())
}
})
if (MOCK_SERVERTYPE === undefined) {
mockSas9Router.post('/SASLogon/login', async (req, res) => {
try {
res.send({ msg: 'Login' })
} catch (err: any) {
res.status(403).send(err.toString())
}
})
}
export default mockSas9Router

View File

@@ -0,0 +1,13 @@
import express from 'express'
const mockViyaRouter = express.Router()
mockViyaRouter.post('/SASJobExecution/', async (req, res) => {
try {
res.send({ test: 'test' })
} catch (err: any) {
res.status(403).send(err.toString())
}
})
export default mockViyaRouter

View File

@@ -2,10 +2,13 @@ import express from 'express'
import { WebController } from '../../controllers/web'
import { authenticateAccessToken, desktopRestrict } from '../../middlewares'
import { authorizeValidation, loginWebValidation } from '../../utils'
import mockSas9Router from '../api/mock-sas9'
const webRouter = express.Router()
const controller = new WebController()
const { MOCK_SERVERTYPE } = process.env
webRouter.get('/', async (req, res) => {
let response
try {
@@ -23,17 +26,19 @@ webRouter.get('/', async (req, res) => {
}
})
webRouter.post('/SASLogon/login', desktopRestrict, async (req, res) => {
const { error, value: body } = loginWebValidation(req.body)
if (error) return res.status(400).send(error.details[0].message)
try {
const response = await controller.login(req, body)
res.send(response)
} catch (err: any) {
res.status(403).send(err.toString())
}
})
if (MOCK_SERVERTYPE !== undefined) {
webRouter.post('/SASLogon/login', desktopRestrict, async (req, res) => {
const { error, value: body } = loginWebValidation(req.body)
if (error) return res.status(400).send(error.details[0].message)
try {
const response = await controller.login(req, body)
res.send(response)
} catch (err: any) {
res.status(403).send(err.toString())
}
})
}
webRouter.post(
'/SASLogon/authorize',
@@ -61,4 +66,8 @@ webRouter.get('/SASLogon/logout', desktopRestrict, async (req, res) => {
}
})
webRouter.use('/', mockSas9Router)
// disabled for now
// webRouter.use('/', mockViyaRouter)
export default webRouter