@tellescope/sdk 1.256.2 → 1.256.4
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/lib/cjs/tests/api_tests/metriport_push_form_response.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/metriport_push_form_response.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/metriport_push_form_response.test.js +298 -0
- package/lib/cjs/tests/api_tests/metriport_push_form_response.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/phone_calls_move_enduser.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/phone_calls_move_enduser.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/phone_calls_move_enduser.test.js +274 -0
- package/lib/cjs/tests/api_tests/phone_calls_move_enduser.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/stripe_webhook_triggers.test.d.ts +18 -0
- package/lib/cjs/tests/api_tests/stripe_webhook_triggers.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/stripe_webhook_triggers.test.js +964 -0
- package/lib/cjs/tests/api_tests/stripe_webhook_triggers.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/welle_partner_token.test.js +313 -0
- package/lib/cjs/tests/api_tests/welle_partner_token.test.js.map +1 -0
- package/lib/cjs/tests/stripe_webhook_helpers.d.ts +204 -0
- package/lib/cjs/tests/stripe_webhook_helpers.d.ts.map +1 -0
- package/lib/cjs/tests/stripe_webhook_helpers.js +286 -0
- package/lib/cjs/tests/stripe_webhook_helpers.js.map +1 -0
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +192 -180
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/cjs/tests/unit_tests/translation.test.d.ts +3 -0
- package/lib/cjs/tests/unit_tests/translation.test.d.ts.map +1 -0
- package/lib/cjs/tests/unit_tests/translation.test.js.map +1 -0
- package/lib/esm/enduser.d.ts +1 -0
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/sdk.d.ts +3 -2
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/session.d.ts +1 -0
- package/lib/esm/session.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/metriport_push_form_response.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/metriport_push_form_response.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/metriport_push_form_response.test.js +294 -0
- package/lib/esm/tests/api_tests/metriport_push_form_response.test.js.map +1 -0
- package/lib/esm/tests/api_tests/phone_calls_move_enduser.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/phone_calls_move_enduser.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/phone_calls_move_enduser.test.js +270 -0
- package/lib/esm/tests/api_tests/phone_calls_move_enduser.test.js.map +1 -0
- package/lib/esm/tests/api_tests/stripe_webhook_triggers.test.d.ts +18 -0
- package/lib/esm/tests/api_tests/stripe_webhook_triggers.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/stripe_webhook_triggers.test.js +960 -0
- package/lib/esm/tests/api_tests/stripe_webhook_triggers.test.js.map +1 -0
- package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/welle_partner_token.test.js +309 -0
- package/lib/esm/tests/api_tests/welle_partner_token.test.js.map +1 -0
- package/lib/esm/tests/stripe_webhook_helpers.d.ts +204 -0
- package/lib/esm/tests/stripe_webhook_helpers.d.ts.map +1 -0
- package/lib/esm/tests/stripe_webhook_helpers.js +267 -0
- package/lib/esm/tests/stripe_webhook_helpers.js.map +1 -0
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +192 -180
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/esm/tests/unit_tests/translation.test.d.ts +3 -0
- package/lib/esm/tests/unit_tests/translation.test.d.ts.map +1 -0
- package/lib/esm/tests/unit_tests/translation.test.js +52 -0
- package/lib/esm/tests/unit_tests/translation.test.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/tests/api_tests/metriport_push_form_response.test.ts +226 -0
- package/src/tests/api_tests/stripe_webhook_triggers.test.ts +676 -0
- package/src/tests/api_tests/welle_partner_token.test.ts +249 -0
- package/src/tests/stripe_webhook_helpers.ts +240 -0
- package/src/tests/tests.ts +6 -0
- package/test_generated.pdf +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stripe_webhook_triggers.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/stripe_webhook_triggers.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welle_partner_token.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/welle_partner_token.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAA;AAwCnD,eAAO,MAAM,yBAAyB;SAAwC,OAAO;iBAAe,OAAO;mBAuL1G,CAAA"}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.welle_partner_token_tests = void 0;
|
|
40
|
+
require('source-map-support').install();
|
|
41
|
+
var crypto_1 = require("crypto");
|
|
42
|
+
var sdk_1 = require("../../sdk");
|
|
43
|
+
var testing_1 = require("@tellescope/testing");
|
|
44
|
+
var constants_1 = require("@tellescope/constants");
|
|
45
|
+
var setup_1 = require("../setup");
|
|
46
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
47
|
+
var SIGNING_KEY = 'welle_test_signing_key_do_not_use_in_prod';
|
|
48
|
+
var HEALTHIE_PATIENT_ID = '999888777';
|
|
49
|
+
// decoding needs no dependency: these tests assert on CLAIMS, and verify the signature separately with crypto
|
|
50
|
+
var decode_jwt_header = function (token) { return (JSON.parse(Buffer.from(token.split('.')[0], 'base64url').toString())); };
|
|
51
|
+
var decode_jwt_payload = function (token) { return JSON.parse(Buffer.from(token.split('.')[1], 'base64url').toString()); };
|
|
52
|
+
var sign_hs256 = function (signingInput, key) { return ((0, crypto_1.createHmac)('sha256', key).update(signingInput).digest('base64url')); };
|
|
53
|
+
// reset_db does NOT clear integrations, so a crashed prior run can leave a Welle record behind.
|
|
54
|
+
// The partner-token branch does findOne({ title: WELLE_TITLE }), so a stray record would make the
|
|
55
|
+
// "disconnected" assertion pass spuriously — clear them all rather than only the one we created.
|
|
56
|
+
var delete_all_welle_integrations = function (sdk) { return __awaiter(void 0, void 0, void 0, function () {
|
|
57
|
+
var existing, _i, _a, integration;
|
|
58
|
+
return __generator(this, function (_b) {
|
|
59
|
+
switch (_b.label) {
|
|
60
|
+
case 0: return [4 /*yield*/, sdk.api.integrations.getSome({})];
|
|
61
|
+
case 1:
|
|
62
|
+
existing = _b.sent();
|
|
63
|
+
_i = 0, _a = existing.filter(function (i) { return i.title === constants_1.WELLE_TITLE; });
|
|
64
|
+
_b.label = 2;
|
|
65
|
+
case 2:
|
|
66
|
+
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
67
|
+
integration = _a[_i];
|
|
68
|
+
return [4 /*yield*/, sdk.api.integrations.deleteOne(integration.id).catch(console.error)];
|
|
69
|
+
case 3:
|
|
70
|
+
_b.sent();
|
|
71
|
+
_b.label = 4;
|
|
72
|
+
case 4:
|
|
73
|
+
_i++;
|
|
74
|
+
return [3 /*break*/, 2];
|
|
75
|
+
case 5: return [2 /*return*/];
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}); };
|
|
79
|
+
var welle_partner_token_tests = function (_a) {
|
|
80
|
+
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
81
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
82
|
+
var suffix, linkedEmail, unlinkedEmail, linkedId, unlinkedId, linked, unlinked, linkedSDK_1, unlinkedSDK_1, issuedToken_1, _b, header, payload, signature, _i, _c, id;
|
|
83
|
+
return __generator(this, function (_d) {
|
|
84
|
+
switch (_d.label) {
|
|
85
|
+
case 0:
|
|
86
|
+
(0, testing_1.log_header)("Welle Partner Token Tests");
|
|
87
|
+
suffix = Math.random().toString(36).slice(2, 10);
|
|
88
|
+
linkedEmail = "welle.linked.".concat(suffix, "@tellescope.com");
|
|
89
|
+
unlinkedEmail = "welle.unlinked.".concat(suffix, "@tellescope.com");
|
|
90
|
+
linkedId = '';
|
|
91
|
+
unlinkedId = '';
|
|
92
|
+
_d.label = 1;
|
|
93
|
+
case 1:
|
|
94
|
+
_d.trys.push([1, , 24, 31]);
|
|
95
|
+
return [4 /*yield*/, delete_all_welle_integrations(sdk)];
|
|
96
|
+
case 2:
|
|
97
|
+
_d.sent();
|
|
98
|
+
return [4 /*yield*/, sdk.api.integrations.createOne({
|
|
99
|
+
title: constants_1.WELLE_TITLE,
|
|
100
|
+
authentication: {
|
|
101
|
+
type: 'apiKey',
|
|
102
|
+
info: {
|
|
103
|
+
access_token: SIGNING_KEY,
|
|
104
|
+
refresh_token: 'unused',
|
|
105
|
+
scope: '',
|
|
106
|
+
token_type: 'Bearer',
|
|
107
|
+
expiry_date: 0,
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
})
|
|
111
|
+
// an enduser linked to Healthie — eligible for a partner token
|
|
112
|
+
];
|
|
113
|
+
case 3:
|
|
114
|
+
_d.sent();
|
|
115
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: linkedEmail, fname: 'Welle', lname: 'Linked' })];
|
|
116
|
+
case 4:
|
|
117
|
+
linked = _d.sent();
|
|
118
|
+
linkedId = linked.id;
|
|
119
|
+
return [4 /*yield*/, sdk.api.endusers.updateOne(linkedId, { references: [{ type: constants_1.HEALTHIE_TITLE, id: HEALTHIE_PATIENT_ID }] }, { replaceObjectFields: true })
|
|
120
|
+
// an enduser with no Healthie reference
|
|
121
|
+
];
|
|
122
|
+
case 5:
|
|
123
|
+
_d.sent();
|
|
124
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: unlinkedEmail, fname: 'Welle', lname: 'Unlinked' })];
|
|
125
|
+
case 6:
|
|
126
|
+
unlinked = _d.sent();
|
|
127
|
+
unlinkedId = unlinked.id;
|
|
128
|
+
linkedSDK_1 = new sdk_1.EnduserSession({ host: host, businessId: sdk.userInfo.businessId });
|
|
129
|
+
return [4 /*yield*/, (0, setup_1.authenticate_enduser_via_token)(sdk, linkedSDK_1, { email: linkedEmail })];
|
|
130
|
+
case 7:
|
|
131
|
+
_d.sent();
|
|
132
|
+
unlinkedSDK_1 = new sdk_1.EnduserSession({ host: host, businessId: sdk.userInfo.businessId });
|
|
133
|
+
return [4 /*yield*/, (0, setup_1.authenticate_enduser_via_token)(sdk, unlinkedSDK_1, { email: unlinkedEmail })
|
|
134
|
+
// 1) happy path — claims are correct
|
|
135
|
+
];
|
|
136
|
+
case 8:
|
|
137
|
+
_d.sent();
|
|
138
|
+
issuedToken_1 = '';
|
|
139
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser can mint a Welle partner token with the expected claims", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { onResult: function (r) {
|
|
140
|
+
var _a;
|
|
141
|
+
issuedToken_1 = (_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token;
|
|
142
|
+
if (!issuedToken_1)
|
|
143
|
+
return false;
|
|
144
|
+
var header = decode_jwt_header(issuedToken_1);
|
|
145
|
+
var payload = decode_jwt_payload(issuedToken_1);
|
|
146
|
+
var expectedExp = Math.floor(Date.now() / 1000) + 3600;
|
|
147
|
+
return (header.alg === 'HS256'
|
|
148
|
+
&& payload.patientId === HEALTHIE_PATIENT_ID
|
|
149
|
+
&& Math.abs(payload.exp - expectedExp) < 60);
|
|
150
|
+
} })
|
|
151
|
+
// 2) the signature is real — verifies against the stored signing key, and only that key
|
|
152
|
+
];
|
|
153
|
+
case 9:
|
|
154
|
+
_d.sent();
|
|
155
|
+
_b = issuedToken_1.split('.'), header = _b[0], payload = _b[1], signature = _b[2];
|
|
156
|
+
(0, testing_1.assert)(sign_hs256("".concat(header, ".").concat(payload), SIGNING_KEY) === signature, "token signature does not verify against the stored Welle signing key", "token is signed with the organization's Welle signing key");
|
|
157
|
+
(0, testing_1.assert)(sign_hs256("".concat(header, ".").concat(payload), "".concat(SIGNING_KEY, "_wrong")) !== signature, "token signature verified against the WRONG key", "token signature does not verify against a different key");
|
|
158
|
+
// 3) the subject is non-forgeable — the branch ignores the id param and uses the session's enduser
|
|
159
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser cannot mint a token for another enduser by passing id", function () { return linkedSDK_1.api.integrations.proxy_read({
|
|
160
|
+
integration: constants_1.WELLE_TITLE,
|
|
161
|
+
type: 'partner-redirect-token',
|
|
162
|
+
id: unlinkedId,
|
|
163
|
+
}); }, { onResult: function (r) {
|
|
164
|
+
var _a;
|
|
165
|
+
return (!!((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token) && decode_jwt_payload(r.data.token).patientId === HEALTHIE_PATIENT_ID);
|
|
166
|
+
} })
|
|
167
|
+
// 4) an enduser with no Healthie reference gets no token
|
|
168
|
+
];
|
|
169
|
+
case 10:
|
|
170
|
+
// 3) the subject is non-forgeable — the branch ignores the id param and uses the session's enduser
|
|
171
|
+
_d.sent();
|
|
172
|
+
// 4) an enduser with no Healthie reference gets no token
|
|
173
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser without a Healthie reference cannot mint a token", function () { return unlinkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { shouldError: true, onError: function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('enduser has no Healthie reference'); } })
|
|
174
|
+
// 5) staff sessions are not served by this branch (it is enduser-gated) — falls through to an empty result
|
|
175
|
+
];
|
|
176
|
+
case 11:
|
|
177
|
+
// 4) an enduser with no Healthie reference gets no token
|
|
178
|
+
_d.sent();
|
|
179
|
+
// 5) staff sessions are not served by this branch (it is enduser-gated) — falls through to an empty result
|
|
180
|
+
return [4 /*yield*/, (0, testing_1.async_test)("admin user session is not issued a Welle partner token", function () { return sdk.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { onResult: function (r) { var _a; return !((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token); } })];
|
|
181
|
+
case 12:
|
|
182
|
+
// 5) staff sessions are not served by this branch (it is enduser-gated) — falls through to an empty result
|
|
183
|
+
_d.sent();
|
|
184
|
+
return [4 /*yield*/, (0, testing_1.async_test)("non-admin user session is not issued a Welle partner token", function () { return sdkNonAdmin.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { onResult: function (r) { var _a; return !((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token); } })
|
|
185
|
+
// 6) no other Welle proxy_read type is reachable by an enduser
|
|
186
|
+
];
|
|
187
|
+
case 13:
|
|
188
|
+
_d.sent();
|
|
189
|
+
// 6) no other Welle proxy_read type is reachable by an enduser
|
|
190
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser cannot read other Welle proxy types", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'anything-else' }); }, { shouldError: true, onError: function (e) { return (((e === null || e === void 0 ? void 0 : e.message) || '').includes('enduser session type not valid for this integration type')); } })
|
|
191
|
+
// 7) with the integration disconnected, no token can be minted
|
|
192
|
+
];
|
|
193
|
+
case 14:
|
|
194
|
+
// 6) no other Welle proxy_read type is reachable by an enduser
|
|
195
|
+
_d.sent();
|
|
196
|
+
// 7) with the integration disconnected, no token can be minted
|
|
197
|
+
return [4 /*yield*/, delete_all_welle_integrations(sdk)];
|
|
198
|
+
case 15:
|
|
199
|
+
// 7) with the integration disconnected, no token can be minted
|
|
200
|
+
_d.sent();
|
|
201
|
+
return [4 /*yield*/, (0, testing_1.async_test)("no token is issued once the Welle integration is disconnected", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { shouldError: true, onError: function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('Welle integration not found'); } })
|
|
202
|
+
// 8) the real connect path — add_api_key_integration, not integrations.createOne.
|
|
203
|
+
// Welle has no credential-validation branch (an opaque HMAC key has nothing to authenticate
|
|
204
|
+
// against), so unlike Canvas/Candid/MDI this endpoint makes no upstream call and is testable.
|
|
205
|
+
];
|
|
206
|
+
case 16:
|
|
207
|
+
_d.sent();
|
|
208
|
+
// 8) the real connect path — add_api_key_integration, not integrations.createOne.
|
|
209
|
+
// Welle has no credential-validation branch (an opaque HMAC key has nothing to authenticate
|
|
210
|
+
// against), so unlike Canvas/Candid/MDI this endpoint makes no upstream call and is testable.
|
|
211
|
+
return [4 /*yield*/, (0, testing_1.async_test)("add_api_key_integration connects Welle", function () { return sdk.api.integrations.add_api_key_integration({ integration: constants_1.WELLE_TITLE, API_KEY: SIGNING_KEY }); }, { onResult: function (r) { var _a; return ((_a = r === null || r === void 0 ? void 0 : r.integration) === null || _a === void 0 ? void 0 : _a.title) === constants_1.WELLE_TITLE; } })];
|
|
212
|
+
case 17:
|
|
213
|
+
// 8) the real connect path — add_api_key_integration, not integrations.createOne.
|
|
214
|
+
// Welle has no credential-validation branch (an opaque HMAC key has nothing to authenticate
|
|
215
|
+
// against), so unlike Canvas/Candid/MDI this endpoint makes no upstream call and is testable.
|
|
216
|
+
_d.sent();
|
|
217
|
+
return [4 /*yield*/, (0, testing_1.async_test)("add_api_key_integration sets hasConnectedWelle", function () { return sdk.api.organizations.getOne(sdk.userInfo.businessId); }, { onResult: function (o) { return (o === null || o === void 0 ? void 0 : o.hasConnectedWelle) === true; } })
|
|
218
|
+
// the key stored by add_api_key_integration must land in the field the proxy_read branch reads
|
|
219
|
+
// (authentication.info.access_token) — minting a verifiable token proves the two paths agree
|
|
220
|
+
];
|
|
221
|
+
case 18:
|
|
222
|
+
_d.sent();
|
|
223
|
+
// the key stored by add_api_key_integration must land in the field the proxy_read branch reads
|
|
224
|
+
// (authentication.info.access_token) — minting a verifiable token proves the two paths agree
|
|
225
|
+
return [4 /*yield*/, (0, testing_1.async_test)("token minted from the add_api_key_integration credential verifies", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { onResult: function (r) {
|
|
226
|
+
var _a;
|
|
227
|
+
var token = (_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.token;
|
|
228
|
+
if (!token)
|
|
229
|
+
return false;
|
|
230
|
+
var _b = token.split('.'), h = _b[0], p = _b[1], s = _b[2];
|
|
231
|
+
return sign_hs256("".concat(h, ".").concat(p), SIGNING_KEY) === s
|
|
232
|
+
&& decode_jwt_payload(token).patientId === HEALTHIE_PATIENT_ID;
|
|
233
|
+
} })
|
|
234
|
+
// 9) the real disconnect path — remove_api_key_integration
|
|
235
|
+
];
|
|
236
|
+
case 19:
|
|
237
|
+
// the key stored by add_api_key_integration must land in the field the proxy_read branch reads
|
|
238
|
+
// (authentication.info.access_token) — minting a verifiable token proves the two paths agree
|
|
239
|
+
_d.sent();
|
|
240
|
+
// 9) the real disconnect path — remove_api_key_integration
|
|
241
|
+
return [4 /*yield*/, (0, testing_1.async_test)("remove_api_key_integration disconnects Welle", function () { return sdk.api.integrations.remove_api_key_integration({ integration: constants_1.WELLE_TITLE }); }, { onResult: function () { return true; } })
|
|
242
|
+
// the org flag update is fire-and-forget on this handler (res.end() returns before the .then chain)
|
|
243
|
+
];
|
|
244
|
+
case 20:
|
|
245
|
+
// 9) the real disconnect path — remove_api_key_integration
|
|
246
|
+
_d.sent();
|
|
247
|
+
// the org flag update is fire-and-forget on this handler (res.end() returns before the .then chain)
|
|
248
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
|
|
249
|
+
case 21:
|
|
250
|
+
// the org flag update is fire-and-forget on this handler (res.end() returns before the .then chain)
|
|
251
|
+
_d.sent();
|
|
252
|
+
return [4 /*yield*/, (0, testing_1.async_test)("remove_api_key_integration clears hasConnectedWelle", function () { return sdk.api.organizations.getOne(sdk.userInfo.businessId); }, { onResult: function (o) { return !(o === null || o === void 0 ? void 0 : o.hasConnectedWelle); } })];
|
|
253
|
+
case 22:
|
|
254
|
+
_d.sent();
|
|
255
|
+
return [4 /*yield*/, (0, testing_1.async_test)("no token is issued after remove_api_key_integration", function () { return linkedSDK_1.api.integrations.proxy_read({ integration: constants_1.WELLE_TITLE, type: 'partner-redirect-token' }); }, { shouldError: true, onError: function (e) { return ((e === null || e === void 0 ? void 0 : e.message) || '').includes('Welle integration not found'); } })];
|
|
256
|
+
case 23:
|
|
257
|
+
_d.sent();
|
|
258
|
+
return [3 /*break*/, 31];
|
|
259
|
+
case 24: return [4 /*yield*/, delete_all_welle_integrations(sdk).catch(console.error)];
|
|
260
|
+
case 25:
|
|
261
|
+
_d.sent();
|
|
262
|
+
return [4 /*yield*/, sdk.api.organizations.updateOne(sdk.userInfo.businessId, { hasConnectedWelle: false }).catch(console.error)];
|
|
263
|
+
case 26:
|
|
264
|
+
_d.sent();
|
|
265
|
+
_i = 0, _c = [linkedId, unlinkedId];
|
|
266
|
+
_d.label = 27;
|
|
267
|
+
case 27:
|
|
268
|
+
if (!(_i < _c.length)) return [3 /*break*/, 30];
|
|
269
|
+
id = _c[_i];
|
|
270
|
+
if (!id)
|
|
271
|
+
return [3 /*break*/, 29];
|
|
272
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(id).catch(console.error)];
|
|
273
|
+
case 28:
|
|
274
|
+
_d.sent();
|
|
275
|
+
_d.label = 29;
|
|
276
|
+
case 29:
|
|
277
|
+
_i++;
|
|
278
|
+
return [3 /*break*/, 27];
|
|
279
|
+
case 30: return [7 /*endfinally*/];
|
|
280
|
+
case 31: return [2 /*return*/];
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
};
|
|
285
|
+
exports.welle_partner_token_tests = welle_partner_token_tests;
|
|
286
|
+
// Allow running this test file independently
|
|
287
|
+
if (require.main === module) {
|
|
288
|
+
var sdk_2 = new sdk_1.Session({ host: host });
|
|
289
|
+
var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
|
|
290
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
291
|
+
return __generator(this, function (_a) {
|
|
292
|
+
switch (_a.label) {
|
|
293
|
+
case 0: return [4 /*yield*/, (0, setup_1.setup_tests)(sdk_2, sdkNonAdmin_1)];
|
|
294
|
+
case 1:
|
|
295
|
+
_a.sent();
|
|
296
|
+
return [4 /*yield*/, (0, exports.welle_partner_token_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
297
|
+
case 2:
|
|
298
|
+
_a.sent();
|
|
299
|
+
return [2 /*return*/];
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
}); };
|
|
303
|
+
runTests()
|
|
304
|
+
.then(function () {
|
|
305
|
+
console.log("✅ Welle partner token test suite completed successfully");
|
|
306
|
+
process.exit(0);
|
|
307
|
+
})
|
|
308
|
+
.catch(function (error) {
|
|
309
|
+
console.error("❌ Welle partner token test suite failed:", error);
|
|
310
|
+
process.exit(1);
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=welle_partner_token.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welle_partner_token.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/welle_partner_token.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { Session } from "../sdk";
|
|
2
|
+
export declare const TEST_STRIPE_ENVIRONMENT = "tellescope-test-stripe-webhooks";
|
|
3
|
+
/**
|
|
4
|
+
* Stripe signs `${timestamp}.${rawBody}` with HMAC-SHA256 and sends it hex-encoded in a
|
|
5
|
+
* `t=<unixSeconds>,v1=<hex>` header. Reproducing it here lets tests exercise the real webhook
|
|
6
|
+
* route — signature verification included — without Stripe or network access.
|
|
7
|
+
*
|
|
8
|
+
* The default timestamp is always in tolerance (Stripe allows 300s and only rejects old ones);
|
|
9
|
+
* pass an old timestamp explicitly to test rejection.
|
|
10
|
+
*/
|
|
11
|
+
export declare const sign_stripe_payload: (rawBody: string, secret: string, timestamp?: number) => string;
|
|
12
|
+
/**
|
|
13
|
+
* POSTs an event to the custom Stripe webhook route.
|
|
14
|
+
*
|
|
15
|
+
* Serializes the body here and signs those exact bytes, because the route uses
|
|
16
|
+
* express.raw and the signature covers the raw body verbatim — handing a pre-serialized
|
|
17
|
+
* string to fetch is what keeps the two in sync.
|
|
18
|
+
*
|
|
19
|
+
* Pass `signature` to override the computed one (for rejection tests).
|
|
20
|
+
*/
|
|
21
|
+
export declare const post_stripe_webhook: ({ stripePublicKey, event, secret, signature }: {
|
|
22
|
+
stripePublicKey: string;
|
|
23
|
+
event: object;
|
|
24
|
+
secret: string;
|
|
25
|
+
signature?: string | undefined;
|
|
26
|
+
}) => Promise<{
|
|
27
|
+
status: number;
|
|
28
|
+
data: string;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a throwaway custom Stripe integration and returns the values needed to sign webhooks for
|
|
32
|
+
* it, plus a cleanup function to call in a finally block.
|
|
33
|
+
*
|
|
34
|
+
* The access token is never used: neither invoice.payment_failed nor customer.subscription.deleted
|
|
35
|
+
* calls the Stripe API, and constructing a Stripe client doesn't validate the key or hit the network.
|
|
36
|
+
*/
|
|
37
|
+
export declare const setup_stripe_test_integration: (sdk: Session) => Promise<{
|
|
38
|
+
stripePublicKey: string;
|
|
39
|
+
webhooksSecret: string;
|
|
40
|
+
integrationId: string;
|
|
41
|
+
cleanup: () => Promise<void>;
|
|
42
|
+
}>;
|
|
43
|
+
/** Deletes any test Stripe integrations left behind by a run that exited before its cleanup. */
|
|
44
|
+
export declare const cleanup_stripe_test_integrations: (sdk: Session) => Promise<void>;
|
|
45
|
+
export declare const line_with_price_product: (stripeProductId: string) => {
|
|
46
|
+
price: {
|
|
47
|
+
product: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
export declare const line_with_expanded_price_product: (stripeProductId: string) => {
|
|
51
|
+
price: {
|
|
52
|
+
product: {
|
|
53
|
+
id: string;
|
|
54
|
+
object: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
export declare const line_with_plan_product: (stripeProductId: string) => {
|
|
59
|
+
price: null;
|
|
60
|
+
plan: {
|
|
61
|
+
product: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Minimal invoice.payment_failed envelope. constructEvent only requires valid JSON — it does not
|
|
66
|
+
* validate id/object/api_version — so this carries just the fields the handler reads.
|
|
67
|
+
*/
|
|
68
|
+
export declare const invoice_payment_failed_event: ({ stripeCustomerId, lines, has_more }: {
|
|
69
|
+
stripeCustomerId: string;
|
|
70
|
+
lines?: object[] | undefined;
|
|
71
|
+
has_more?: boolean | undefined;
|
|
72
|
+
}) => {
|
|
73
|
+
type: string;
|
|
74
|
+
data: {
|
|
75
|
+
object: {
|
|
76
|
+
id: string;
|
|
77
|
+
customer: string;
|
|
78
|
+
lines: {
|
|
79
|
+
object: string;
|
|
80
|
+
data: object[];
|
|
81
|
+
has_more: boolean;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
/** Minimal customer.subscription.deleted envelope; the handler reads items.data[].plan.product. */
|
|
87
|
+
export declare const subscription_deleted_event: ({ stripeCustomerId, stripeProductIds }: {
|
|
88
|
+
stripeCustomerId: string;
|
|
89
|
+
stripeProductIds?: string[] | undefined;
|
|
90
|
+
}) => {
|
|
91
|
+
type: string;
|
|
92
|
+
data: {
|
|
93
|
+
object: {
|
|
94
|
+
id: string;
|
|
95
|
+
customer: string;
|
|
96
|
+
items: {
|
|
97
|
+
object: string;
|
|
98
|
+
data: {
|
|
99
|
+
plan: {
|
|
100
|
+
product: string;
|
|
101
|
+
};
|
|
102
|
+
}[];
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* A subscription item references its product through price.product on every modern item, and through
|
|
109
|
+
* plan.product on legacy ones. Either may be a bare id or an expanded object.
|
|
110
|
+
*/
|
|
111
|
+
export declare const item_with_price_product: (stripeProductId: string) => {
|
|
112
|
+
price: {
|
|
113
|
+
product: string;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
export declare const item_with_expanded_price_product: (stripeProductId: string) => {
|
|
117
|
+
price: {
|
|
118
|
+
product: {
|
|
119
|
+
id: string;
|
|
120
|
+
object: string;
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
export declare const item_with_plan_product: (stripeProductId: string) => {
|
|
125
|
+
price: null;
|
|
126
|
+
plan: {
|
|
127
|
+
product: string;
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
/** A pause_collection value, as Stripe carries it on a paused-collection subscription. */
|
|
131
|
+
export declare const PAUSE_COLLECTION: {
|
|
132
|
+
behavior: string;
|
|
133
|
+
resumes_at: null;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* customer.subscription.updated envelope. `previousAttributes` is the whole previous_attributes bag,
|
|
137
|
+
* so a case can express "pause_collection key absent" (pass {}) distinctly from
|
|
138
|
+
* "pause_collection was null" (pass { pause_collection: null }) — that distinction is the entire
|
|
139
|
+
* gate the handler uses to avoid running on every renewal.
|
|
140
|
+
*/
|
|
141
|
+
export declare const subscription_updated_event: ({ stripeCustomerId, items, previousAttributes, pauseCollection, status, }: {
|
|
142
|
+
stripeCustomerId: string;
|
|
143
|
+
items?: object[] | undefined;
|
|
144
|
+
previousAttributes?: object | undefined;
|
|
145
|
+
pauseCollection?: object | null | undefined;
|
|
146
|
+
status?: string | undefined;
|
|
147
|
+
}) => {
|
|
148
|
+
type: string;
|
|
149
|
+
data: {
|
|
150
|
+
object: {
|
|
151
|
+
id: string;
|
|
152
|
+
customer: string;
|
|
153
|
+
status: string;
|
|
154
|
+
pause_collection: object | null;
|
|
155
|
+
items: {
|
|
156
|
+
object: string;
|
|
157
|
+
data: object[];
|
|
158
|
+
has_more: boolean;
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
previous_attributes: object;
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
export declare const subscription_paused_event: ({ stripeCustomerId, items, status }: {
|
|
165
|
+
stripeCustomerId: string;
|
|
166
|
+
items?: object[] | undefined;
|
|
167
|
+
status?: string | undefined;
|
|
168
|
+
}) => {
|
|
169
|
+
type: string;
|
|
170
|
+
data: {
|
|
171
|
+
object: {
|
|
172
|
+
id: string;
|
|
173
|
+
customer: string;
|
|
174
|
+
status: string;
|
|
175
|
+
pause_collection: null;
|
|
176
|
+
items: {
|
|
177
|
+
object: string;
|
|
178
|
+
data: object[];
|
|
179
|
+
has_more: boolean;
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
export declare const subscription_resumed_event: ({ stripeCustomerId, items, status }: {
|
|
185
|
+
stripeCustomerId: string;
|
|
186
|
+
items?: object[] | undefined;
|
|
187
|
+
status?: string | undefined;
|
|
188
|
+
}) => {
|
|
189
|
+
type: string;
|
|
190
|
+
data: {
|
|
191
|
+
object: {
|
|
192
|
+
id: string;
|
|
193
|
+
customer: string;
|
|
194
|
+
status: string;
|
|
195
|
+
pause_collection: null;
|
|
196
|
+
items: {
|
|
197
|
+
object: string;
|
|
198
|
+
data: object[];
|
|
199
|
+
has_more: boolean;
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
};
|
|
203
|
+
};
|
|
204
|
+
//# sourceMappingURL=stripe_webhook_helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stripe_webhook_helpers.d.ts","sourceRoot":"","sources":["../../../src/tests/stripe_webhook_helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAOhC,eAAO,MAAM,uBAAuB,oCAAoC,CAAA;AAQxE;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,YACrB,MAAM,UACP,MAAM,+BAIf,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB;qBACb,MAAM;WAChB,MAAM;YACL,MAAM;;;;;EAgBf,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,QAAe,OAAO;;;;;EAkC/D,CAAA;AAED,gGAAgG;AAChG,eAAO,MAAM,gCAAgC,QAAe,OAAO,kBASlE,CAAA;AAOD,eAAO,MAAM,uBAAuB,oBAAqB,MAAM;;;;CAE7D,CAAA;AACF,eAAO,MAAM,gCAAgC,oBAAqB,MAAM;;;;;;;CAEtE,CAAA;AACF,eAAO,MAAM,sBAAsB,oBAAqB,MAAM;;;;;CAG5D,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B;sBACrB,MAAM;;;;;;;;;;;;;;;;CAYxB,CAAA;AAEF,mGAAmG;AACnG,eAAO,MAAM,0BAA0B;sBACnB,MAAM;;;;;;;;;;;;;;;;;;CAcxB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,oBAAqB,MAAM;;;;CAE7D,CAAA;AACF,eAAO,MAAM,gCAAgC,oBAAqB,MAAM;;;;;;;CAEtE,CAAA;AACF,eAAO,MAAM,sBAAsB,oBAAqB,MAAM;;;;;CAG5D,CAAA;AAEF,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB;;;CAAyC,CAAA;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;sBAGnB,MAAM;;;;;;;;;;;;;;;;;;;;;CAiBxB,CAAA;AAuBF,eAAO,MAAM,yBAAyB;sBAhBlB,MAAM;;;;;;;;;;;;;;;;;;CAgBuE,CAAA;AACjG,eAAO,MAAM,0BAA0B;sBAjBnB,MAAM;;;;;;;;;;;;;;;;;;CAiByE,CAAA"}
|