@getjones/test-infra 1.0.12 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getjones/test-infra",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "Providing internal and openapi interface",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -10,10 +10,11 @@
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
12
  "axios": "^0.21.1",
13
- "dotenv": "^8.2.0",
14
- "mocha": "^8.3.2",
15
13
  "chai": "^4.3.4",
16
- "http-status-code": "^2.1.0"
14
+ "dotenv": "^8.2.0",
15
+ "enum": "^3.0.4",
16
+ "http-status-code": "^2.1.0",
17
+ "mocha": "^8.3.2"
17
18
  },
18
19
  "devDependencies": {
19
20
  "eslint": "^7.22.0",
package/src/index.js CHANGED
@@ -11,6 +11,8 @@ const init = conf => {
11
11
 
12
12
  const projects = require('./internal-api/projects/projects.setup');
13
13
  const tabs = require('./internal-api/tabs/tabs.setup');
14
+ const requirements = require('./internal-api/requirements');
15
+ const contractors = require('./internal-api/contractors');
14
16
 
15
17
  const accounts = {
16
18
  core: accountsCore,
@@ -21,7 +23,14 @@ const init = conf => {
21
23
  accountsOpenAPI
22
24
  };
23
25
 
24
- const internalAPI = { auth, accounts, projects, tabs };
26
+ const internalAPI = {
27
+ auth,
28
+ accounts,
29
+ projects,
30
+ tabs,
31
+ requirements,
32
+ contractors
33
+ };
25
34
  return { internalAPI };
26
35
  };
27
36
 
@@ -12,10 +12,10 @@ const getRequestHandler = async (url, params = {}, context = null, headers = {})
12
12
 
13
13
  };
14
14
 
15
- const postRequestHandler = async (url, body, context = null, headers = {}) => {
15
+ const postRequestHandler = async (url, body, context = null, headers = {}, params = {}) => {
16
16
  enrichCookie(headers, context);
17
17
  try {
18
- const response = await axios.post(url, body, { headers });
18
+ const response = await axios.post(url, body, { headers, params });
19
19
  return response;
20
20
  } catch (error) {
21
21
  const message = error.response.data && JSON.stringify(error.response.data) || error.message;
@@ -0,0 +1,7 @@
1
+ const validateType = (input, expectedType) => {
2
+ if (!(input instanceof expectedType)) {
3
+ throw TypeError(`Type should be: ${expectedType}`);
4
+ }
5
+ };
6
+
7
+ module.exports = { validateType };
@@ -0,0 +1,22 @@
1
+ const requests = require('../../common/requests');
2
+ const { backendUrl } = require('../../../env').getEnv();
3
+
4
+ const Endpoints = {
5
+ create: `${backendUrl}/saas/contractors/invite`,
6
+ get: `${backendUrl}/saas/contractors`,
7
+ delete: contractorId => `${backendUrl}/saas/contractor/${contractorId}`,
8
+ };
9
+
10
+ const createContractors = async (createContractorModel, context) => {
11
+ return requests.postRequestHandler(Endpoints.create, createContractorModel, context).then(res => res.data);
12
+ };
13
+
14
+ const getContractorsByAccountId = async (params, context) => {
15
+ return requests.getRequestHandler(Endpoints.get, params, context).then(res => res.data);
16
+ };
17
+
18
+ const deleteByContractorId = async (contractorId, context) => {
19
+ return requests.deleteRequestHandler(Endpoints.delete(contractorId), context);
20
+ };
21
+
22
+ module.exports = { createContractors, getContractorsByAccountId, deleteByContractorId };
@@ -0,0 +1,18 @@
1
+ const contractorsAPI = require('./contractors.api');
2
+ const { CreateContractorModel } = require('../models/create.contractor.model');
3
+ const { validateType } = require('../../common/validations');
4
+
5
+ const createContractors = async (createContractorsModel, context) => {
6
+ validateType(createContractorsModel, CreateContractorModel);
7
+ return contractorsAPI.createContractors(createContractorsModel, context);
8
+ };
9
+
10
+ const getContractorsByAccountId = async (accountId, context) => {
11
+ return contractorsAPI.getContractorsByAccountId({ accountId }, context);
12
+ };
13
+
14
+ const deleteByContractorId = (contractorId, context) => {
15
+ return contractorsAPI.deleteByContractorId(contractorId, context);
16
+ };
17
+
18
+ module.exports = { createContractors, getContractorsByAccountId, deleteByContractorId };
@@ -0,0 +1,6 @@
1
+ const createModel = require('./models/create.contractor.model');
2
+ const api = require('./api/contractors.setup');
3
+
4
+ const models = { create: createModel };
5
+
6
+ module.exports = { api, models };
@@ -0,0 +1,20 @@
1
+ const { validateType } = require('../../common/validations');
2
+
3
+ function CreateContractorModel(requirementId, inviterEmail, vendorsInfo) {
4
+ this.reqId = requirementId;
5
+ this.inviterEmail = inviterEmail;
6
+ this.vendorInfo = vendorsInfo;
7
+ this.disableMail = true;
8
+ this.sendCovid19Form = false;
9
+
10
+ validateType(vendorsInfo, Array);
11
+ vendorsInfo && validateType(vendorsInfo[0], ContractorInfo);
12
+ }
13
+
14
+ function ContractorInfo(email, companyName) {
15
+ this.email = email;
16
+ this.companyName = companyName;
17
+ this.title = email;
18
+ }
19
+
20
+ module.exports = { CreateContractorModel, ContractorInfo };
@@ -0,0 +1,24 @@
1
+ const requests = require('../../common/requests');
2
+ const { backendUrl } = require('../../../env').getEnv();
3
+
4
+ const Endpoints = {
5
+ create: `${backendUrl}/saas/requirement`,
6
+ get: `${backendUrl}/saas/requirements`,
7
+ delete: requirementId => `${backendUrl}/saas/requirement/${requirementId}`,
8
+ };
9
+
10
+ const createRequirement = async (createRequirementModel, context, params) => {
11
+ return requests.postRequestHandler(Endpoints.create, createRequirementModel, context, {}, params).then(
12
+ res => res.data
13
+ );
14
+ };
15
+
16
+ const getRequirementsByTabId = async (tabId, context) => {
17
+ return requests.getRequestHandler(Endpoints.get, { tabId }, context).then(res => res.data);
18
+ };
19
+
20
+ const deleteByRequirementId = async (requirementId, context) => {
21
+ return requests.deleteRequestHandler(Endpoints.delete(requirementId), context);
22
+ };
23
+
24
+ module.exports = { createRequirement, getRequirementsByTabId, deleteByRequirementId };
@@ -0,0 +1,19 @@
1
+ const requirementsAPI = require('./requirements.api');
2
+ const { CreateRequirementModel } = require('../models/create.requirement.model');
3
+ const { validateType } = require('../../common/validations');
4
+
5
+ const createRequirement = async (createRequirementModel, context) => {
6
+ validateType(createRequirementModel, CreateRequirementModel);
7
+ const params = { 'leaseId': '' };
8
+ return requirementsAPI.createRequirement(createRequirementModel, context, params);
9
+ };
10
+
11
+ const getRequirementsByTabId = async (tabId, context) => {
12
+ return requirementsAPI.getRequirementsByTabId(tabId, context);
13
+ };
14
+
15
+ const deleteByRequirementId = (requirementId, context) => {
16
+ return requirementsAPI.deleteByRequirementId(requirementId, context);
17
+ };
18
+
19
+ module.exports = { createRequirement, getRequirementsByTabId, deleteByRequirementId };
@@ -0,0 +1,6 @@
1
+ const createModel = require('./models/create.requirement.model');
2
+ const api = require('./api/requirements.setup');
3
+
4
+ const models = { create: createModel };
5
+
6
+ module.exports = { api, models };
@@ -0,0 +1,46 @@
1
+ const Enum = require('enum');
2
+ const { validateType } = require('../../common/validations');
3
+
4
+ const DEFAULT_REQUIREMENT_TYPE = 'REQUIREMENT';
5
+
6
+ function CreateRequirementModel(accountId, projectId, tabId, name, policies) {
7
+ this.userId = accountId;
8
+ this.projectId = projectId;
9
+ this.tabId = tabId;
10
+ this.name = name;
11
+ this.policies = policies;
12
+ this.requirementType = DEFAULT_REQUIREMENT_TYPE;
13
+
14
+ validateType(policies, Array);
15
+ policies && validateType(policies[0], Policy);
16
+
17
+ }
18
+
19
+ function Policy(name, attributes) {
20
+ this.policyName = name;
21
+ this.attributes = attributes;
22
+
23
+ validateType(attributes, Array);
24
+ attributes && validateType(attributes[0], Attribute);
25
+ }
26
+
27
+ function Attribute(name, type, values) {
28
+ this.attributeName = name;
29
+ this.type = type.value;
30
+ this.values = values.map(function(value) {
31
+ return { value };
32
+ });
33
+
34
+ if (!AttributeTypes.get(type) || !AttributeTypes.get(type.key)) {
35
+ throw TypeError(`Expected type to be instance of: ${AttributeTypes.name}`);
36
+ }
37
+ }
38
+
39
+ const AttributeTypes = new Enum({
40
+ 'ENDORSMENT': 'endorsment',
41
+ 'LIMIT': 'limit',
42
+ 'BOOLEAN': 'boolean',
43
+ 'MULTIPLE': 'multiple'
44
+ }, { name: 'AttributeTypes' });
45
+
46
+ module.exports = { CreateRequirementModel, Policy, Attribute, AttributeTypes };