@sprucelabs/mercury-client 42.0.556 → 42.0.558
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/build/esm/.spruce/errors/errors.types.d.ts +324 -0
- package/build/esm/.spruce/errors/errors.types.js +1 -0
- package/build/esm/.spruce/errors/mercuryClient/connectionFailed.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/connectionFailed.schema.js +25 -0
- package/build/esm/.spruce/errors/mercuryClient/invalidEventSignature.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/invalidEventSignature.schema.js +25 -0
- package/build/esm/.spruce/errors/mercuryClient/invalidPayload.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/invalidPayload.schema.js +19 -0
- package/build/esm/.spruce/errors/mercuryClient/invalidProtocol.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/invalidProtocol.schema.js +19 -0
- package/build/esm/.spruce/errors/mercuryClient/missingTestCacheDir.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/missingTestCacheDir.schema.js +12 -0
- package/build/esm/.spruce/errors/mercuryClient/mustCreateEvent.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/mustCreateEvent.schema.js +19 -0
- package/build/esm/.spruce/errors/mercuryClient/mustHandleLocally.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/mustHandleLocally.schema.js +19 -0
- package/build/esm/.spruce/errors/mercuryClient/notConnected.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/notConnected.schema.js +25 -0
- package/build/esm/.spruce/errors/mercuryClient/timeout.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/timeout.schema.js +35 -0
- package/build/esm/.spruce/errors/mercuryClient/unauthorizedAccess.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/unauthorizedAccess.schema.js +41 -0
- package/build/esm/.spruce/errors/mercuryClient/unauthorizedTarget.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/unauthorizedTarget.schema.js +38 -0
- package/build/esm/.spruce/errors/mercuryClient/unexpectedPayload.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/unexpectedPayload.schema.js +19 -0
- package/build/esm/.spruce/errors/mercuryClient/unknownError.schema.d.ts +3 -0
- package/build/esm/.spruce/errors/mercuryClient/unknownError.schema.js +12 -0
- package/build/esm/.spruce/errors/options.types.d.ts +40 -0
- package/build/esm/.spruce/errors/options.types.js +1 -0
- package/build/esm/.spruce/event-cache.json +1 -0
- package/build/esm/.spruce/schemas/fields/fieldClassMap.d.ts +2 -0
- package/build/esm/.spruce/schemas/fields/fieldClassMap.js +5 -0
- package/build/esm/.spruce/schemas/fields/fields.types.d.ts +1 -0
- package/build/esm/.spruce/schemas/fields/fields.types.js +3 -0
- package/build/esm/.spruce/schemas/schemas.types.d.ts +1 -0
- package/build/esm/.spruce/schemas/schemas.types.js +3 -0
- package/build/esm/.spruce/settings.json +26 -0
- package/build/esm/clients/MercuryClientFactory.d.ts +26 -0
- package/build/esm/clients/MercuryClientFactory.js +96 -0
- package/build/esm/clients/MercurySocketIoClient.d.ts +89 -0
- package/build/esm/clients/MercurySocketIoClient.js +605 -0
- package/build/esm/clients/MercuryTestClient.d.ts +57 -0
- package/build/esm/clients/MercuryTestClient.js +389 -0
- package/build/esm/clients/MutableContractClient.d.ts +10 -0
- package/build/esm/clients/MutableContractClient.js +43 -0
- package/build/esm/clients/statusChangePayloadSchema.d.ts +103 -0
- package/build/esm/clients/statusChangePayloadSchema.js +45 -0
- package/build/esm/constants.d.ts +1 -0
- package/build/esm/constants.js +1 -0
- package/build/esm/errors/SpruceError.d.ts +5 -0
- package/build/esm/errors/SpruceError.js +66 -0
- package/build/esm/errors/connectionFailed.builder.d.ts +16 -0
- package/build/esm/errors/connectionFailed.builder.js +16 -0
- package/build/esm/errors/invalidEventSignature.builder.d.ts +15 -0
- package/build/esm/errors/invalidEventSignature.builder.js +15 -0
- package/build/esm/errors/invalidPayload.builder.d.ts +12 -0
- package/build/esm/errors/invalidPayload.builder.js +12 -0
- package/build/esm/errors/invalidProtocol.builder.d.ts +12 -0
- package/build/esm/errors/invalidProtocol.builder.js +12 -0
- package/build/esm/errors/missingTestCacheDir.builder.d.ts +7 -0
- package/build/esm/errors/missingTestCacheDir.builder.js +7 -0
- package/build/esm/errors/mustCreateEvent.builder.d.ts +11 -0
- package/build/esm/errors/mustCreateEvent.builder.js +11 -0
- package/build/esm/errors/mustHandleLocally.builder.d.ts +11 -0
- package/build/esm/errors/mustHandleLocally.builder.js +11 -0
- package/build/esm/errors/notConnected.builder.d.ts +16 -0
- package/build/esm/errors/notConnected.builder.js +16 -0
- package/build/esm/errors/timeout.builder.d.ts +22 -0
- package/build/esm/errors/timeout.builder.js +22 -0
- package/build/esm/errors/unauthorizedAccess.builder.d.ts +57 -0
- package/build/esm/errors/unauthorizedAccess.builder.js +39 -0
- package/build/esm/errors/unexpectedPayload.builder.d.ts +12 -0
- package/build/esm/errors/unexpectedPayload.builder.js +12 -0
- package/build/esm/errors/unknownError.builder.d.ts +6 -0
- package/build/esm/errors/unknownError.builder.js +6 -0
- package/build/esm/index.d.ts +6 -0
- package/build/esm/index.js +6 -0
- package/build/esm/tests/AbstractClientTest.d.ts +31 -0
- package/build/esm/tests/AbstractClientTest.js +212 -0
- package/build/esm/tests/constants.d.ts +9 -0
- package/build/esm/tests/constants.js +11 -0
- package/build/esm/types/client.types.d.ts +30 -0
- package/build/esm/types/client.types.js +1 -0
- package/build/esm/utilities/socketIoEventUtil.utility.d.ts +5 -0
- package/build/esm/utilities/socketIoEventUtil.utility.js +9 -0
- package/package.json +12 -12
- package/build/__tests__/behavioral/AuthenticatingAndReauthenticating.test.d.ts +0 -21
- package/build/__tests__/behavioral/AuthenticatingAndReauthenticating.test.js +0 -287
- package/build/__tests__/behavioral/AuthenticatingAndReauthenticating.test.js.map +0 -1
- package/build/__tests__/behavioral/DisablingPermissionChecksWhenEmittingLocally.test.d.ts +0 -7
- package/build/__tests__/behavioral/DisablingPermissionChecksWhenEmittingLocally.test.js +0 -49
- package/build/__tests__/behavioral/DisablingPermissionChecksWhenEmittingLocally.test.js.map +0 -1
- package/build/__tests__/behavioral/EmittingAndFlatteningResponses.test.d.ts +0 -52
- package/build/__tests__/behavioral/EmittingAndFlatteningResponses.test.js +0 -123
- package/build/__tests__/behavioral/EmittingAndFlatteningResponses.test.js.map +0 -1
- package/build/__tests__/behavioral/EmittingConnectionChangeInTests.test.d.ts +0 -9
- package/build/__tests__/behavioral/EmittingConnectionChangeInTests.test.js +0 -103
- package/build/__tests__/behavioral/EmittingConnectionChangeInTests.test.js.map +0 -1
- package/build/__tests__/behavioral/LocallyHandlingAuthenticateDelaysConnect.test.d.ts +0 -7
- package/build/__tests__/behavioral/LocallyHandlingAuthenticateDelaysConnect.test.js +0 -91
- package/build/__tests__/behavioral/LocallyHandlingAuthenticateDelaysConnect.test.js.map +0 -1
- package/build/__tests__/behavioral/MercuryClientFactory.test.d.ts +0 -7
- package/build/__tests__/behavioral/MercuryClientFactory.test.js +0 -85
- package/build/__tests__/behavioral/MercuryClientFactory.test.js.map +0 -1
- package/build/__tests__/behavioral/ProxyingEvents.test.d.ts +0 -11
- package/build/__tests__/behavioral/ProxyingEvents.test.js +0 -99
- package/build/__tests__/behavioral/ProxyingEvents.test.js.map +0 -1
- package/build/__tests__/behavioral/ReconnectingAutomatically.test.d.ts +0 -33
- package/build/__tests__/behavioral/ReconnectingAutomatically.test.js +0 -390
- package/build/__tests__/behavioral/ReconnectingAutomatically.test.js.map +0 -1
- package/build/__tests__/behavioral/RequiringLocalListeners.test.d.ts +0 -7
- package/build/__tests__/behavioral/RequiringLocalListeners.test.js +0 -65
- package/build/__tests__/behavioral/RequiringLocalListeners.test.js.map +0 -1
- package/build/__tests__/behavioral/SettingNamespacesThatMustBeHandledLocally.test.d.ts +0 -9
- package/build/__tests__/behavioral/SettingNamespacesThatMustBeHandledLocally.test.js +0 -66
- package/build/__tests__/behavioral/SettingNamespacesThatMustBeHandledLocally.test.js.map +0 -1
- package/build/__tests__/behavioral/SimulatingEventsForTesting.test.d.ts +0 -51
- package/build/__tests__/behavioral/SimulatingEventsForTesting.test.js +0 -821
- package/build/__tests__/behavioral/SimulatingEventsForTesting.test.js.map +0 -1
- package/build/__tests__/behavioral/TestClientSpeedTests.test.d.ts +0 -7
- package/build/__tests__/behavioral/TestClientSpeedTests.test.js +0 -44
- package/build/__tests__/behavioral/TestClientSpeedTests.test.js.map +0 -1
- package/build/__tests__/behavioral/TestingWithDefaultContracts.test.d.ts +0 -7
- package/build/__tests__/behavioral/TestingWithDefaultContracts.test.js +0 -56
- package/build/__tests__/behavioral/TestingWithDefaultContracts.test.js.map +0 -1
- package/build/__tests__/behavioral/TurningOffAListener.test.d.ts +0 -16
- package/build/__tests__/behavioral/TurningOffAListener.test.js +0 -126
- package/build/__tests__/behavioral/TurningOffAListener.test.js.map +0 -1
- package/build/__tests__/behavioral/UsingMercuryClient.test.d.ts +0 -45
- package/build/__tests__/behavioral/UsingMercuryClient.test.js +0 -662
- package/build/__tests__/behavioral/UsingMercuryClient.test.js.map +0 -1
- /package/build/{.spruce → esm/.spruce}/errors/errors.types.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/connectionFailed.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/invalidEventSignature.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/invalidPayload.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/invalidProtocol.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/missingTestCacheDir.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/mustCreateEvent.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/mustHandleLocally.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/notConnected.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/timeout.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/unauthorizedAccess.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/unauthorizedTarget.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/unexpectedPayload.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/mercuryClient/unknownError.schema.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/errors/options.types.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/schemas/fields/fieldClassMap.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/schemas/fields/fields.types.js.map +0 -0
- /package/build/{.spruce → esm/.spruce}/schemas/schemas.types.js.map +0 -0
- /package/build/{clients → esm/clients}/MercuryClientFactory.js.map +0 -0
- /package/build/{clients → esm/clients}/MercurySocketIoClient.js.map +0 -0
- /package/build/{clients → esm/clients}/MercuryTestClient.js.map +0 -0
- /package/build/{clients → esm/clients}/MutableContractClient.js.map +0 -0
- /package/build/{clients → esm/clients}/statusChangePayloadSchema.js.map +0 -0
- /package/build/{constants.js.map → esm/constants.js.map} +0 -0
- /package/build/{errors → esm/errors}/SpruceError.js.map +0 -0
- /package/build/{errors → esm/errors}/connectionFailed.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/invalidEventSignature.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/invalidPayload.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/invalidProtocol.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/missingTestCacheDir.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/mustCreateEvent.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/mustHandleLocally.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/notConnected.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/timeout.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/unauthorizedAccess.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/unexpectedPayload.builder.js.map +0 -0
- /package/build/{errors → esm/errors}/unknownError.builder.js.map +0 -0
- /package/build/{index.js.map → esm/index.js.map} +0 -0
- /package/build/{tests → esm/tests}/AbstractClientTest.js.map +0 -0
- /package/build/{tests → esm/tests}/constants.js.map +0 -0
- /package/build/{types → esm/types}/client.types.js.map +0 -0
- /package/build/{utilities → esm/utilities}/socketIoEventUtil.utility.js.map +0 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
+
var t = {};
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
+
t[p[i]] = s[p[i]];
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
import { coreEventContracts } from '@sprucelabs/mercury-core-events';
|
|
22
|
+
import { SchemaError } from '@sprucelabs/schema';
|
|
23
|
+
import { eventResponseUtil } from '@sprucelabs/spruce-event-utils';
|
|
24
|
+
import AbstractSpruceTest, { assert } from '@sprucelabs/test';
|
|
25
|
+
import MercuryClientFactory from '../clients/MercuryClientFactory.js';
|
|
26
|
+
import MutableContractClient from '../clients/MutableContractClient.js';
|
|
27
|
+
import { TEST_HOST } from './constants.js';
|
|
28
|
+
class AbstractClientTest extends AbstractSpruceTest {
|
|
29
|
+
static afterEach() {
|
|
30
|
+
const _super = Object.create(null, {
|
|
31
|
+
afterEach: { get: () => super.afterEach }
|
|
32
|
+
});
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
yield _super.afterEach.call(this);
|
|
35
|
+
for (const client of this.clients) {
|
|
36
|
+
yield client.disconnect();
|
|
37
|
+
}
|
|
38
|
+
this.clients = [];
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
static beforeEach() {
|
|
42
|
+
const _super = Object.create(null, {
|
|
43
|
+
beforeEach: { get: () => super.beforeEach }
|
|
44
|
+
});
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
yield _super.beforeEach.call(this);
|
|
47
|
+
MercuryClientFactory.reset();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
static beforeAll() {
|
|
51
|
+
const _super = Object.create(null, {
|
|
52
|
+
beforeAll: { get: () => super.beforeAll }
|
|
53
|
+
});
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
yield _super.beforeAll.call(this);
|
|
56
|
+
MercuryClientFactory.setDefaultTimeoutMs(2 * 60 * 1000);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
static afterAll() {
|
|
60
|
+
const _super = Object.create(null, {
|
|
61
|
+
afterAll: { get: () => super.afterAll }
|
|
62
|
+
});
|
|
63
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
yield _super.afterAll.call(this);
|
|
65
|
+
for (const client of this.clients) {
|
|
66
|
+
yield client.disconnect();
|
|
67
|
+
}
|
|
68
|
+
this.clients = [];
|
|
69
|
+
MercuryClientFactory.reset();
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
static connectToApi(options) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
const _a = options || {}, { host = TEST_HOST } = _a, rest = __rest(_a, ["host"]);
|
|
75
|
+
const client = yield MercuryClientFactory.Client(Object.assign({ host, contracts: coreEventContracts, reconnectDelayMs: 10, emitTimeoutMs: 10000 }, rest));
|
|
76
|
+
this.clients.push(client);
|
|
77
|
+
return client;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
static loginAsDemoPerson() {
|
|
81
|
+
return __awaiter(this, arguments, void 0, function* (phone = process.env.DEMO_PHONE) {
|
|
82
|
+
const client = yield this.connectToApi();
|
|
83
|
+
if (!phone) {
|
|
84
|
+
throw new SchemaError({
|
|
85
|
+
code: 'MISSING_PARAMETERS',
|
|
86
|
+
parameters: ['env.DEMO_PHONE'],
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
const requestPinResults = yield client.emit('request-pin::v2020_12_25', {
|
|
90
|
+
payload: {
|
|
91
|
+
phone,
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
const { challenge } = eventResponseUtil.getFirstResponseOrThrow(requestPinResults);
|
|
95
|
+
assert.isTruthy(challenge);
|
|
96
|
+
const confirmPinResults = yield client.emit('confirm-pin::v2020_12_25', {
|
|
97
|
+
payload: {
|
|
98
|
+
challenge,
|
|
99
|
+
pin: phone.substr(-4),
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
const { person, token } = eventResponseUtil.getFirstResponseOrThrow(confirmPinResults);
|
|
103
|
+
assert.isTruthy(person, 'Failed to login!');
|
|
104
|
+
return { person, client, token };
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
static seedDummyOrg(client) {
|
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
const orgName = `Dummy org ${new Date().getTime()}`;
|
|
110
|
+
const orgResults = yield client.emit('create-organization::v2020_12_25', {
|
|
111
|
+
payload: {
|
|
112
|
+
name: orgName,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
const { organization } = eventResponseUtil.getFirstResponseOrThrow(orgResults);
|
|
116
|
+
assert.isTruthy(organization);
|
|
117
|
+
return organization;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
static seedInstallAndLoginAsSkill(client, orgId) {
|
|
121
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
const skill = yield this.seedAndInstallDummySkill(client, orgId);
|
|
123
|
+
const skillClient = yield this.connectToApi();
|
|
124
|
+
yield skillClient.authenticate({
|
|
125
|
+
skillId: skill.id,
|
|
126
|
+
apiKey: skill.apiKey,
|
|
127
|
+
});
|
|
128
|
+
return { skill, client: skillClient };
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
static seedAndInstallDummySkill(client, orgId) {
|
|
132
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
const skill = yield this.seedDemoSkill(client);
|
|
134
|
+
const installResults = yield client.emit('install-skill::v2020_12_25', {
|
|
135
|
+
target: {
|
|
136
|
+
organizationId: orgId,
|
|
137
|
+
},
|
|
138
|
+
payload: { skillId: skill.id },
|
|
139
|
+
});
|
|
140
|
+
assert.isEqual(installResults.totalErrors, 0);
|
|
141
|
+
return skill;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
static seedDemoSkill(client) {
|
|
145
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
146
|
+
var _a;
|
|
147
|
+
const skill1Results = yield client.emit('register-skill::v2020_12_25', {
|
|
148
|
+
payload: {
|
|
149
|
+
name: `${this.skillName} ${++this.dummySkillCount} ${new Date().getTime() * Math.random()}`,
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
const skill = (_a = skill1Results.responses[0].payload) === null || _a === void 0 ? void 0 : _a.skill;
|
|
153
|
+
assert.isTruthy(skill);
|
|
154
|
+
return skill;
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
static registerEvent(namespace, client) {
|
|
158
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
159
|
+
const sig = this.generateWillSendVipEventSignature(namespace);
|
|
160
|
+
MutableContractClient.mixinContract(sig);
|
|
161
|
+
const registerResults = yield client.emit('register-events::v2020_12_25', {
|
|
162
|
+
payload: {
|
|
163
|
+
contract: this.generateWillSendVipEventSignature(),
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
eventResponseUtil.getFirstResponseOrThrow(registerResults);
|
|
167
|
+
return sig;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
static generateWillSendVipEventSignature(slug) {
|
|
171
|
+
const contract = {
|
|
172
|
+
eventSignatures: {
|
|
173
|
+
[`${slug ? `${slug}.` : ''}will-send-vip::v1`]: {
|
|
174
|
+
emitPayloadSchema: {
|
|
175
|
+
id: 'willSendVipTargetAndPayload',
|
|
176
|
+
fields: {
|
|
177
|
+
target: {
|
|
178
|
+
type: 'schema',
|
|
179
|
+
isRequired: true,
|
|
180
|
+
options: {
|
|
181
|
+
schema: {
|
|
182
|
+
id: 'willSendVipTarget',
|
|
183
|
+
fields: {
|
|
184
|
+
organizationId: {
|
|
185
|
+
type: 'text',
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
responsePayloadSchema: {
|
|
194
|
+
id: 'testEventResponsePayload',
|
|
195
|
+
fields: {
|
|
196
|
+
messages: {
|
|
197
|
+
type: 'text',
|
|
198
|
+
isArray: true,
|
|
199
|
+
isRequired: true,
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
return contract;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
AbstractClientTest.dummySkillCount = 0;
|
|
210
|
+
AbstractClientTest.clients = [];
|
|
211
|
+
AbstractClientTest.skillName = 'Dummy skill';
|
|
212
|
+
export default AbstractClientTest;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const TEST_HOST: string;
|
|
2
|
+
export declare const DEMO_PHONE: string;
|
|
3
|
+
export declare const DEMO_PHONE_REAUTH: string;
|
|
4
|
+
export declare const DEMO_PHONE_GUEST: string;
|
|
5
|
+
export declare const DEMO_PHONE_TEAMMATE: string;
|
|
6
|
+
export declare const DEMO_PHONE_PROXY: string;
|
|
7
|
+
export declare const DEMO_PHONE_FLATTEN_1: string;
|
|
8
|
+
export declare const DEMO_PHONE_FLATTEN_2: string;
|
|
9
|
+
export declare const DEMO_PHONE_RECONNECT: string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
2
|
+
require('dotenv').config();
|
|
3
|
+
export const TEST_HOST = (_a = process.env.TEST_HOST) !== null && _a !== void 0 ? _a : 'https://localhost:8081';
|
|
4
|
+
export const DEMO_PHONE = (_b = process.env.DEMO_PHONE) !== null && _b !== void 0 ? _b : '';
|
|
5
|
+
export const DEMO_PHONE_REAUTH = (_c = process.env.DEMO_PHONE_REAUTH) !== null && _c !== void 0 ? _c : '**MISSING**';
|
|
6
|
+
export const DEMO_PHONE_GUEST = (_d = process.env.DEMO_PHONE_GUEST) !== null && _d !== void 0 ? _d : '**MISSING**';
|
|
7
|
+
export const DEMO_PHONE_TEAMMATE = (_e = process.env.DEMO_PHONE_TEAMMATE) !== null && _e !== void 0 ? _e : '**MISSING**';
|
|
8
|
+
export const DEMO_PHONE_PROXY = (_f = process.env.DEMO_PHONE_PROXY) !== null && _f !== void 0 ? _f : '**MISSING**';
|
|
9
|
+
export const DEMO_PHONE_FLATTEN_1 = (_g = process.env.DEMO_PHONE_FLATTEN_1) !== null && _g !== void 0 ? _g : '**MISSING**';
|
|
10
|
+
export const DEMO_PHONE_FLATTEN_2 = (_h = process.env.DEMO_PHONE_FLATTEN_2) !== null && _h !== void 0 ? _h : '**MISSING**';
|
|
11
|
+
export const DEMO_PHONE_RECONNECT = (_j = process.env.DEMO_PHONE_RECONNECT) !== null && _j !== void 0 ? _j : '**MISSING**';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EventContract, MercuryEventEmitter, SkillEventContract, SpruceSchemas } from '@sprucelabs/mercury-types';
|
|
2
|
+
export interface ConnectionOptions {
|
|
3
|
+
host?: string;
|
|
4
|
+
allowSelfSignedCrt?: boolean;
|
|
5
|
+
contracts?: EventContract[];
|
|
6
|
+
emitTimeoutMs?: number;
|
|
7
|
+
reconnectDelayMs?: number;
|
|
8
|
+
shouldReconnect?: boolean;
|
|
9
|
+
maxEmitRetries?: number;
|
|
10
|
+
connectionRetries?: number;
|
|
11
|
+
}
|
|
12
|
+
export type MercuryConnectFactory = (options?: ConnectionOptions) => Promise<MercuryClient>;
|
|
13
|
+
export type MercuryClient<Contract extends EventContract = SkillEventContract> = MercuryEventEmitter<Contract> & {
|
|
14
|
+
disconnect: () => Promise<void>;
|
|
15
|
+
isConnected: () => boolean;
|
|
16
|
+
getProxyToken: () => string | null;
|
|
17
|
+
setProxyToken: (token: string) => void;
|
|
18
|
+
registerProxyToken: () => Promise<string>;
|
|
19
|
+
setShouldAutoRegisterListeners: (should: boolean) => void;
|
|
20
|
+
isAuthenticated(): boolean;
|
|
21
|
+
getIsTestClient(): boolean;
|
|
22
|
+
authenticate(options: {
|
|
23
|
+
skillId?: string;
|
|
24
|
+
apiKey?: string;
|
|
25
|
+
token?: string;
|
|
26
|
+
}): Promise<{
|
|
27
|
+
skill?: SpruceSchemas.Spruce.v2020_07_22.Skill;
|
|
28
|
+
person?: SpruceSchemas.Spruce.v2020_07_22.Person;
|
|
29
|
+
}>;
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "42.0.
|
|
6
|
+
"version": "42.0.558",
|
|
7
7
|
"files": [
|
|
8
8
|
"build"
|
|
9
9
|
],
|
|
@@ -59,25 +59,25 @@
|
|
|
59
59
|
"watch.tsc": "tsc -w"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@sprucelabs/error": "^6.0.
|
|
63
|
-
"@sprucelabs/schema": "^30.0.
|
|
64
|
-
"@sprucelabs/spruce-core-schemas": "^40.1.
|
|
65
|
-
"@sprucelabs/spruce-event-utils": "^40.1.
|
|
66
|
-
"@sprucelabs/spruce-skill-utils": "^31.0.
|
|
62
|
+
"@sprucelabs/error": "^6.0.511",
|
|
63
|
+
"@sprucelabs/schema": "^30.0.522",
|
|
64
|
+
"@sprucelabs/spruce-core-schemas": "^40.1.507",
|
|
65
|
+
"@sprucelabs/spruce-event-utils": "^40.1.283",
|
|
66
|
+
"@sprucelabs/spruce-skill-utils": "^31.0.581",
|
|
67
67
|
"dotenv": "^16.4.5",
|
|
68
68
|
"just-clone": "^6.2.0",
|
|
69
69
|
"socket.io-client": "^4.8.0"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
|
-
"@sprucelabs/esm-postbuild": "^6.0.
|
|
73
|
-
"@sprucelabs/jest-json-reporter": "^8.0.
|
|
74
|
-
"@sprucelabs/mercury-core-events": "^25.0.
|
|
72
|
+
"@sprucelabs/esm-postbuild": "^6.0.494",
|
|
73
|
+
"@sprucelabs/jest-json-reporter": "^8.0.512",
|
|
74
|
+
"@sprucelabs/mercury-core-events": "^25.0.3",
|
|
75
75
|
"@sprucelabs/mercury-event-emitter": "^42.0.555",
|
|
76
|
-
"@sprucelabs/mercury-types": "^47.0.
|
|
77
|
-
"@sprucelabs/resolve-path-aliases": "^2.0.
|
|
76
|
+
"@sprucelabs/mercury-types": "^47.0.563",
|
|
77
|
+
"@sprucelabs/resolve-path-aliases": "^2.0.490",
|
|
78
78
|
"@sprucelabs/semantic-release": "^5.0.2",
|
|
79
79
|
"@sprucelabs/test": "^9.0.55",
|
|
80
|
-
"@sprucelabs/test-utils": "^5.1.
|
|
80
|
+
"@sprucelabs/test-utils": "^5.1.466",
|
|
81
81
|
"@types/node": "^22.7.9",
|
|
82
82
|
"chokidar-cli": "^3.0.0",
|
|
83
83
|
"eslint": "^9.13.0",
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import AbstractClientTest from '../../tests/AbstractClientTest';
|
|
2
|
-
export default class ReauthenticatingAfterReconnectTest extends AbstractClientTest {
|
|
3
|
-
protected static authThrowsIfFails(): Promise<void>;
|
|
4
|
-
protected static canAuthAsSkill(): Promise<void>;
|
|
5
|
-
protected static canAuthAsPerson(): Promise<void>;
|
|
6
|
-
protected static manuallyDisconnectingDoesNotReconnectSkill(): Promise<void>;
|
|
7
|
-
protected static confirmPinFailsValidationClientSideDespiteOneOffLogicForRetainingAuth(): Promise<void>;
|
|
8
|
-
protected static manuallyDisconnectingDoesNotReconnectPerson(): Promise<void>;
|
|
9
|
-
protected static losingConnectionAsSkillFromApiTriesReconnect(): Promise<void>;
|
|
10
|
-
protected static losingConnectionAsPersonFromApiTriesReconnect(): Promise<void>;
|
|
11
|
-
protected static losingConnectionBecauseMercuryIsDownDoesNotThrowUnhandledException(): Promise<void>;
|
|
12
|
-
protected static personAuthIsRetainedAfterConfirmingPin(): Promise<void>;
|
|
13
|
-
protected static authAsPersonStoresOnClient(): Promise<void>;
|
|
14
|
-
protected static authAsSkillStoresOnClient(): Promise<void>;
|
|
15
|
-
protected static canReAuthIfTimesOutDuringAuth(): Promise<void>;
|
|
16
|
-
protected static canAuthenticateAsTheSameSkillRepeatedly(): Promise<void>;
|
|
17
|
-
protected static canAuthenticateAsTheSamePersonRepeatedly(): Promise<void>;
|
|
18
|
-
protected static canAuthenticateAsDifferentSkillAfterAuthenticatingAsFirst(): Promise<void>;
|
|
19
|
-
private static Skill;
|
|
20
|
-
private static loginAsDemoSkillAtOrg;
|
|
21
|
-
}
|
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const schema_1 = require("@sprucelabs/schema");
|
|
13
|
-
const spruce_event_utils_1 = require("@sprucelabs/spruce-event-utils");
|
|
14
|
-
const test_utils_1 = require("@sprucelabs/test-utils");
|
|
15
|
-
const test_utils_2 = require("@sprucelabs/test-utils");
|
|
16
|
-
const AbstractClientTest_1 = __importDefault(require("../../tests/AbstractClientTest"));
|
|
17
|
-
const constants_1 = require("../../tests/constants");
|
|
18
|
-
require('dotenv').config();
|
|
19
|
-
class ReauthenticatingAfterReconnectTest extends AbstractClientTest_1.default {
|
|
20
|
-
static async authThrowsIfFails() {
|
|
21
|
-
const client = await this.connectToApi();
|
|
22
|
-
await test_utils_1.assert.doesThrowAsync(() => client.authenticate({}));
|
|
23
|
-
}
|
|
24
|
-
static async canAuthAsSkill() {
|
|
25
|
-
const skill = await this.Skill();
|
|
26
|
-
const client = await this.connectToApi();
|
|
27
|
-
const { skill: authSkill } = await client.authenticate({
|
|
28
|
-
skillId: skill.id,
|
|
29
|
-
apiKey: skill.apiKey,
|
|
30
|
-
});
|
|
31
|
-
test_utils_1.assert.isTruthy(authSkill);
|
|
32
|
-
test_utils_1.assert.isEqual(authSkill.id, skill.id);
|
|
33
|
-
const results = await client.emit('whoami::v2020_12_25');
|
|
34
|
-
const { auth } = spruce_event_utils_1.eventResponseUtil.getFirstResponseOrThrow(results);
|
|
35
|
-
test_utils_1.assert.isTruthy(auth.skill);
|
|
36
|
-
test_utils_1.assert.isEqual(auth.skill.id, skill.id);
|
|
37
|
-
}
|
|
38
|
-
static async canAuthAsPerson() {
|
|
39
|
-
const { client, token, person } = await this.loginAsDemoPerson(constants_1.DEMO_PHONE_REAUTH);
|
|
40
|
-
const { person: authPerson } = await client.authenticate({
|
|
41
|
-
token,
|
|
42
|
-
});
|
|
43
|
-
test_utils_1.assert.isTruthy(authPerson);
|
|
44
|
-
test_utils_1.assert.isEqual(authPerson.id, person.id);
|
|
45
|
-
const results = await client.emit('whoami::v2020_12_25');
|
|
46
|
-
const { auth } = spruce_event_utils_1.eventResponseUtil.getFirstResponseOrThrow(results);
|
|
47
|
-
test_utils_1.assert.isTruthy(auth.person);
|
|
48
|
-
test_utils_1.assert.isEqual(auth.person.id, person.id);
|
|
49
|
-
}
|
|
50
|
-
static async manuallyDisconnectingDoesNotReconnectSkill() {
|
|
51
|
-
const skill = await this.Skill();
|
|
52
|
-
const client = await this.connectToApi();
|
|
53
|
-
await client.authenticate({
|
|
54
|
-
skillId: skill.id,
|
|
55
|
-
apiKey: skill.apiKey,
|
|
56
|
-
});
|
|
57
|
-
await client.disconnect();
|
|
58
|
-
test_utils_1.assert.isFalse(client.isConnected());
|
|
59
|
-
}
|
|
60
|
-
static async confirmPinFailsValidationClientSideDespiteOneOffLogicForRetainingAuth() {
|
|
61
|
-
const client = await this.connectToApi();
|
|
62
|
-
const err = await test_utils_1.assert.doesThrowAsync(() => client.emit('confirm-pin::v2020_12_25', {
|
|
63
|
-
//@ts-ignore
|
|
64
|
-
fails: true,
|
|
65
|
-
}));
|
|
66
|
-
test_utils_2.errorAssert.assertError(err, 'INVALID_PAYLOAD');
|
|
67
|
-
}
|
|
68
|
-
static async manuallyDisconnectingDoesNotReconnectPerson() {
|
|
69
|
-
const { token } = await this.loginAsDemoPerson(constants_1.DEMO_PHONE_REAUTH);
|
|
70
|
-
const client = await this.connectToApi();
|
|
71
|
-
await client.authenticate({
|
|
72
|
-
token,
|
|
73
|
-
});
|
|
74
|
-
await client.disconnect();
|
|
75
|
-
test_utils_1.assert.isFalse(client.isConnected());
|
|
76
|
-
}
|
|
77
|
-
static async losingConnectionAsSkillFromApiTriesReconnect() {
|
|
78
|
-
const skill = await this.Skill();
|
|
79
|
-
const client = await this.connectToApi();
|
|
80
|
-
await client.authenticate({
|
|
81
|
-
skillId: skill.id,
|
|
82
|
-
apiKey: skill.apiKey,
|
|
83
|
-
});
|
|
84
|
-
//@ts-ignore
|
|
85
|
-
client.socket?.disconnect();
|
|
86
|
-
do {
|
|
87
|
-
await this.wait(1000);
|
|
88
|
-
} while (!client.isConnected());
|
|
89
|
-
const results = await client.emit('whoami::v2020_12_25');
|
|
90
|
-
const { auth: { skill: whoAmIsSkill }, } = spruce_event_utils_1.eventResponseUtil.getFirstResponseOrThrow(results);
|
|
91
|
-
test_utils_1.assert.isEqual(whoAmIsSkill?.id, skill.id);
|
|
92
|
-
}
|
|
93
|
-
static async losingConnectionAsPersonFromApiTriesReconnect() {
|
|
94
|
-
const { token, person } = await this.loginAsDemoPerson(constants_1.DEMO_PHONE_REAUTH);
|
|
95
|
-
const client = await this.connectToApi();
|
|
96
|
-
await client.authenticate({
|
|
97
|
-
token,
|
|
98
|
-
});
|
|
99
|
-
//@ts-ignore
|
|
100
|
-
client.socket?.disconnect();
|
|
101
|
-
do {
|
|
102
|
-
await this.wait(1000);
|
|
103
|
-
} while (!client.isConnected());
|
|
104
|
-
const results = await client.emit('whoami::v2020_12_25');
|
|
105
|
-
const { auth: { person: whoami }, } = spruce_event_utils_1.eventResponseUtil.getFirstResponseOrThrow(results);
|
|
106
|
-
test_utils_1.assert.isEqual(whoami?.id, person.id);
|
|
107
|
-
}
|
|
108
|
-
static async losingConnectionBecauseMercuryIsDownDoesNotThrowUnhandledException() {
|
|
109
|
-
const { token, person } = await this.loginAsDemoPerson(constants_1.DEMO_PHONE_REAUTH);
|
|
110
|
-
const client = await this.connectToApi();
|
|
111
|
-
await client.authenticate({
|
|
112
|
-
token,
|
|
113
|
-
});
|
|
114
|
-
//@ts-ignore
|
|
115
|
-
client.host = 'https://wontwork.workwont';
|
|
116
|
-
//@ts-ignore
|
|
117
|
-
client.socket?.disconnect();
|
|
118
|
-
await this.wait(10);
|
|
119
|
-
test_utils_1.assert.isFalse(client.isConnected());
|
|
120
|
-
//@ts-ignore
|
|
121
|
-
client.host = constants_1.TEST_HOST;
|
|
122
|
-
do {
|
|
123
|
-
await this.wait(1000);
|
|
124
|
-
} while (!client.isConnected());
|
|
125
|
-
const results = await client.emit('whoami::v2020_12_25');
|
|
126
|
-
const { auth: { person: whoAmI }, } = spruce_event_utils_1.eventResponseUtil.getFirstResponseOrThrow(results);
|
|
127
|
-
test_utils_1.assert.isEqual(whoAmI?.id, person.id);
|
|
128
|
-
}
|
|
129
|
-
static async personAuthIsRetainedAfterConfirmingPin() {
|
|
130
|
-
const { client, person } = await this.loginAsDemoPerson(constants_1.DEMO_PHONE_REAUTH);
|
|
131
|
-
//@ts-ignore
|
|
132
|
-
client.host = 'https://wontwork.workwont';
|
|
133
|
-
//@ts-ignore
|
|
134
|
-
client.socket?.disconnect();
|
|
135
|
-
await this.wait(10);
|
|
136
|
-
test_utils_1.assert.isFalse(client.isConnected());
|
|
137
|
-
//@ts-ignore
|
|
138
|
-
client.host = constants_1.TEST_HOST;
|
|
139
|
-
do {
|
|
140
|
-
await this.wait(1000);
|
|
141
|
-
} while (!client.isConnected());
|
|
142
|
-
const results = await client.emit('whoami::v2020_12_25');
|
|
143
|
-
const { auth: { person: whoAmI }, } = spruce_event_utils_1.eventResponseUtil.getFirstResponseOrThrow(results);
|
|
144
|
-
test_utils_1.assert.isEqual(whoAmI?.id, person.id);
|
|
145
|
-
}
|
|
146
|
-
static async authAsPersonStoresOnClient() {
|
|
147
|
-
const { token } = await this.loginAsDemoPerson(constants_1.DEMO_PHONE_REAUTH);
|
|
148
|
-
const client = await this.connectToApi();
|
|
149
|
-
await client.authenticate({
|
|
150
|
-
token,
|
|
151
|
-
});
|
|
152
|
-
//@ts-ignore
|
|
153
|
-
test_utils_1.assert.isTruthy(client.auth);
|
|
154
|
-
//@ts-ignore
|
|
155
|
-
test_utils_1.assert.isTruthy(client.auth.person);
|
|
156
|
-
test_utils_1.assert.isEqual(
|
|
157
|
-
//@ts-ignore
|
|
158
|
-
client.auth.person.phone, (0, schema_1.formatPhoneNumber)(constants_1.DEMO_PHONE_REAUTH));
|
|
159
|
-
}
|
|
160
|
-
static async authAsSkillStoresOnClient() {
|
|
161
|
-
const skill = await this.Skill();
|
|
162
|
-
const client = await this.connectToApi();
|
|
163
|
-
await client.authenticate({
|
|
164
|
-
skillId: skill.id,
|
|
165
|
-
apiKey: skill.apiKey,
|
|
166
|
-
});
|
|
167
|
-
//@ts-ignore
|
|
168
|
-
test_utils_1.assert.isTruthy(client.auth);
|
|
169
|
-
//@ts-ignore
|
|
170
|
-
test_utils_1.assert.isTruthy(client.auth.skill);
|
|
171
|
-
//@ts-ignore
|
|
172
|
-
test_utils_1.assert.isEqual(client.auth.skill.id, skill.id);
|
|
173
|
-
}
|
|
174
|
-
static async canReAuthIfTimesOutDuringAuth() {
|
|
175
|
-
const skill = await this.Skill();
|
|
176
|
-
const client = await this.connectToApi();
|
|
177
|
-
const promise = client.authenticate({
|
|
178
|
-
skillId: skill.id,
|
|
179
|
-
apiKey: skill.apiKey,
|
|
180
|
-
});
|
|
181
|
-
//@ts-ignore
|
|
182
|
-
client.socket.disconnect();
|
|
183
|
-
await promise;
|
|
184
|
-
}
|
|
185
|
-
static async canAuthenticateAsTheSameSkillRepeatedly() {
|
|
186
|
-
const skill = await this.Skill();
|
|
187
|
-
const client = await this.connectToApi();
|
|
188
|
-
await Promise.all([
|
|
189
|
-
client.authenticate({
|
|
190
|
-
skillId: skill.id,
|
|
191
|
-
apiKey: skill.apiKey,
|
|
192
|
-
}),
|
|
193
|
-
client.authenticate({
|
|
194
|
-
skillId: skill.id,
|
|
195
|
-
apiKey: skill.apiKey,
|
|
196
|
-
}),
|
|
197
|
-
client.authenticate({
|
|
198
|
-
skillId: skill.id,
|
|
199
|
-
apiKey: skill.apiKey,
|
|
200
|
-
}),
|
|
201
|
-
]);
|
|
202
|
-
}
|
|
203
|
-
static async canAuthenticateAsTheSamePersonRepeatedly() {
|
|
204
|
-
const { token } = await this.loginAsDemoPerson();
|
|
205
|
-
const client = await this.connectToApi();
|
|
206
|
-
await Promise.all([
|
|
207
|
-
client.authenticate({
|
|
208
|
-
token,
|
|
209
|
-
}),
|
|
210
|
-
client.authenticate({
|
|
211
|
-
token,
|
|
212
|
-
}),
|
|
213
|
-
client.authenticate({
|
|
214
|
-
token,
|
|
215
|
-
}),
|
|
216
|
-
]);
|
|
217
|
-
}
|
|
218
|
-
static async canAuthenticateAsDifferentSkillAfterAuthenticatingAsFirst() {
|
|
219
|
-
const { client } = await this.loginAsDemoPerson(constants_1.DEMO_PHONE_REAUTH);
|
|
220
|
-
const skill1 = await this.seedDemoSkill(client);
|
|
221
|
-
await this.seedDemoSkill(client);
|
|
222
|
-
let results = await client.authenticate({
|
|
223
|
-
skillId: skill1.id,
|
|
224
|
-
apiKey: skill1.apiKey,
|
|
225
|
-
});
|
|
226
|
-
test_utils_1.assert.isEqualDeep(results.skill?.id, skill1.id);
|
|
227
|
-
}
|
|
228
|
-
static async Skill() {
|
|
229
|
-
const { skill } = await this.loginAsDemoSkillAtOrg();
|
|
230
|
-
return skill;
|
|
231
|
-
}
|
|
232
|
-
static async loginAsDemoSkillAtOrg() {
|
|
233
|
-
const { client } = await this.loginAsDemoPerson(constants_1.DEMO_PHONE_REAUTH);
|
|
234
|
-
const org = await this.seedDummyOrg(client);
|
|
235
|
-
const skill = await this.seedAndInstallDummySkill(client, org.id);
|
|
236
|
-
return { client, skill };
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
exports.default = ReauthenticatingAfterReconnectTest;
|
|
240
|
-
__decorate([
|
|
241
|
-
(0, test_utils_1.test)()
|
|
242
|
-
], ReauthenticatingAfterReconnectTest, "authThrowsIfFails", null);
|
|
243
|
-
__decorate([
|
|
244
|
-
(0, test_utils_1.test)()
|
|
245
|
-
], ReauthenticatingAfterReconnectTest, "canAuthAsSkill", null);
|
|
246
|
-
__decorate([
|
|
247
|
-
(0, test_utils_1.test)()
|
|
248
|
-
], ReauthenticatingAfterReconnectTest, "canAuthAsPerson", null);
|
|
249
|
-
__decorate([
|
|
250
|
-
(0, test_utils_1.test)()
|
|
251
|
-
], ReauthenticatingAfterReconnectTest, "manuallyDisconnectingDoesNotReconnectSkill", null);
|
|
252
|
-
__decorate([
|
|
253
|
-
(0, test_utils_1.test)()
|
|
254
|
-
], ReauthenticatingAfterReconnectTest, "confirmPinFailsValidationClientSideDespiteOneOffLogicForRetainingAuth", null);
|
|
255
|
-
__decorate([
|
|
256
|
-
(0, test_utils_1.test)()
|
|
257
|
-
], ReauthenticatingAfterReconnectTest, "manuallyDisconnectingDoesNotReconnectPerson", null);
|
|
258
|
-
__decorate([
|
|
259
|
-
(0, test_utils_1.test)()
|
|
260
|
-
], ReauthenticatingAfterReconnectTest, "losingConnectionAsSkillFromApiTriesReconnect", null);
|
|
261
|
-
__decorate([
|
|
262
|
-
(0, test_utils_1.test)()
|
|
263
|
-
], ReauthenticatingAfterReconnectTest, "losingConnectionAsPersonFromApiTriesReconnect", null);
|
|
264
|
-
__decorate([
|
|
265
|
-
(0, test_utils_1.test)()
|
|
266
|
-
], ReauthenticatingAfterReconnectTest, "losingConnectionBecauseMercuryIsDownDoesNotThrowUnhandledException", null);
|
|
267
|
-
__decorate([
|
|
268
|
-
(0, test_utils_1.test)()
|
|
269
|
-
], ReauthenticatingAfterReconnectTest, "personAuthIsRetainedAfterConfirmingPin", null);
|
|
270
|
-
__decorate([
|
|
271
|
-
(0, test_utils_1.test)()
|
|
272
|
-
], ReauthenticatingAfterReconnectTest, "authAsPersonStoresOnClient", null);
|
|
273
|
-
__decorate([
|
|
274
|
-
(0, test_utils_1.test)()
|
|
275
|
-
], ReauthenticatingAfterReconnectTest, "authAsSkillStoresOnClient", null);
|
|
276
|
-
__decorate([
|
|
277
|
-
(0, test_utils_1.test)()
|
|
278
|
-
], ReauthenticatingAfterReconnectTest, "canReAuthIfTimesOutDuringAuth", null);
|
|
279
|
-
__decorate([
|
|
280
|
-
(0, test_utils_1.test)()
|
|
281
|
-
], ReauthenticatingAfterReconnectTest, "canAuthenticateAsTheSameSkillRepeatedly", null);
|
|
282
|
-
__decorate([
|
|
283
|
-
(0, test_utils_1.test)()
|
|
284
|
-
], ReauthenticatingAfterReconnectTest, "canAuthenticateAsTheSamePersonRepeatedly", null);
|
|
285
|
-
__decorate([
|
|
286
|
-
(0, test_utils_1.test)()
|
|
287
|
-
], ReauthenticatingAfterReconnectTest, "canAuthenticateAsDifferentSkillAfterAuthenticatingAsFirst", null);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticatingAndReauthenticating.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/AuthenticatingAndReauthenticating.test.ts"],"names":[],"mappings":"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"}
|