@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.
Files changed (44) hide show
  1. package/lib/cjs/enduser.d.ts +29 -3
  2. package/lib/cjs/enduser.d.ts.map +1 -1
  3. package/lib/cjs/enduser.js +1 -1
  4. package/lib/cjs/enduser.js.map +1 -1
  5. package/lib/cjs/sdk.d.ts +56 -11
  6. package/lib/cjs/sdk.d.ts.map +1 -1
  7. package/lib/cjs/sdk.js +6 -3
  8. package/lib/cjs/sdk.js.map +1 -1
  9. package/lib/cjs/session.d.ts +1 -0
  10. package/lib/cjs/session.d.ts.map +1 -1
  11. package/lib/cjs/session.js +11 -0
  12. package/lib/cjs/session.js.map +1 -1
  13. package/lib/cjs/tests/public_endpoint_tests.js +3 -3
  14. package/lib/cjs/tests/public_endpoint_tests.js.map +1 -1
  15. package/lib/cjs/tests/socket_tests.js +1 -1
  16. package/lib/cjs/tests/socket_tests.js.map +1 -1
  17. package/lib/cjs/tests/tests.js +161 -32
  18. package/lib/cjs/tests/tests.js.map +1 -1
  19. package/lib/esm/enduser.d.ts +29 -3
  20. package/lib/esm/enduser.d.ts.map +1 -1
  21. package/lib/esm/enduser.js +1 -1
  22. package/lib/esm/enduser.js.map +1 -1
  23. package/lib/esm/sdk.d.ts +56 -11
  24. package/lib/esm/sdk.d.ts.map +1 -1
  25. package/lib/esm/sdk.js +6 -3
  26. package/lib/esm/sdk.js.map +1 -1
  27. package/lib/esm/session.d.ts +1 -0
  28. package/lib/esm/session.d.ts.map +1 -1
  29. package/lib/esm/session.js +11 -0
  30. package/lib/esm/session.js.map +1 -1
  31. package/lib/esm/tests/public_endpoint_tests.js +3 -3
  32. package/lib/esm/tests/public_endpoint_tests.js.map +1 -1
  33. package/lib/esm/tests/socket_tests.js +1 -1
  34. package/lib/esm/tests/socket_tests.js.map +1 -1
  35. package/lib/esm/tests/tests.js +142 -32
  36. package/lib/esm/tests/tests.js.map +1 -1
  37. package/lib/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +10 -10
  39. package/src/enduser.ts +2 -2
  40. package/src/sdk.ts +17 -7
  41. package/src/session.ts +5 -0
  42. package/src/tests/public_endpoint_tests.ts +3 -3
  43. package/src/tests/socket_tests.ts +1 -1
  44. package/src/tests/tests.ts +106 -6
@@ -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.updateState({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' }}),
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
- sdk.api.chat_rooms.deleteOne(room.id)
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.setPassword({ id: enduser.id, password }).catch(console.error)
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)