@tellescope/sdk 0.0.12 → 0.0.16
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/enduser.d.ts +29 -3
- package/lib/cjs/enduser.d.ts.map +1 -1
- package/lib/cjs/enduser.js +1 -1
- package/lib/cjs/enduser.js.map +1 -1
- package/lib/cjs/sdk.d.ts +56 -11
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +6 -3
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/session.d.ts +1 -0
- package/lib/cjs/session.d.ts.map +1 -1
- package/lib/cjs/session.js +11 -0
- package/lib/cjs/session.js.map +1 -1
- package/lib/cjs/tests/public_endpoint_tests.js +3 -3
- package/lib/cjs/tests/public_endpoint_tests.js.map +1 -1
- package/lib/cjs/tests/socket_tests.js +1 -1
- package/lib/cjs/tests/socket_tests.js.map +1 -1
- package/lib/cjs/tests/tests.js +161 -32
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/enduser.d.ts +29 -3
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/enduser.js +1 -1
- package/lib/esm/enduser.js.map +1 -1
- package/lib/esm/sdk.d.ts +56 -11
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +6 -3
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/session.d.ts +1 -0
- package/lib/esm/session.d.ts.map +1 -1
- package/lib/esm/session.js +11 -0
- package/lib/esm/session.js.map +1 -1
- package/lib/esm/tests/public_endpoint_tests.js +3 -3
- package/lib/esm/tests/public_endpoint_tests.js.map +1 -1
- package/lib/esm/tests/socket_tests.js +1 -1
- package/lib/esm/tests/socket_tests.js.map +1 -1
- package/lib/esm/tests/tests.js +142 -32
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/enduser.ts +2 -2
- package/src/sdk.ts +17 -7
- package/src/session.ts +5 -0
- package/src/tests/public_endpoint_tests.ts +3 -3
- package/src/tests/socket_tests.ts +1 -1
- package/src/tests/tests.ts +106 -6
package/src/tests/tests.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
require('source-map-support').install();
|
|
2
|
+
import * as fs from "fs"
|
|
3
|
+
import * as buffer from "buffer" // only node >=15.7.0
|
|
2
4
|
|
|
3
5
|
import {
|
|
4
6
|
Enduser,
|
|
5
|
-
ChatRoom,
|
|
6
7
|
ClientModelForName,
|
|
7
8
|
ClientModelForName_required,
|
|
8
9
|
} from "@tellescope/types-client"
|
|
@@ -191,7 +192,7 @@ const threadKeyTests = async () => {
|
|
|
191
192
|
}
|
|
192
193
|
|
|
193
194
|
const filterTests = async () => {
|
|
194
|
-
const enduser = await sdk.api.endusers.createOne({ email: 'filtertests@tellescope.com', fname: 'test' })
|
|
195
|
+
const enduser = await sdk.api.endusers.createOne({ email: 'filtertests@tellescope.com', fname: 'test', fields: { field1: 'value1', field2: 'value2' } })
|
|
195
196
|
const otherEnduser = await sdk.api.endusers.createOne({ email: 'other@tellescope.com' })
|
|
196
197
|
await async_test(
|
|
197
198
|
`find enduser by filter`,
|
|
@@ -213,6 +214,36 @@ const filterTests = async () => {
|
|
|
213
214
|
() => sdk.api.endusers.getSome({ filter: { email: 'doesnotexist@tellescope.com' }}),
|
|
214
215
|
{ onResult: es => es.length === 0 },
|
|
215
216
|
)
|
|
217
|
+
await async_test(
|
|
218
|
+
`find enduser by nested filter`,
|
|
219
|
+
() => sdk.api.endusers.getSome({ filter: { fields: { field1: 'value1' } } }),
|
|
220
|
+
{ onResult: es => es.length === 1 && es[0].id === enduser.id },
|
|
221
|
+
)
|
|
222
|
+
await async_test(
|
|
223
|
+
`nothing found by invalid nested filter`,
|
|
224
|
+
() => sdk.api.endusers.getSome({ filter: { fields: { field1: 'not a nested field value' } }}),
|
|
225
|
+
{ onResult: es => es.length === 0 },
|
|
226
|
+
)
|
|
227
|
+
await async_test(
|
|
228
|
+
`find enduser by compound nested filter`,
|
|
229
|
+
() => sdk.api.endusers.getSome({ filter: { fields: { field1: 'value1', field2: 'value2' } } }),
|
|
230
|
+
{ onResult: es => es.length === 1 && es[0].id === enduser.id },
|
|
231
|
+
)
|
|
232
|
+
await async_test(
|
|
233
|
+
`nothing found by compound invalid nested filter`,
|
|
234
|
+
() => sdk.api.endusers.getSome({ filter: { fields: { field1: 'not a nested field value', field2: 'value2' } }}),
|
|
235
|
+
{ onResult: es => es.length === 0 },
|
|
236
|
+
)
|
|
237
|
+
await async_test(
|
|
238
|
+
`find enduser by compound nested filter with non-nested field as well`,
|
|
239
|
+
() => sdk.api.endusers.getSome({ filter: {email: 'filtertests@tellescope.com', fields: { field1: 'value1', field2: 'value2' } } }),
|
|
240
|
+
{ onResult: es => es.length === 1 && es[0].id === enduser.id },
|
|
241
|
+
)
|
|
242
|
+
await async_test(
|
|
243
|
+
`nothing found for compound nested filter with non-nested field as well`,
|
|
244
|
+
() => sdk.api.endusers.getSome({ filter: {email: 'doesnotexist@tellescope.com', fields: { field1: 'value1', field2: 'value2' } } }),
|
|
245
|
+
{ onResult: es => es.length === 0 },
|
|
246
|
+
)
|
|
216
247
|
|
|
217
248
|
await sdk.api.endusers.deleteOne(enduser.id)
|
|
218
249
|
await sdk.api.endusers.deleteOne(otherEnduser.id)
|
|
@@ -232,6 +263,36 @@ const updatesTests = async () => {
|
|
|
232
263
|
await sdk.api.endusers.deleteOne(enduser.id)
|
|
233
264
|
}
|
|
234
265
|
|
|
266
|
+
const generateEnduserAuthTests = async () => {
|
|
267
|
+
log_header("Generated Enduser authToken Tests")
|
|
268
|
+
const e = await sdk.api.endusers.createOne({ email: 'generated@tellescope.com', phone: '+15555555555', externalId: '1029f9v9sjd0as' })
|
|
269
|
+
const { authToken, enduser } = await sdk.api.endusers.generate_auth_token({ id: e.id })
|
|
270
|
+
assert(!!authToken && !!enduser, 'invalid returned values', 'Generate authToken and get enduser')
|
|
271
|
+
|
|
272
|
+
const { isAuthenticated } = await sdk.api.endusers.is_authenticated({ id: enduser.id, authToken })
|
|
273
|
+
assert(isAuthenticated, 'invalid authToken generated for enduser', 'Generate authToken for enduser is valid')
|
|
274
|
+
|
|
275
|
+
await async_test(
|
|
276
|
+
`auth by externalId`, () => sdk.api.endusers.generate_auth_token({ externalId: e.externalId }), passOnVoid,
|
|
277
|
+
)
|
|
278
|
+
await async_test(
|
|
279
|
+
`auth by email`, () => sdk.api.endusers.generate_auth_token({ email: e.email }), passOnVoid,
|
|
280
|
+
)
|
|
281
|
+
await async_test(
|
|
282
|
+
`auth by phone`, () => sdk.api.endusers.generate_auth_token({ phone: e.phone }), passOnVoid,
|
|
283
|
+
)
|
|
284
|
+
await async_test(
|
|
285
|
+
`auth by nothing throws error`, () => sdk.api.endusers.generate_auth_token({ phone: undefined }),
|
|
286
|
+
{ shouldError: true, onError: e => e.message === "One of id, externalId, email, or phone is required" },
|
|
287
|
+
)
|
|
288
|
+
await async_test(
|
|
289
|
+
`auth by bad field throws error`, () => sdk.api.endusers.generate_auth_token({ email: "notavalidemail@tellescope.com" }),
|
|
290
|
+
{ shouldError: true, onError: e => e.message === "Could not find a corresponding enduser" },
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
await sdk.api.endusers.deleteOne(enduser.id)
|
|
294
|
+
}
|
|
295
|
+
|
|
235
296
|
const instanceForModel = <N extends ModelName, T=ClientModelForName[N], REQ=ClientModelForName_required[N]>(model: Model<T, N>, i=0) => {
|
|
236
297
|
const instance = {} as Indexable
|
|
237
298
|
const updates = {} as Indexable
|
|
@@ -599,7 +660,7 @@ const journey_tests = async (queries=sdk.api.journeys) => {
|
|
|
599
660
|
|
|
600
661
|
await async_test(
|
|
601
662
|
`journey-updateState`,
|
|
602
|
-
() => queries.
|
|
663
|
+
() => queries.update_state({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' }}),
|
|
603
664
|
passOnVoid,
|
|
604
665
|
)
|
|
605
666
|
await wait(undefined, 25) // wait for side effects to update endusers
|
|
@@ -744,8 +805,31 @@ const chat_room_tests = async () => {
|
|
|
744
805
|
() => sdk2.api.chat_rooms.getOne(room.id),
|
|
745
806
|
{ shouldError: true, onError: e => e.message === "Could not find a record for the given id" }
|
|
746
807
|
)
|
|
808
|
+
await sdk.api.chat_rooms.deleteOne(room.id)
|
|
747
809
|
|
|
748
|
-
|
|
810
|
+
|
|
811
|
+
const emptyRoom = await sdk.api.chat_rooms.createOne({ })
|
|
812
|
+
await async_test(
|
|
813
|
+
`get-chat-room (creator can access, even when not in userIds)`,
|
|
814
|
+
() => sdk.api.chat_rooms.getOne(emptyRoom.id),
|
|
815
|
+
{ onResult: r => r.id === emptyRoom.id }
|
|
816
|
+
)
|
|
817
|
+
await async_test(
|
|
818
|
+
`get-chat-room (not in empty room)`,
|
|
819
|
+
() => sdk2.api.chat_rooms.getOne(emptyRoom.id),
|
|
820
|
+
{ shouldError: true, onError: e => e.message === "Could not find a record for the given id" }
|
|
821
|
+
)
|
|
822
|
+
await async_test(
|
|
823
|
+
`join-room`,
|
|
824
|
+
() => sdk2.api.chat_rooms.join_room({ id: emptyRoom.id }),
|
|
825
|
+
{ onResult: ({ room }) => room.id === emptyRoom.id }
|
|
826
|
+
)
|
|
827
|
+
await async_test(
|
|
828
|
+
`get-chat-room (join successful)`,
|
|
829
|
+
() => sdk2.api.chat_rooms.getOne(emptyRoom.id),
|
|
830
|
+
{ onResult: r => r.id === emptyRoom.id }
|
|
831
|
+
)
|
|
832
|
+
await sdk.api.chat_rooms.deleteOne(emptyRoom.id)
|
|
749
833
|
}
|
|
750
834
|
|
|
751
835
|
const chat_tests = async() => {
|
|
@@ -862,7 +946,7 @@ const enduserAccessTests = async () => {
|
|
|
862
946
|
const password = 'testpassword'
|
|
863
947
|
|
|
864
948
|
const enduser = await sdk.api.endusers.createOne({ email })
|
|
865
|
-
await sdk.api.endusers.
|
|
949
|
+
await sdk.api.endusers.set_password({ id: enduser.id, password }).catch(console.error)
|
|
866
950
|
await enduserSDK.authenticate(email, password).catch(console.error)
|
|
867
951
|
|
|
868
952
|
for (const n in schema) {
|
|
@@ -941,6 +1025,20 @@ const enduserAccessTests = async () => {
|
|
|
941
1025
|
await sdk.api.endusers.deleteOne(enduser.id)
|
|
942
1026
|
}
|
|
943
1027
|
|
|
1028
|
+
const files_tests = async () => {
|
|
1029
|
+
const buff = buffer.Buffer.from('test file data')
|
|
1030
|
+
|
|
1031
|
+
const { presignedUpload, file } = await sdk.api.files.prepare_file_upload({
|
|
1032
|
+
name: 'Test File', size: buff.byteLength, type: 'text/plain'
|
|
1033
|
+
})
|
|
1034
|
+
await sdk.UPLOAD(presignedUpload, undefined, buff as any)
|
|
1035
|
+
|
|
1036
|
+
const { downloadURL } = await sdk.api.files.file_download_URL({ secureName: file.secureName })
|
|
1037
|
+
const downloaded: string = await sdk.DOWNLOAD(downloadURL)
|
|
1038
|
+
|
|
1039
|
+
assert(downloaded === buff.toString(), 'downloaded file does not match uploaded file', 'upload, download comparison')
|
|
1040
|
+
}
|
|
1041
|
+
|
|
944
1042
|
const tests: { [K in keyof ClientModelForName]: () => void } = {
|
|
945
1043
|
chats: chat_tests,
|
|
946
1044
|
endusers: enduser_tests,
|
|
@@ -953,9 +1051,10 @@ const tests: { [K in keyof ClientModelForName]: () => void } = {
|
|
|
953
1051
|
chat_rooms: chat_room_tests,
|
|
954
1052
|
users: () => {},
|
|
955
1053
|
templates: () => {},
|
|
956
|
-
files:
|
|
1054
|
+
files: files_tests,
|
|
957
1055
|
tickets: () => {},
|
|
958
1056
|
meetings: () => {},
|
|
1057
|
+
notes: () => {},
|
|
959
1058
|
};
|
|
960
1059
|
|
|
961
1060
|
(async () => {
|
|
@@ -970,6 +1069,7 @@ const tests: { [K in keyof ClientModelForName]: () => void } = {
|
|
|
970
1069
|
await updatesTests()
|
|
971
1070
|
await threadKeyTests()
|
|
972
1071
|
await enduserAccessTests()
|
|
1072
|
+
await generateEnduserAuthTests()
|
|
973
1073
|
} catch(err) {
|
|
974
1074
|
console.error("Failed during custom test")
|
|
975
1075
|
console.error(err)
|