@getjones/test-infra 2.6.7 → 2.6.8

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": "2.6.7",
3
+ "version": "2.6.8",
4
4
  "description": "Providing internal and openapi interface",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -0,0 +1,40 @@
1
+ const { expect } = require('chai');
2
+
3
+ const env = require('../../../../../../src/env');
4
+
5
+ const { internalAPI } = require('../../../../src')(env);
6
+ const { dbEmails, auth } = internalAPI;
7
+
8
+ const httpResponseStatusCodes = require('../../../common/httpResponseStatusCodes.json');
9
+
10
+ const textInSubject = 'One-Time Security Code';
11
+ const textInBody = 'Please use the one-time code below to confirm your identity';
12
+ const codeLength = 6;
13
+
14
+ const getVendorHubAuthCookie = async email => {
15
+ const createOneTimeSessionResponse = await auth.services.createOneTimeSession(email);
16
+ expect(createOneTimeSessionResponse.status, `Create one-time session for email ${email} has failed`).to.equal(httpResponseStatusCodes.OK);
17
+
18
+ const recipients = {
19
+ from: env.credentials.superUser,
20
+ to: [email]
21
+ };
22
+
23
+ const userEmailBody = await dbEmails.services.getLastMessage({ recipients, textInSubject });
24
+ expect(userEmailBody, 'Fetching user one-time security code email has failed').to.be.a('string').that.includes(textInBody);
25
+
26
+ const oneTimeCode = await extractOneTimeCode(userEmailBody);
27
+ expect(oneTimeCode.length, 'One-time security code extraction from email body has failed').to.equal(codeLength);
28
+
29
+ return auth.services.getHubUserCookie(email, oneTimeCode);
30
+ };
31
+
32
+ async function extractOneTimeCode(inputString) {
33
+ const regex = '\s*(\\d{6})\n\s*';
34
+ const match = inputString.match(regex);
35
+
36
+ return match ? match[1] : null;
37
+ }
38
+ module.exports = {
39
+ getVendorHubAuthCookie
40
+ };
@@ -1,3 +1,4 @@
1
1
  const records = require('./records/records');
2
+ const auth = require('./auth/auth');
2
3
 
