mirror of
https://github.com/sasjs/server.git
synced 2025-12-12 03:54:34 +00:00
feat: added mocking endpoints
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,6 +6,7 @@ node_modules/
|
|||||||
sas/
|
sas/
|
||||||
sasjs_root/
|
sasjs_root/
|
||||||
tmp/
|
tmp/
|
||||||
|
api/mocks/*
|
||||||
build/
|
build/
|
||||||
sasjsbuild/
|
sasjsbuild/
|
||||||
sasjscore/
|
sasjscore/
|
||||||
|
|||||||
@@ -96,6 +96,9 @@ PROTOCOL=
|
|||||||
# default: 5000
|
# default: 5000
|
||||||
PORT=
|
PORT=
|
||||||
|
|
||||||
|
# options: [sas9|sasviya]
|
||||||
|
# If not present, mocking function is disabled
|
||||||
|
MOCK_SERVERTYPE=
|
||||||
|
|
||||||
#
|
#
|
||||||
## Additional SAS Options
|
## Additional SAS Options
|
||||||
|
|||||||
@@ -85,8 +85,10 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
_webout:
|
_webout:
|
||||||
anyOf:
|
anyOf:
|
||||||
- type: string
|
-
|
||||||
- $ref: '#/components/schemas/IRecordOfAny'
|
type: string
|
||||||
|
-
|
||||||
|
$ref: '#/components/schemas/IRecordOfAny'
|
||||||
log:
|
log:
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/LogLine'
|
$ref: '#/components/schemas/LogLine'
|
||||||
@@ -106,6 +108,7 @@ components:
|
|||||||
enum:
|
enum:
|
||||||
- sas
|
- sas
|
||||||
- js
|
- js
|
||||||
|
- py
|
||||||
type: string
|
type: string
|
||||||
ExecuteCodePayload:
|
ExecuteCodePayload:
|
||||||
properties:
|
properties:
|
||||||
@@ -135,9 +138,12 @@ components:
|
|||||||
members:
|
members:
|
||||||
items:
|
items:
|
||||||
anyOf:
|
anyOf:
|
||||||
- $ref: '#/components/schemas/FolderMember'
|
-
|
||||||
- $ref: '#/components/schemas/ServiceMember'
|
$ref: '#/components/schemas/FolderMember'
|
||||||
- $ref: '#/components/schemas/FileMember'
|
-
|
||||||
|
$ref: '#/components/schemas/ServiceMember'
|
||||||
|
-
|
||||||
|
$ref: '#/components/schemas/FileMember'
|
||||||
type: array
|
type: array
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
@@ -186,9 +192,12 @@ components:
|
|||||||
members:
|
members:
|
||||||
items:
|
items:
|
||||||
anyOf:
|
anyOf:
|
||||||
- $ref: '#/components/schemas/FolderMember'
|
-
|
||||||
- $ref: '#/components/schemas/ServiceMember'
|
$ref: '#/components/schemas/FolderMember'
|
||||||
- $ref: '#/components/schemas/FileMember'
|
-
|
||||||
|
$ref: '#/components/schemas/ServiceMember'
|
||||||
|
-
|
||||||
|
$ref: '#/components/schemas/FileMember'
|
||||||
type: array
|
type: array
|
||||||
required:
|
required:
|
||||||
- members
|
- members
|
||||||
@@ -374,7 +383,7 @@ components:
|
|||||||
autoExec:
|
autoExec:
|
||||||
type: string
|
type: string
|
||||||
description: 'User-specific auto-exec code'
|
description: 'User-specific auto-exec code'
|
||||||
example: ''
|
example: ""
|
||||||
required:
|
required:
|
||||||
- displayName
|
- displayName
|
||||||
- username
|
- username
|
||||||
@@ -423,27 +432,13 @@ components:
|
|||||||
- description
|
- description
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
_LeanDocument__LeanDocument_T__:
|
FlattenMaps_T_:
|
||||||
properties: {}
|
properties: {}
|
||||||
type: object
|
type: object
|
||||||
Pick__LeanDocument_T_.Exclude_keyof_LeanDocument_T_.Exclude_keyofDocument._id-or-id-or-__v_-or-%24isSingleNested__:
|
|
||||||
properties:
|
|
||||||
_id:
|
|
||||||
$ref: '#/components/schemas/_LeanDocument__LeanDocument_T__'
|
|
||||||
description: 'This documents _id.'
|
|
||||||
__v:
|
|
||||||
description: 'This documents __v.'
|
|
||||||
id:
|
|
||||||
description: 'The string version of this documents _id.'
|
|
||||||
type: object
|
|
||||||
description: 'From T, pick a set of properties whose keys are in the union K'
|
|
||||||
Omit__LeanDocument_this_.Exclude_keyofDocument._id-or-id-or-__v_-or-%24isSingleNested_:
|
|
||||||
$ref: '#/components/schemas/Pick__LeanDocument_T_.Exclude_keyof_LeanDocument_T_.Exclude_keyofDocument._id-or-id-or-__v_-or-%24isSingleNested__'
|
|
||||||
description: 'Construct a type with the properties of T except for those in type K.'
|
|
||||||
LeanDocument_this_:
|
|
||||||
$ref: '#/components/schemas/Omit__LeanDocument_this_.Exclude_keyofDocument._id-or-id-or-__v_-or-%24isSingleNested_'
|
|
||||||
IGroup:
|
IGroup:
|
||||||
$ref: '#/components/schemas/LeanDocument_this_'
|
$ref: '#/components/schemas/FlattenMaps_T_'
|
||||||
|
ObjectId:
|
||||||
|
type: string
|
||||||
InfoResponse:
|
InfoResponse:
|
||||||
properties:
|
properties:
|
||||||
mode:
|
mode:
|
||||||
@@ -623,11 +618,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/TokenResponse'
|
$ref: '#/components/schemas/TokenResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {accessToken: someRandomCryptoString, refreshToken: someRandomCryptoString}
|
||||||
{
|
|
||||||
accessToken: someRandomCryptoString,
|
|
||||||
refreshToken: someRandomCryptoString
|
|
||||||
}
|
|
||||||
summary: 'Accepts client/auth code and returns access/refresh tokens'
|
summary: 'Accepts client/auth code and returns access/refresh tokens'
|
||||||
tags:
|
tags:
|
||||||
- Auth
|
- Auth
|
||||||
@@ -651,16 +642,13 @@ paths:
|
|||||||
$ref: '#/components/schemas/TokenResponse'
|
$ref: '#/components/schemas/TokenResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {accessToken: someRandomCryptoString, refreshToken: someRandomCryptoString}
|
||||||
{
|
|
||||||
accessToken: someRandomCryptoString,
|
|
||||||
refreshToken: someRandomCryptoString
|
|
||||||
}
|
|
||||||
summary: 'Returns new access/refresh tokens'
|
summary: 'Returns new access/refresh tokens'
|
||||||
tags:
|
tags:
|
||||||
- Auth
|
- Auth
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
/SASjsApi/auth/logout:
|
/SASjsApi/auth/logout:
|
||||||
post:
|
post:
|
||||||
@@ -672,7 +660,8 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Auth
|
- Auth
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
/SASjsApi/client:
|
/SASjsApi/client:
|
||||||
post:
|
post:
|
||||||
@@ -686,16 +675,13 @@ paths:
|
|||||||
$ref: '#/components/schemas/ClientPayload'
|
$ref: '#/components/schemas/ClientPayload'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {clientId: someFormattedClientID1234, clientSecret: someRandomCryptoString}
|
||||||
{
|
|
||||||
clientId: someFormattedClientID1234,
|
|
||||||
clientSecret: someRandomCryptoString
|
|
||||||
}
|
|
||||||
summary: 'Create client with the following attributes: ClientId, ClientSecret. Admin only task.'
|
summary: 'Create client with the following attributes: ClientId, ClientSecret. Admin only task.'
|
||||||
tags:
|
tags:
|
||||||
- Client
|
- Client
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
@@ -718,7 +704,8 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- CODE
|
- CODE
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
@@ -738,11 +725,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/DeployResponse'
|
$ref: '#/components/schemas/DeployResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {status: success, message: 'Files deployed successfully to @sasjs/server.'}
|
||||||
{
|
|
||||||
status: success,
|
|
||||||
message: 'Files deployed successfully to @sasjs/server.'
|
|
||||||
}
|
|
||||||
'400':
|
'400':
|
||||||
description: 'Invalid Format'
|
description: 'Invalid Format'
|
||||||
content:
|
content:
|
||||||
@@ -751,11 +734,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/DeployResponse'
|
$ref: '#/components/schemas/DeployResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {status: failure, message: 'Provided not supported data format.'}
|
||||||
{
|
|
||||||
status: failure,
|
|
||||||
message: 'Provided not supported data format.'
|
|
||||||
}
|
|
||||||
'500':
|
'500':
|
||||||
description: 'Execution Error'
|
description: 'Execution Error'
|
||||||
content:
|
content:
|
||||||
@@ -769,7 +748,8 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
@@ -789,11 +769,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/DeployResponse'
|
$ref: '#/components/schemas/DeployResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {status: success, message: 'Files deployed successfully to @sasjs/server.'}
|
||||||
{
|
|
||||||
status: success,
|
|
||||||
message: 'Files deployed successfully to @sasjs/server.'
|
|
||||||
}
|
|
||||||
'400':
|
'400':
|
||||||
description: 'Invalid Format'
|
description: 'Invalid Format'
|
||||||
content:
|
content:
|
||||||
@@ -802,11 +778,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/DeployResponse'
|
$ref: '#/components/schemas/DeployResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {status: failure, message: 'Provided not supported data format.'}
|
||||||
{
|
|
||||||
status: failure,
|
|
||||||
message: 'Provided not supported data format.'
|
|
||||||
}
|
|
||||||
'500':
|
'500':
|
||||||
description: 'Execution Error'
|
description: 'Execution Error'
|
||||||
content:
|
content:
|
||||||
@@ -821,7 +793,8 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
@@ -845,9 +818,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- in: query
|
-
|
||||||
|
in: query
|
||||||
name: _filePath
|
name: _filePath
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
@@ -870,9 +845,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- in: query
|
-
|
||||||
|
in: query
|
||||||
name: _filePath
|
name: _filePath
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
@@ -904,9 +881,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: 'Location of file'
|
-
|
||||||
|
description: 'Location of file'
|
||||||
in: query
|
in: query
|
||||||
name: _filePath
|
name: _filePath
|
||||||
required: false
|
required: false
|
||||||
@@ -940,7 +919,7 @@ paths:
|
|||||||
'Example 1':
|
'Example 1':
|
||||||
value: {status: success}
|
value: {status: success}
|
||||||
'403':
|
'403':
|
||||||
description: ''
|
description: ""
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
@@ -953,9 +932,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: 'Location of SAS program'
|
-
|
||||||
|
description: 'Location of SAS program'
|
||||||
in: query
|
in: query
|
||||||
name: _filePath
|
name: _filePath
|
||||||
required: false
|
required: false
|
||||||
@@ -996,9 +977,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- in: query
|
-
|
||||||
|
in: query
|
||||||
name: _folderPath
|
name: _folderPath
|
||||||
required: false
|
required: false
|
||||||
schema:
|
schema:
|
||||||
@@ -1021,9 +1004,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- in: query
|
-
|
||||||
|
in: query
|
||||||
name: _folderPath
|
name: _folderPath
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
@@ -1049,13 +1034,13 @@ paths:
|
|||||||
$ref: '#/components/schemas/FileFolderResponse'
|
$ref: '#/components/schemas/FileFolderResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {status: failure, message: 'Add folder request failed.'}
|
||||||
{ status: failure, message: 'Add folder request failed.' }
|
|
||||||
summary: 'Create an empty folder in SASjs Drive'
|
summary: 'Create an empty folder in SASjs Drive'
|
||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
@@ -1089,7 +1074,8 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
@@ -1111,7 +1097,8 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Drive
|
- Drive
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
/SASjsApi/user:
|
/SASjsApi/user:
|
||||||
get:
|
get:
|
||||||
@@ -1127,26 +1114,13 @@ paths:
|
|||||||
type: array
|
type: array
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: [{id: 123, username: johnusername, displayName: John, isAdmin: false}, {id: 456, username: starkusername, displayName: Stark, isAdmin: true}]
|
||||||
[
|
|
||||||
{
|
|
||||||
id: 123,
|
|
||||||
username: johnusername,
|
|
||||||
displayName: John,
|
|
||||||
isAdmin: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 456,
|
|
||||||
username: starkusername,
|
|
||||||
displayName: Stark,
|
|
||||||
isAdmin: true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
summary: 'Get list of all users (username, displayname). All users can request this.'
|
summary: 'Get list of all users (username, displayname). All users can request this.'
|
||||||
tags:
|
tags:
|
||||||
- User
|
- User
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
post:
|
post:
|
||||||
operationId: CreateUser
|
operationId: CreateUser
|
||||||
@@ -1159,19 +1133,13 @@ paths:
|
|||||||
$ref: '#/components/schemas/UserDetailsResponse'
|
$ref: '#/components/schemas/UserDetailsResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {id: 1234, displayName: 'John Snow', username: johnSnow01, isAdmin: false, isActive: true}
|
||||||
{
|
|
||||||
id: 1234,
|
|
||||||
displayName: 'John Snow',
|
|
||||||
username: johnSnow01,
|
|
||||||
isAdmin: false,
|
|
||||||
isActive: true
|
|
||||||
}
|
|
||||||
summary: 'Create user with the following attributes: UserId, UserName, Password, isAdmin, isActive. Admin only task.'
|
summary: 'Create user with the following attributes: UserId, UserName, Password, isAdmin, isActive. Admin only task.'
|
||||||
tags:
|
tags:
|
||||||
- User
|
- User
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
@@ -1194,9 +1162,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- User
|
- User
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The User's username"
|
-
|
||||||
|
description: 'The User''s username'
|
||||||
in: path
|
in: path
|
||||||
name: username
|
name: username
|
||||||
required: true
|
required: true
|
||||||
@@ -1214,21 +1184,16 @@ paths:
|
|||||||
$ref: '#/components/schemas/UserDetailsResponse'
|
$ref: '#/components/schemas/UserDetailsResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {id: 1234, displayName: 'John Snow', username: johnSnow01, isAdmin: false, isActive: true}
|
||||||
{
|
|
||||||
id: 1234,
|
|
||||||
displayName: 'John Snow',
|
|
||||||
username: johnSnow01,
|
|
||||||
isAdmin: false,
|
|
||||||
isActive: true
|
|
||||||
}
|
|
||||||
summary: 'Update user properties - such as displayName. Can be performed either by admins, or the user in question.'
|
summary: 'Update user properties - such as displayName. Can be performed either by admins, or the user in question.'
|
||||||
tags:
|
tags:
|
||||||
- User
|
- User
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The User's username"
|
-
|
||||||
|
description: 'The User''s username'
|
||||||
in: path
|
in: path
|
||||||
name: username
|
name: username
|
||||||
required: true
|
required: true
|
||||||
@@ -1250,9 +1215,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- User
|
- User
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The User's username"
|
-
|
||||||
|
description: 'The User''s username'
|
||||||
in: path
|
in: path
|
||||||
name: username
|
name: username
|
||||||
required: true
|
required: true
|
||||||
@@ -1283,9 +1250,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- User
|
- User
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The user's identifier"
|
-
|
||||||
|
description: 'The user''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: userId
|
name: userId
|
||||||
required: true
|
required: true
|
||||||
@@ -1304,21 +1273,16 @@ paths:
|
|||||||
$ref: '#/components/schemas/UserDetailsResponse'
|
$ref: '#/components/schemas/UserDetailsResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {id: 1234, displayName: 'John Snow', username: johnSnow01, isAdmin: false, isActive: true}
|
||||||
{
|
|
||||||
id: 1234,
|
|
||||||
displayName: 'John Snow',
|
|
||||||
username: johnSnow01,
|
|
||||||
isAdmin: false,
|
|
||||||
isActive: true
|
|
||||||
}
|
|
||||||
summary: 'Update user properties - such as displayName. Can be performed either by admins, or the user in question.'
|
summary: 'Update user properties - such as displayName. Can be performed either by admins, or the user in question.'
|
||||||
tags:
|
tags:
|
||||||
- User
|
- User
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The user's identifier"
|
-
|
||||||
|
description: 'The user''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: userId
|
name: userId
|
||||||
required: true
|
required: true
|
||||||
@@ -1341,9 +1305,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- User
|
- User
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The user's identifier"
|
-
|
||||||
|
description: 'The user''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: userId
|
name: userId
|
||||||
required: true
|
required: true
|
||||||
@@ -1374,19 +1340,13 @@ paths:
|
|||||||
type: array
|
type: array
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: [{groupId: 123, name: DCGroup, description: 'This group represents Data Controller Users'}]
|
||||||
[
|
|
||||||
{
|
|
||||||
groupId: 123,
|
|
||||||
name: DCGroup,
|
|
||||||
description: 'This group represents Data Controller Users'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
summary: 'Get list of all groups (groupName and groupDescription). All users can request this.'
|
summary: 'Get list of all groups (groupName and groupDescription). All users can request this.'
|
||||||
tags:
|
tags:
|
||||||
- Group
|
- Group
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
post:
|
post:
|
||||||
operationId: CreateGroup
|
operationId: CreateGroup
|
||||||
@@ -1399,19 +1359,13 @@ paths:
|
|||||||
$ref: '#/components/schemas/GroupDetailsResponse'
|
$ref: '#/components/schemas/GroupDetailsResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {groupId: 123, name: DCGroup, description: 'This group represents Data Controller Users', isActive: true, users: []}
|
||||||
{
|
|
||||||
groupId: 123,
|
|
||||||
name: DCGroup,
|
|
||||||
description: 'This group represents Data Controller Users',
|
|
||||||
isActive: true,
|
|
||||||
users: []
|
|
||||||
}
|
|
||||||
summary: 'Create a new group. Admin only.'
|
summary: 'Create a new group. Admin only.'
|
||||||
tags:
|
tags:
|
||||||
- Group
|
- Group
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
@@ -1433,9 +1387,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Group
|
- Group
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The group's name"
|
-
|
||||||
|
description: 'The group''s name'
|
||||||
in: path
|
in: path
|
||||||
name: name
|
name: name
|
||||||
required: true
|
required: true
|
||||||
@@ -1455,9 +1411,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Group
|
- Group
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The group's identifier"
|
-
|
||||||
|
description: 'The group''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: groupId
|
name: groupId
|
||||||
required: true
|
required: true
|
||||||
@@ -1475,14 +1433,16 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
allOf:
|
allOf:
|
||||||
- {$ref: '#/components/schemas/IGroup'}
|
- {$ref: '#/components/schemas/IGroup'}
|
||||||
- { properties: { _id: {} }, required: [_id], type: object }
|
- {properties: {_id: {$ref: '#/components/schemas/ObjectId'}}, required: [_id], type: object}
|
||||||
summary: 'Delete a group. Admin task only.'
|
summary: 'Delete a group. Admin task only.'
|
||||||
tags:
|
tags:
|
||||||
- Group
|
- Group
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The group's identifier"
|
-
|
||||||
|
description: 'The group''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: groupId
|
name: groupId
|
||||||
required: true
|
required: true
|
||||||
@@ -1502,21 +1462,16 @@ paths:
|
|||||||
$ref: '#/components/schemas/GroupDetailsResponse'
|
$ref: '#/components/schemas/GroupDetailsResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {groupId: 123, name: DCGroup, description: 'This group represents Data Controller Users', isActive: true, users: []}
|
||||||
{
|
|
||||||
groupId: 123,
|
|
||||||
name: DCGroup,
|
|
||||||
description: 'This group represents Data Controller Users',
|
|
||||||
isActive: true,
|
|
||||||
users: []
|
|
||||||
}
|
|
||||||
summary: 'Add a user to a group. Admin task only.'
|
summary: 'Add a user to a group. Admin task only.'
|
||||||
tags:
|
tags:
|
||||||
- Group
|
- Group
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The group's identifier"
|
-
|
||||||
|
description: 'The group''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: groupId
|
name: groupId
|
||||||
required: true
|
required: true
|
||||||
@@ -1524,7 +1479,8 @@ paths:
|
|||||||
format: double
|
format: double
|
||||||
type: number
|
type: number
|
||||||
example: '1234'
|
example: '1234'
|
||||||
- description: "The user's identifier"
|
-
|
||||||
|
description: 'The user''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: userId
|
name: userId
|
||||||
required: true
|
required: true
|
||||||
@@ -1543,21 +1499,16 @@ paths:
|
|||||||
$ref: '#/components/schemas/GroupDetailsResponse'
|
$ref: '#/components/schemas/GroupDetailsResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {groupId: 123, name: DCGroup, description: 'This group represents Data Controller Users', isActive: true, users: []}
|
||||||
{
|
|
||||||
groupId: 123,
|
|
||||||
name: DCGroup,
|
|
||||||
description: 'This group represents Data Controller Users',
|
|
||||||
isActive: true,
|
|
||||||
users: []
|
|
||||||
}
|
|
||||||
summary: 'Remove a user to a group. Admin task only.'
|
summary: 'Remove a user to a group. Admin task only.'
|
||||||
tags:
|
tags:
|
||||||
- Group
|
- Group
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The group's identifier"
|
-
|
||||||
|
description: 'The group''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: groupId
|
name: groupId
|
||||||
required: true
|
required: true
|
||||||
@@ -1565,7 +1516,8 @@ paths:
|
|||||||
format: double
|
format: double
|
||||||
type: number
|
type: number
|
||||||
example: '1234'
|
example: '1234'
|
||||||
- description: "The user's identifier"
|
-
|
||||||
|
description: 'The user''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: userId
|
name: userId
|
||||||
required: true
|
required: true
|
||||||
@@ -1585,14 +1537,7 @@ paths:
|
|||||||
$ref: '#/components/schemas/InfoResponse'
|
$ref: '#/components/schemas/InfoResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {mode: desktop, cors: enable, whiteList: ['http://example.com', 'http://example2.com'], protocol: http, runTimes: [sas, js]}
|
||||||
{
|
|
||||||
mode: desktop,
|
|
||||||
cors: enable,
|
|
||||||
whiteList: ['http://example.com', 'http://example2.com'],
|
|
||||||
protocol: http,
|
|
||||||
runTimes: [sas, js]
|
|
||||||
}
|
|
||||||
summary: 'Get server info (mode, cors, whiteList, protocol).'
|
summary: 'Get server info (mode, cors, whiteList, protocol).'
|
||||||
tags:
|
tags:
|
||||||
- Info
|
- Info
|
||||||
@@ -1630,42 +1575,14 @@ paths:
|
|||||||
type: array
|
type: array
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: [{permissionId: 123, path: /SASjsApi/code/execute, type: Route, setting: Grant, user: {id: 1, username: johnSnow01, displayName: 'John Snow', isAdmin: false}}, {permissionId: 124, path: /SASjsApi/code/execute, type: Route, setting: Grant, group: {groupId: 1, name: DCGroup, description: 'This group represents Data Controller Users', isActive: true, users: []}}]
|
||||||
[
|
|
||||||
{
|
|
||||||
permissionId: 123,
|
|
||||||
path: /SASjsApi/code/execute,
|
|
||||||
type: Route,
|
|
||||||
setting: Grant,
|
|
||||||
user:
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
username: johnSnow01,
|
|
||||||
displayName: 'John Snow',
|
|
||||||
isAdmin: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
permissionId: 124,
|
|
||||||
path: /SASjsApi/code/execute,
|
|
||||||
type: Route,
|
|
||||||
setting: Grant,
|
|
||||||
group:
|
|
||||||
{
|
|
||||||
groupId: 1,
|
|
||||||
name: DCGroup,
|
|
||||||
description: 'This group represents Data Controller Users',
|
|
||||||
isActive: true,
|
|
||||||
users: []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
description: "Get the list of permission rules applicable the authenticated user.\nIf the user is an admin, all rules are returned."
|
description: "Get the list of permission rules applicable the authenticated user.\nIf the user is an admin, all rules are returned."
|
||||||
summary: 'Get the list of permission rules. If the user is admin, all rules are returned.'
|
summary: 'Get the list of permission rules. If the user is admin, all rules are returned.'
|
||||||
tags:
|
tags:
|
||||||
- Permission
|
- Permission
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
post:
|
post:
|
||||||
operationId: CreatePermission
|
operationId: CreatePermission
|
||||||
@@ -1678,25 +1595,13 @@ paths:
|
|||||||
$ref: '#/components/schemas/PermissionDetailsResponse'
|
$ref: '#/components/schemas/PermissionDetailsResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {permissionId: 123, path: /SASjsApi/code/execute, type: Route, setting: Grant, user: {id: 1, username: johnSnow01, displayName: 'John Snow', isAdmin: false}}
|
||||||
{
|
|
||||||
permissionId: 123,
|
|
||||||
path: /SASjsApi/code/execute,
|
|
||||||
type: Route,
|
|
||||||
setting: Grant,
|
|
||||||
user:
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
username: johnSnow01,
|
|
||||||
displayName: 'John Snow',
|
|
||||||
isAdmin: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
summary: 'Create a new permission. Admin only.'
|
summary: 'Create a new permission. Admin only.'
|
||||||
tags:
|
tags:
|
||||||
- Permission
|
- Permission
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
@@ -1716,27 +1621,16 @@ paths:
|
|||||||
$ref: '#/components/schemas/PermissionDetailsResponse'
|
$ref: '#/components/schemas/PermissionDetailsResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {permissionId: 123, path: /SASjsApi/code/execute, type: Route, setting: Grant, user: {id: 1, username: johnSnow01, displayName: 'John Snow', isAdmin: false}}
|
||||||
{
|
|
||||||
permissionId: 123,
|
|
||||||
path: /SASjsApi/code/execute,
|
|
||||||
type: Route,
|
|
||||||
setting: Grant,
|
|
||||||
user:
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
username: johnSnow01,
|
|
||||||
displayName: 'John Snow',
|
|
||||||
isAdmin: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
summary: 'Update permission setting. Admin only'
|
summary: 'Update permission setting. Admin only'
|
||||||
tags:
|
tags:
|
||||||
- Permission
|
- Permission
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The permission's identifier"
|
-
|
||||||
|
description: 'The permission''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: permissionId
|
name: permissionId
|
||||||
required: true
|
required: true
|
||||||
@@ -1759,9 +1653,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- Permission
|
- Permission
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: "The user's identifier"
|
-
|
||||||
|
description: 'The user''s identifier'
|
||||||
in: path
|
in: path
|
||||||
name: permissionId
|
name: permissionId
|
||||||
required: true
|
required: true
|
||||||
@@ -1781,18 +1677,13 @@ paths:
|
|||||||
$ref: '#/components/schemas/UserResponse'
|
$ref: '#/components/schemas/UserResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {id: 123, username: johnusername, displayName: John, isAdmin: false}
|
||||||
{
|
|
||||||
id: 123,
|
|
||||||
username: johnusername,
|
|
||||||
displayName: John,
|
|
||||||
isAdmin: false
|
|
||||||
}
|
|
||||||
summary: 'Get session info (username).'
|
summary: 'Get session info (username).'
|
||||||
tags:
|
tags:
|
||||||
- Session
|
- Session
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters: []
|
parameters: []
|
||||||
/SASjsApi/stp/execute:
|
/SASjsApi/stp/execute:
|
||||||
get:
|
get:
|
||||||
@@ -1811,9 +1702,11 @@ paths:
|
|||||||
tags:
|
tags:
|
||||||
- STP
|
- STP
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: 'Location of SAS or JS code'
|
-
|
||||||
|
description: 'Location of SAS or JS code'
|
||||||
in: query
|
in: query
|
||||||
name: _program
|
name: _program
|
||||||
required: true
|
required: true
|
||||||
@@ -1831,25 +1724,17 @@ paths:
|
|||||||
$ref: '#/components/schemas/ExecuteReturnJsonResponse'
|
$ref: '#/components/schemas/ExecuteReturnJsonResponse'
|
||||||
examples:
|
examples:
|
||||||
'Example 1':
|
'Example 1':
|
||||||
value:
|
value: {status: success, _webout: 'webout content', log: [], httpHeaders: {Content-type: application/zip, Cache-Control: 'public, max-age=1000'}}
|
||||||
{
|
|
||||||
status: success,
|
|
||||||
_webout: 'webout content',
|
|
||||||
log: [],
|
|
||||||
httpHeaders:
|
|
||||||
{
|
|
||||||
Content-type: application/zip,
|
|
||||||
Cache-Control: 'public, max-age=1000'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
description: "Trigger a SAS or JS program using the _program URL parameter.\n\nAccepts URL parameters and file uploads. For more details, see docs:\n\nhttps://server.sasjs.io/storedprograms\n\nThe response will be a JSON object with the following root attributes:\nlog, webout, headers.\n\nThe webout attribute will be nested JSON ONLY if the response-header\ncontains a content-type of application/json AND it is valid JSON.\nOtherwise it will be a stringified version of the webout content."
|
description: "Trigger a SAS or JS program using the _program URL parameter.\n\nAccepts URL parameters and file uploads. For more details, see docs:\n\nhttps://server.sasjs.io/storedprograms\n\nThe response will be a JSON object with the following root attributes:\nlog, webout, headers.\n\nThe webout attribute will be nested JSON ONLY if the response-header\ncontains a content-type of application/json AND it is valid JSON.\nOtherwise it will be a stringified version of the webout content."
|
||||||
summary: 'Execute a Stored Program, return a JSON object'
|
summary: 'Execute a Stored Program, return a JSON object'
|
||||||
tags:
|
tags:
|
||||||
- STP
|
- STP
|
||||||
security:
|
security:
|
||||||
- bearerAuth: []
|
-
|
||||||
|
bearerAuth: []
|
||||||
parameters:
|
parameters:
|
||||||
- description: 'Location of SAS or JS code'
|
-
|
||||||
|
description: 'Location of SAS or JS code'
|
||||||
in: query
|
in: query
|
||||||
name: _program
|
name: _program
|
||||||
required: false
|
required: false
|
||||||
@@ -1887,18 +1772,7 @@ paths:
|
|||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
properties:
|
properties:
|
||||||
user:
|
user: {properties: {isAdmin: {type: boolean}, displayName: {type: string}, username: {type: string}, id: {type: number, format: double}}, required: [isAdmin, displayName, username, id], type: object}
|
||||||
{
|
|
||||||
properties:
|
|
||||||
{
|
|
||||||
isAdmin: { type: boolean },
|
|
||||||
displayName: { type: string },
|
|
||||||
username: { type: string },
|
|
||||||
id: { type: number, format: double }
|
|
||||||
},
|
|
||||||
required: [isAdmin, displayName, username, id],
|
|
||||||
type: object
|
|
||||||
}
|
|
||||||
loggedIn: {type: boolean}
|
loggedIn: {type: boolean}
|
||||||
required:
|
required:
|
||||||
- user
|
- user
|
||||||
@@ -1954,27 +1828,39 @@ paths:
|
|||||||
security: []
|
security: []
|
||||||
parameters: []
|
parameters: []
|
||||||
servers:
|
servers:
|
||||||
- url: /
|
-
|
||||||
|
url: /
|
||||||
tags:
|
tags:
|
||||||
- name: Auth
|
-
|
||||||
|
name: Auth
|
||||||
description: 'Operations about auth'
|
description: 'Operations about auth'
|
||||||
- name: Client
|
-
|
||||||
|
name: Client
|
||||||
description: 'Operations about clients'
|
description: 'Operations about clients'
|
||||||
- name: CODE
|
-
|
||||||
|
name: CODE
|
||||||
description: 'Execution of code (various runtimes are supported)'
|
description: 'Execution of code (various runtimes are supported)'
|
||||||
- name: Drive
|
-
|
||||||
|
name: Drive
|
||||||
description: 'Operations on SASjs Drive'
|
description: 'Operations on SASjs Drive'
|
||||||
- name: Group
|
-
|
||||||
|
name: Group
|
||||||
description: 'Operations on groups and group memberships'
|
description: 'Operations on groups and group memberships'
|
||||||
- name: Info
|
-
|
||||||
|
name: Info
|
||||||
description: 'Get Server Information'
|
description: 'Get Server Information'
|
||||||
- name: Permission
|
-
|
||||||
|
name: Permission
|
||||||
description: 'Operations about permissions'
|
description: 'Operations about permissions'
|
||||||
- name: Session
|
-
|
||||||
|
name: Session
|
||||||
description: 'Get Session information'
|
description: 'Get Session information'
|
||||||
- name: STP
|
-
|
||||||
|
name: STP
|
||||||
description: 'Execution of Stored Programs'
|
description: 'Execution of Stored Programs'
|
||||||
- name: User
|
-
|
||||||
|
name: User
|
||||||
description: 'Operations with users'
|
description: 'Operations with users'
|
||||||
- name: Web
|
-
|
||||||
|
name: Web
|
||||||
description: 'Operations on Web'
|
description: 'Operations on Web'
|
||||||
|
|||||||
57
api/src/routes/api/mock-sas9.ts
Normal file
57
api/src/routes/api/mock-sas9.ts
Normal 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
|
||||||
13
api/src/routes/api/mock-viya.ts
Normal file
13
api/src/routes/api/mock-viya.ts
Normal 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
|
||||||
@@ -2,10 +2,13 @@ import express from 'express'
|
|||||||
import { WebController } from '../../controllers/web'
|
import { WebController } from '../../controllers/web'
|
||||||
import { authenticateAccessToken, desktopRestrict } from '../../middlewares'
|
import { authenticateAccessToken, desktopRestrict } from '../../middlewares'
|
||||||
import { authorizeValidation, loginWebValidation } from '../../utils'
|
import { authorizeValidation, loginWebValidation } from '../../utils'
|
||||||
|
import mockSas9Router from '../api/mock-sas9'
|
||||||
|
|
||||||
const webRouter = express.Router()
|
const webRouter = express.Router()
|
||||||
const controller = new WebController()
|
const controller = new WebController()
|
||||||
|
|
||||||
|
const { MOCK_SERVERTYPE } = process.env
|
||||||
|
|
||||||
webRouter.get('/', async (req, res) => {
|
webRouter.get('/', async (req, res) => {
|
||||||
let response
|
let response
|
||||||
try {
|
try {
|
||||||
@@ -23,6 +26,7 @@ webRouter.get('/', async (req, res) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (MOCK_SERVERTYPE !== undefined) {
|
||||||
webRouter.post('/SASLogon/login', desktopRestrict, async (req, res) => {
|
webRouter.post('/SASLogon/login', desktopRestrict, async (req, res) => {
|
||||||
const { error, value: body } = loginWebValidation(req.body)
|
const { error, value: body } = loginWebValidation(req.body)
|
||||||
if (error) return res.status(400).send(error.details[0].message)
|
if (error) return res.status(400).send(error.details[0].message)
|
||||||
@@ -34,6 +38,7 @@ webRouter.post('/SASLogon/login', desktopRestrict, async (req, res) => {
|
|||||||
res.status(403).send(err.toString())
|
res.status(403).send(err.toString())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
webRouter.post(
|
webRouter.post(
|
||||||
'/SASLogon/authorize',
|
'/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
|
export default webRouter
|
||||||
|
|||||||
Reference in New Issue
Block a user