3
- module.exports = { records };
4
+ module.exports = { records, auth };
package/src/index.js CHANGED
@@ -32,6 +32,8 @@ const getInternalAPI = () => {
32
32
  const vendorProfile = require('./saas/internal-api/vendorProfile');
33
33
  const serviceArea = require('./saas/internal-api/serviceArea');
34
34
 
35
+ const requestsTable = require('./saas/internal-api/requestsTable');
36
+
35
37
  const threadScheduler = require('./saas/internal-api/thread-scheduler/runner');
36
38
  const dbEmails = require('./saas/internal-api/dbEmails/index');
37
39
 
@@ -53,6 +55,7 @@ const getInternalAPI = () => {
53
55
  globalRecord,
54
56
  vendorProfile,
55
57
  serviceArea,
58
+ requestsTable,
56
59
  threadScheduler,
57
60
  dbEmails,
58
61
  factory
@@ -8,7 +8,9 @@ class UpdateAccountSettingsModel {
8
8
  isExcludedFromNetwork = false,
9
9
  isOcrEnabled = false,
10
10
  isCoverageAudit = false,
11
- isAccountRequirementsEnabled = false
11
+ isAccountRequirementsEnabled = false,
12
+ isAccountRequirementsAutoRenewalsEnabled = false,
13
+ autoGaps = {}
12
14
  } = {}
13
15
  ) {
14
16
  this.accountId = accountId;
@@ -19,7 +21,14 @@ class UpdateAccountSettingsModel {
19
21
  this.isOcrEnabled = isOcrEnabled;
20
22
  this.isCoverageAudit = isCoverageAudit;
21
23
  this.isAccountRequirementsEnabled = isAccountRequirementsEnabled;
24
+ this.isAccountRequirementsAutoRenewalsEnabled = isAccountRequirementsAutoRenewalsEnabled;
25
+ this.autoGaps = { ... DEFAULT_AUTO_GAPS, ... autoGaps };
22
26
  }
23
27
  }
24
28
 
29
+ const DEFAULT_AUTO_GAPS = {
30
+ isAutoGapsEnabledForTenants: false,
31
+ isAutoGapsEnabledForVendors: false
32
+ };
33
+
25
34
  module.exports = UpdateAccountSettingsModel;
@@ -3,16 +3,25 @@ const { backendUrl } = require('../../../../env').getEnv();
3
3
 
4
4
  const Endpoints = {
5
5
  login: `${backendUrl}/logincontroller`,
6
- isHubUser: email => `${backendUrl}/vendor-app/is-hub-user?email=${email}`
7
-
6
+ verifyEmail: `${backendUrl}/verify/email`,
7
+ createOneTimeSession: `${backendUrl}/vendor-app/one-time-session/create`,
8
+ verifyRecord: `${backendUrl}/vendor-app/one-time-session/verify/record/undefined`// Due to unused variable "recordId"
8
9
  };
9
10
 
10
11
  const login = (email, password) => {
11
12
  return requests.postRequestHandler(Endpoints.login, { email, password });
12
13
  };
13
14
 
14
- const vendorHubLogin = email => {
15
- return requests.postRequestHandler(Endpoints.isHubUser(email), { email });
15
+ const verifyEmail = email => {
16
+ return requests.postRequestHandler(Endpoints.verifyEmail, { email });
17
+ };
18
+
19
+ const createOneTimeSession = email => {
20
+ return requests.postRequestHandler(Endpoints.createOneTimeSession, { email });
21
+ };
22
+
23
+ const verifyRecord = (email, oneTimeCode) => {
24
+ return requests.getRequestHandler(Endpoints.verifyRecord, { email, oneTimeCode });
16
25
  };
17
26
 
18
- module.exports = { login, vendorHubLogin };
27
+ module.exports = { login, verifyEmail, createOneTimeSession, verifyRecord };
@@ -1,7 +1,8 @@
1
1
  const { getEnv, requiredValidation, getSystemUserIdentity, addUserIdentity } = require('../../../../env');
2
+ const { credentials } = getEnv();
3
+
2
4
  const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
3
5
 
4
- const { credentials } = getEnv();
5
6
  const authApi = require('./auth.api');
6
7
 
7
8
  const getAuthCookie = async (email, password) => {
@@ -28,10 +29,23 @@ const getAuthCookie = async (email, password) => {
28
29
  }
29
30
  };
30
31
 
31
- const getVendorHubAuthCookie = async email => {
32
+ const verifyEmail = email => {
33
+ return authApi.verifyEmail(email);
34
+ };
35
+
36
+ const createOneTimeSession = email => {
37
+ return authApi.createOneTimeSession(email);
38
+ };
39
+
40
+ const getHubUserCookie = async (email, oneTimeCode) => {
32
41
  try {
33
- const response = await authApi.vendorHubLogin(email);
34
- const authCookie = response.headers['set-cookie'].find(item => item.startsWith('JonesToken2='));
42
+ const response = await authApi.verifyRecord(email, oneTimeCode);
43
+
44
+ if (response.status !== httpResponseStatusCodes.OK) {
45
+ throw Error(`Error: ${JSON.stringify(response.data)}`);
46
+ }
47
+
48
+ const authCookie = response.headers['set-cookie'].find(item => item.startsWith('JonesToken='));
35
49
 
36
50
  return authCookie;
37
51
  } catch (error) {
@@ -67,7 +81,9 @@ const getOperatorCookie = () => {
67
81
 
68
82
  module.exports = {
69
83
  getAuthCookie,
70
- getVendorHubAuthCookie,
84
+ verifyEmail,
85
+ createOneTimeSession,
86
+ getHubUserCookie,
71
87
  getIcsCookie,
72
88
  getAuditorCookie,
73
89
  getOperatorCookie
@@ -0,0 +1,6 @@
1
+ const RECORD_SHARING_LEVEL = {
2
+ account: 'Account',
3
+ tab: 'Tab'
4
+ };
5
+
6
+ module.exports = { RECORD_SHARING_LEVEL };
@@ -10,7 +10,8 @@ const Endpoints = {
10
10
  getAccountRequests: accountId => `${backendUrl}/saas/requests/${accountId}`,
11
11
  getByTabId: `${backendUrl}/saas/requests`,
12
12
  requestsGlobalSearch: (projectId, searchWord) =>
13
- `${backendUrl}/saas/requests/search?&projectId=${projectId}&searchWord=${searchWord}`
13
+ `${backendUrl}/saas/requests/search?&projectId=${projectId}&searchWord=${searchWord}`,
14
+ getAutocompleteAutoSelect: `${backendUrl}/saas/request/auto/selection`
14
15
  };
15
16
 
16
17
  const createRequest = (createRequestModel, context) => {
@@ -35,6 +36,10 @@ const getRequestById = (requestId, context) => {
35
36
  return requests.getRequestHandler(Endpoints.getById(requestId), {}, context);
36
37
  };
37
38
 
39
+ const getAutocompleteAutoSelect = (params, context) => {
40
+ return requests.getRequestHandler(Endpoints.getAutocompleteAutoSelect, params, context);
41
+ };
42
+
38
43
  const getRequestsByAccountId = (accountId, context, params) => {
39
44
  return requests.getRequestHandler(Endpoints.getAccountRequests(accountId), params, context);
40
45
  };
@@ -56,5 +61,6 @@ module.exports = {
56
61
  getRequestById,
57
62
  getRequestsByAccountId,
58
63
  getRequestsByTabId,
59
- requestsGlobalSearch
64
+ requestsGlobalSearch,
65
+ getAutocompleteAutoSelect
60
66
  };
@@ -2,6 +2,7 @@ const requestsAPI = require('./requests.api');
2
2
  const { CreateRequestModel, ContractorInfo } = require('../models/create.request.model');
3
3
  const { RequestModel } = require('../models/edit.request.model');
4
4
  const { validateType } = require('../../../../common/validations/typeValidations');
5
+ const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
5
6
 
6
7
  const createRequest = async (createRequestModel, context) => {
7
8
  validateType(createRequestModel, CreateRequestModel);
@@ -22,6 +23,17 @@ const editRequestAndRecordDetails = (editRequestModel, context) => {
22
23
  return requestsAPI.editRequestAndRecordDetails(editRequestModel, context);
23
24
  };
24
25
 
26
+ const getAutocompleteAutoSelect = async (params, context) => {
27
+ const { companyOrDba, tabId, requirementsId } = params;
28
+ const autoSelectedRequest = await requestsAPI.getAutocompleteAutoSelect({ companyOrDba, tabId, requirementsId }, context);
29
+
30
+ if (autoSelectedRequest.status != httpResponseStatusCodes.OK) {
31
+ throw Error('Failed to get the auto select request', autoSelectedRequest.data);
32
+ }
33
+
34
+ return autoSelectedRequest.data;
35
+ };
36
+
25
37
  const getRequestsByTabId = (tabId, context, activityStatus = 'Active') => {
26
38
  return requestsAPI.getRequestsByTabId(tabId, context, activityStatus);
27
39
  };
@@ -77,6 +89,7 @@ const requestsGlobalSearch = (projectId, searchWord, context) => {
77
89
 
78
90
  module.exports = {
79
91
  createRequest,
92
+ getAutocompleteAutoSelect,
80
93
  addRequestToRecord,
81
94
  inviteRequestViaPublicLink,
82
95
  editRequestAndRecordDetails,
@@ -0,0 +1,14 @@
1
+ const { backendUrl } = require('../../../../env').getEnv();
2
+ const requests = require('../../../../common/requests/cookieAuth/requests');
3
+
4
+ const Endpoints = {
5
+ getRequestsByEmail: email => `${backendUrl}/saas/records/email/${email}`
6
+ };
7
+
8
+ const getRequestsByEmail = (email, context) => {
9
+ return requests.getRequestHandler(Endpoints.getRequestsByEmail(email), {}, context);
10
+ };
11
+
12
+ module.exports = {
13
+ getRequestsByEmail
14
+ };
@@ -0,0 +1,9 @@
1
+ const requestsTableAPI = require('./requests.table.api');
2
+
3
+ const getRequestsByEmail = (email, context) => {
4
+ return requestsTableAPI.getRequestsByEmail(email, context);
5
+ };
6
+
7
+ module.exports = {
8
+ getRequestsByEmail
9
+ };
@@ -0,0 +1,3 @@
1
+ const services = require('./api/requests.table.service');
2
+
3
+ module.exports = { services };
@@ -1,14 +1,16 @@
1
+ const { VENDORS } = require('../../../../common/consts/recordTypes');
1
2
  const { validateType } = require('../../../../common/validations/typeValidations');
2
3
  const { REQUIREMENT_SHARING_LEVELS } = require('../consts/consts');
3
4
  const { PolicyModel } = require('./policy.model');
4
5
 
5
6
  class UpdateRequirementModel {
6
- constructor({ id, name, policies, dateModified, sharingLevel = REQUIREMENT_SHARING_LEVELS.TAB }) {
7
+ constructor({ id, name, policies, dateModified, sharingLevel = REQUIREMENT_SHARING_LEVELS.TAB, recordType = VENDORS }) {
7
8
  this.id = id;
8
9
  this.name = name;
9
10
  this.policies = policies;
10
11
  this.dateModified = dateModified;
11
12
  this.sharingLevel = sharingLevel;
13
+ this.recordType = recordType;
12
14
 
13
15
  validateType(policies, Array);
14
16
  policies && validateType(policies[0], PolicyModel);
@@ -88,12 +88,12 @@ const getCreateRequirementModel = function(requirement) {
88
88
  };
89
89
 
90
90
  const getUpdateRequirementModel = function(updatedRequirement) {
91
- const { id, policies, name, sharingLevel, dateModified } = updatedRequirement;
91
+ const { id, policies, name, recordType, sharingLevel, dateModified } = updatedRequirement;
92
92
 
93
93
  const parsedPolicies = parseRequirementConfig(policies);
94
94
  const policyModels = parsedPolicies.map(policy => getPolicyModel(policy));
95
95
 
96
- return new UpdateRequirementModel({ id, name, policies: policyModels, dateModified, sharingLevel });
96
+ return new UpdateRequirementModel({ id, name, policies: policyModels, dateModified, sharingLevel, recordType });
97
97
  };
98
98
 
99
99
  module.exports = {