@tellescope/sdk 1.242.7 → 1.242.9

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.
@@ -14384,10 +14384,10 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14384
14384
  switch (_b.label) {
14385
14385
  case 0:
14386
14386
  (0, testing_1.log_header)("Inbox Thread Building Tests");
14387
- return [4 /*yield*/, sdk.api.endusers.createOne({})];
14387
+ return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'Alice', lname: 'Wonderland' })];
14388
14388
  case 1:
14389
14389
  e = _b.sent();
14390
- return [4 /*yield*/, sdk.api.endusers.createOne({})];
14390
+ return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'Bob', lname: 'Builder' })];
14391
14391
  case 2:
14392
14392
  e2 = _b.sent();
14393
14393
  deleteBuiltThreads = function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -14512,17 +14512,51 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14512
14512
  && threads.some(function (t) { var _a; return t.type === 'Phone' && t.threadId === call.id && !(0, utilities_1.object_is_empty)((_a = t.readBy) !== null && _a !== void 0 ? _a : {}); })
14513
14513
  && threads.some(function (t) { var _a; return t.type === 'Chat' && t.threadId === room.id && !(0, utilities_1.object_is_empty)((_a = t.readBy) !== null && _a !== void 0 ? _a : {}); })
14514
14514
  && !threads.some(function (t) { return t.outboundPreview || t.outboundTimestamp; }));
14515
- } })];
14515
+ } })
14516
+ // searchKeywords population tests
14517
+ ];
14516
14518
  case 14:
14517
14519
  _b.sent();
14518
- return [4 /*yield*/, resetThreadBuildingDates()];
14520
+ // searchKeywords population tests
14521
+ return [4 /*yield*/, (0, testing_1.async_test)('built threads have searchKeywords from enduser names', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14522
+ var threads = _a.threads;
14523
+ var eThreads = threads.filter(function (t) { return t.enduserIds.includes(e.id); });
14524
+ return eThreads.length === 5
14525
+ && eThreads.every(function (t) {
14526
+ return !!t.searchKeywords
14527
+ && t.searchKeywords.includes('alice')
14528
+ && t.searchKeywords.includes('wonderland')
14529
+ && t.searchKeywords.length === 2;
14530
+ } // fname, lname - no duplicates
14531
+ );
14532
+ } })
14533
+ // search by enduser name (via searchKeywords)
14534
+ ];
14519
14535
  case 15:
14536
+ // searchKeywords population tests
14537
+ _b.sent();
14538
+ // search by enduser name (via searchKeywords)
14539
+ return [4 /*yield*/, (0, testing_1.async_test)('search by enduser first name finds threads', function () { return sdk.api.inbox_threads.load_threads({ search: 'Alice' }); }, { onResult: function (_a) {
14540
+ var threads = _a.threads;
14541
+ return threads.length === 5 && threads.every(function (t) { return t.enduserIds.includes(e.id); });
14542
+ } })];
14543
+ case 16:
14544
+ // search by enduser name (via searchKeywords)
14545
+ _b.sent();
14546
+ return [4 /*yield*/, (0, testing_1.async_test)('search by enduser last name finds threads', function () { return sdk.api.inbox_threads.load_threads({ search: 'Wonderland' }); }, { onResult: function (_a) {
14547
+ var threads = _a.threads;
14548
+ return threads.length === 5 && threads.every(function (t) { return t.enduserIds.includes(e.id); });
14549
+ } })];
14550
+ case 17:
14551
+ _b.sent();
14552
+ return [4 /*yield*/, resetThreadBuildingDates()];
14553
+ case 18:
14520
14554
  _b.sent();
14521
14555
  return [4 /*yield*/, (0, testing_1.async_test)('re-build initial 1-message threads', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
14522
14556
  var alreadyBuilt = _a.alreadyBuilt;
14523
14557
  return !alreadyBuilt;
14524
14558
  } })];
14525
- case 16:
14559
+ case 19:
14526
14560
  _b.sent();
14527
14561
  return [4 /*yield*/, (0, testing_1.async_test)('re-load threads with no duplication for same messages', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14528
14562
  var threads = _a.threads;
@@ -14530,14 +14564,14 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14530
14564
  } })
14531
14565
  // test adding separate threads for the first enduser
14532
14566
  ];
14533
- case 17:
14567
+ case 20:
14534
14568
  _b.sent();
14535
14569
  beforeSecondThreads = new Date();
14536
14570
  return [4 /*yield*/, sdk.api.emails.createOne(__assign(__assign({}, defaultEmail), { enduserId: e.id, subject: "Different email subject", messageId: 'other-email' }))];
14537
- case 18:
14571
+ case 21:
14538
14572
  email2 = _b.sent();
14539
14573
  return [4 /*yield*/, sdk.api.sms_messages.createOne(__assign(__assign({}, defaultSMS), { enduserId: e.id, enduserPhoneNumber: "+15555555550" }))];
14540
- case 19:
14574
+ case 22:
14541
14575
  sms2 = _b.sent();
14542
14576
  return [4 /*yield*/, sdk.api.group_mms_conversations.createOne({
14543
14577
  enduserIds: [e.id],
@@ -14550,19 +14584,19 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14550
14584
  logOnly: true,
14551
14585
  }],
14552
14586
  })];
14553
- case 20:
14587
+ case 23:
14554
14588
  groupMMS2 = _b.sent();
14555
14589
  return [4 /*yield*/, sdk.api.phone_calls.createOne({ enduserId: e.id, inbound: true, isVoicemail: true, from: '+15555555554', to: '+15555555550' })];
14556
- case 21:
14590
+ case 24:
14557
14591
  call2 = _b.sent();
14558
14592
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ enduserIds: [e.id], userIds: [], title: 'Thread Build Chat Room Alt', recentMessageSentAt: Date.now() })];
14559
- case 22:
14593
+ case 25:
14560
14594
  room2 = _b.sent();
14561
14595
  return [4 /*yield*/, (0, testing_1.async_test)('build new 1-message threads for original enduser', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
14562
14596
  var alreadyBuilt = _a.alreadyBuilt;
14563
14597
  return !alreadyBuilt;
14564
14598
  } })];
14565
- case 23:
14599
+ case 26:
14566
14600
  _b.sent();
14567
14601
  return [4 /*yield*/, (0, testing_1.async_test)('load new threads for original enduser', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14568
14602
  var threads = _a.threads;
@@ -14571,14 +14605,14 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14571
14605
  } })
14572
14606
  // ensure new threads created for other enduser
14573
14607
  ];
14574
- case 24:
14608
+ case 27:
14575
14609
  _b.sent();
14576
14610
  beforeSecondEnduserThreads = new Date();
14577
14611
  return [4 /*yield*/, sdk.api.emails.createOne(__assign(__assign({}, defaultEmail), { enduserId: e2.id }))];
14578
- case 25:
14612
+ case 28:
14579
14613
  e2_email = _b.sent();
14580
14614
  return [4 /*yield*/, sdk.api.sms_messages.createOne(__assign(__assign({}, defaultSMS), { enduserId: e2.id }))];
14581
- case 26:
14615
+ case 29:
14582
14616
  e2_sms = _b.sent();
14583
14617
  return [4 /*yield*/, sdk.api.group_mms_conversations.createOne({
14584
14618
  enduserIds: [e2.id],
@@ -14591,42 +14625,58 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14591
14625
  logOnly: true,
14592
14626
  }],
14593
14627
  })];
14594
- case 27:
14628
+ case 30:
14595
14629
  e2_groupMMS = _b.sent();
14596
14630
  return [4 /*yield*/, sdk.api.phone_calls.createOne({ enduserId: e2.id, inbound: true, isVoicemail: true, from: '+15555555554', to: '+15555555555' })];
14597
- case 28:
14631
+ case 31:
14598
14632
  e2_call = _b.sent();
14599
14633
  return [4 /*yield*/, sdk.api.chat_rooms.createOne({ enduserIds: [e2.id], userIds: [], title: 'Thread Build Chat Room 2' })];
14600
- case 29:
14634
+ case 32:
14601
14635
  e2_room = _b.sent();
14602
14636
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: e2_room.id, message: 'test', enduserId: e2.id, senderId: e2.id })];
14603
- case 30:
14637
+ case 33:
14604
14638
  _b.sent();
14605
14639
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow for recentMessageTimestamp to be set to indicate inbound chat in chat room
14606
- case 31:
14640
+ case 34:
14607
14641
  _b.sent(); // allow for recentMessageTimestamp to be set to indicate inbound chat in chat room
14608
14642
  return [4 /*yield*/, (0, testing_1.async_test)('build initial 1-message threads for other enduser', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
14609
14643
  var alreadyBuilt = _a.alreadyBuilt;
14610
14644
  return !alreadyBuilt;
14611
14645
  } })];
14612
- case 32:
14646
+ case 35:
14613
14647
  _b.sent();
14614
14648
  return [4 /*yield*/, (0, testing_1.async_test)('loads threads with no duplication across endusers', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14615
14649
  var threads = _a.threads;
14616
14650
  return (threads.length === 15
14617
14651
  && threads.filter(function (t) { return t.enduserIds.length === 1 && t.enduserIds.includes(e.id); }).length === 10
14618
14652
  && threads.filter(function (t) { return t.enduserIds.length === 1 && t.enduserIds.includes(e2.id); }).length === 5);
14653
+ } })
14654
+ // verify second enduser's threads also have correct searchKeywords
14655
+ ];
14656
+ case 36:
14657
+ _b.sent();
14658
+ // verify second enduser's threads also have correct searchKeywords
14659
+ return [4 /*yield*/, (0, testing_1.async_test)('second enduser threads have searchKeywords from enduser names', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14660
+ var threads = _a.threads;
14661
+ var e2Threads = threads.filter(function (t) { return t.enduserIds.includes(e2.id); });
14662
+ return e2Threads.length === 5
14663
+ && e2Threads.every(function (t) {
14664
+ return !!t.searchKeywords
14665
+ && t.searchKeywords.includes('bob')
14666
+ && t.searchKeywords.includes('builder');
14667
+ });
14619
14668
  } })];
14620
- case 33:
14669
+ case 37:
14670
+ // verify second enduser's threads also have correct searchKeywords
14621
14671
  _b.sent();
14622
14672
  return [4 /*yield*/, resetThreadBuildingDates()];
14623
- case 34:
14673
+ case 38:
14624
14674
  _b.sent();
14625
14675
  return [4 /*yield*/, (0, testing_1.async_test)('re-build initial 1-message threads for other enduser', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
14626
14676
  var alreadyBuilt = _a.alreadyBuilt;
14627
14677
  return !alreadyBuilt;
14628
14678
  } })];
14629
- case 35:
14679
+ case 39:
14630
14680
  _b.sent();
14631
14681
  return [4 /*yield*/, (0, testing_1.async_test)('re-load threads with no duplication across endusers', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14632
14682
  var threads = _a.threads;
@@ -14640,14 +14690,14 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14640
14690
  } })
14641
14691
  // test adding separate threads for the first enduser
14642
14692
  ];
14643
- case 36:
14693
+ case 40:
14644
14694
  _b.sent();
14645
14695
  beforeReplies = new Date();
14646
14696
  return [4 /*yield*/, sdk.api.emails.createOne(__assign(__assign({}, defaultEmail), { textContent: 'reply!', enduserId: e.id }))];
14647
- case 37:
14697
+ case 41:
14648
14698
  emailReply = _b.sent();
14649
14699
  return [4 /*yield*/, sdk.api.sms_messages.createOne(__assign(__assign({}, defaultSMS), { enduserId: e.id, message: 'reply!' }))];
14650
- case 38:
14700
+ case 42:
14651
14701
  smsReply = _b.sent();
14652
14702
  return [4 /*yield*/, sdk.api.group_mms_conversations.send_message({
14653
14703
  logOnly: true,
@@ -14655,16 +14705,16 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14655
14705
  message: 'reply!',
14656
14706
  sender: e.id,
14657
14707
  })];
14658
- case 39:
14708
+ case 43:
14659
14709
  _b.sent();
14660
14710
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: 'reply!', enduserId: e.id, senderId: e.id })];
14661
- case 40:
14711
+ case 44:
14662
14712
  chatReply = _b.sent();
14663
14713
  return [4 /*yield*/, (0, testing_1.async_test)('re-build threads with replies', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
14664
14714
  var alreadyBuilt = _a.alreadyBuilt;
14665
14715
  return !alreadyBuilt;
14666
14716
  } })];
14667
- case 41:
14717
+ case 45:
14668
14718
  _b.sent();
14669
14719
  return [4 /*yield*/, (0, testing_1.async_test)('re-load threads with replies included', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14670
14720
  var threads = _a.threads;
@@ -14684,12 +14734,12 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14684
14734
  // test older messages being ignored
14685
14735
  // filter phone calls since those always create new threads
14686
14736
  ];
14687
- case 42:
14737
+ case 46:
14688
14738
  _b.sent();
14689
14739
  // test older messages being ignored
14690
14740
  // filter phone calls since those always create new threads
14691
14741
  return [4 /*yield*/, resetThreadsAndDates()];
14692
- case 43:
14742
+ case 47:
14693
14743
  // test older messages being ignored
14694
14744
  // filter phone calls since those always create new threads
14695
14745
  _b.sent();
@@ -14697,19 +14747,19 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14697
14747
  var alreadyBuilt = _a.alreadyBuilt;
14698
14748
  return !alreadyBuilt;
14699
14749
  } })];
14700
- case 44:
14750
+ case 48:
14701
14751
  _b.sent();
14702
14752
  return [4 /*yield*/, sdk.api.inbox_threads.load_threads({})];
14703
- case 45:
14753
+ case 49:
14704
14754
  newlyBuilt = (_b.sent()).threads.filter(function (v) { return v.type !== 'Phone'; });
14705
14755
  return [4 /*yield*/, (0, testing_1.async_test)('re-build threads inclusive of initial set', function () { return sdk.api.inbox_threads.build_threads({ from: start, to: new Date() }); }, { onResult: function (_a) {
14706
14756
  var alreadyBuilt = _a.alreadyBuilt;
14707
14757
  return !alreadyBuilt;
14708
14758
  } })];
14709
- case 46:
14759
+ case 50:
14710
14760
  _b.sent();
14711
14761
  return [4 /*yield*/, sdk.api.inbox_threads.load_threads({})];
14712
- case 47:
14762
+ case 51:
14713
14763
  threadsWithOlderLoad = (_b.sent()).threads.filter(function (v) { return v.type !== 'Phone'; });
14714
14764
  (0, testing_1.assert)((0, utilities_2.objects_equivalent)(newlyBuilt, threadsWithOlderLoad), 'old threads included somehow', 'old messages ignored in new threads');
14715
14765
  return [4 /*yield*/, (0, testing_1.async_test)('re-run previous test on all-threads to make sure staged build order doesnt effect final result', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
@@ -14731,13 +14781,13 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14731
14781
  } })
14732
14782
  // test adding OUTBOUND messages for the first enduser
14733
14783
  ];
14734
- case 48:
14784
+ case 52:
14735
14785
  _b.sent();
14736
14786
  return [4 /*yield*/, sdk.api.emails.createOne(__assign(__assign({}, defaultEmail), { inbound: false, textContent: 'outbound reply!', enduserId: e.id }))];
14737
- case 49:
14787
+ case 53:
14738
14788
  emailReplyOutbound = _b.sent();
14739
14789
  return [4 /*yield*/, sdk.api.sms_messages.createOne(__assign(__assign({}, defaultSMS), { inbound: false, enduserId: e.id, message: 'outbound reply!' }))];
14740
- case 50:
14790
+ case 54:
14741
14791
  smsReplyOutbound = _b.sent();
14742
14792
  return [4 /*yield*/, sdk.api.group_mms_conversations.send_message({
14743
14793
  logOnly: true,
@@ -14745,19 +14795,19 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14745
14795
  message: 'outbound reply!',
14746
14796
  sender: sdk.userInfo.id,
14747
14797
  })];
14748
- case 51:
14798
+ case 55:
14749
14799
  _b.sent();
14750
14800
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, message: 'outbound reply!', senderId: sdk.userInfo.id })];
14751
- case 52:
14801
+ case 56:
14752
14802
  chatOutboundReply = _b.sent();
14753
14803
  return [4 /*yield*/, sdk.api.phone_calls.createOne({ readBy: readBy, enduserId: e.id, inbound: false, isVoicemail: true, from: '+15555555554', to: '+15555555555' })];
14754
- case 53:
14804
+ case 57:
14755
14805
  outboundCall = _b.sent();
14756
14806
  return [4 /*yield*/, (0, testing_1.async_test)('re-build with outbound threads', function () { return sdk.api.inbox_threads.build_threads({ from: start, to: new Date() }); }, { onResult: function (_a) {
14757
14807
  var alreadyBuilt = _a.alreadyBuilt;
14758
14808
  return !alreadyBuilt;
14759
14809
  } })];
14760
- case 54:
14810
+ case 58:
14761
14811
  _b.sent();
14762
14812
  return [4 /*yield*/, (0, testing_1.async_test)('Test outbound timestamp and preview', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14763
14813
  var threads = _a.threads;
@@ -14773,7 +14823,7 @@ var inbox_threads_building_tests = function () { return __awaiter(void 0, void 0
14773
14823
  .length === 4 // all channels except call
14774
14824
  );
14775
14825
  } })];
14776
- case 55:
14826
+ case 59:
14777
14827
  _b.sent();
14778
14828
  return [2 /*return*/, Promise.all([
14779
14829
  sdk.api.endusers.deleteOne(e.id),
@@ -14875,20 +14925,48 @@ var inbox_threads_loading_tests = function () { return __awaiter(void 0, void 0,
14875
14925
  var threads = _a.threads;
14876
14926
  return threads.length === 2;
14877
14927
  } })
14878
- // adding to care team of e2 who belongs to only the phone thread
14928
+ // search parameter tests
14879
14929
  ];
14880
14930
  case 12:
14931
+ _g.sent();
14932
+ // search parameter tests
14933
+ return [4 /*yield*/, (0, testing_1.async_test)('search by title', function () { return sdk.api.inbox_threads.load_threads({ search: 'Email' }); }, { onResult: function (_a) {
14934
+ var threads = _a.threads;
14935
+ return threads.length === 1 && threads[0].type === 'Email';
14936
+ } })];
14937
+ case 13:
14938
+ // search parameter tests
14939
+ _g.sent();
14940
+ return [4 /*yield*/, (0, testing_1.async_test)('search by preview matches all threads', function () { return sdk.api.inbox_threads.load_threads({ search: 'Test' }); }, { onResult: function (_a) {
14941
+ var threads = _a.threads;
14942
+ return threads.length === 5;
14943
+ } })];
14944
+ case 14:
14945
+ _g.sent();
14946
+ return [4 /*yield*/, (0, testing_1.async_test)('search with no match returns empty', function () { return sdk.api.inbox_threads.load_threads({ search: 'zzzznonexistent' }); }, { onResult: function (_a) {
14947
+ var threads = _a.threads;
14948
+ return threads.length === 0;
14949
+ } })];
14950
+ case 15:
14951
+ _g.sent();
14952
+ return [4 /*yield*/, (0, testing_1.async_test)('short search (< 3 chars) returns unfiltered results', function () { return sdk.api.inbox_threads.load_threads({ search: 'ab' }); }, { onResult: function (_a) {
14953
+ var threads = _a.threads;
14954
+ return threads.length === 5;
14955
+ } })
14956
+ // adding to care team of e2 who belongs to only the phone thread
14957
+ ];
14958
+ case 16:
14881
14959
  _g.sent();
14882
14960
  // adding to care team of e2 who belongs to only the phone thread
14883
14961
  return [4 /*yield*/, sdk.api.endusers.updateOne(e2.id, { assignedTo: [sdkNonAdmin.userInfo.id] }, { replaceObjectFields: true })
14884
14962
  // assign (default access) to sms thread
14885
14963
  ];
14886
- case 13:
14964
+ case 17:
14887
14965
  // adding to care team of e2 who belongs to only the phone thread
14888
14966
  _g.sent();
14889
14967
  // assign (default access) to sms thread
14890
14968
  return [4 /*yield*/, sdk.api.inbox_threads.updateOne(sms.id, { userIds: [sdkNonAdmin.userInfo.id] }, { replaceObjectFields: true })];
14891
- case 14:
14969
+ case 18:
14892
14970
  // assign (default access) to sms thread
14893
14971
  _g.sent();
14894
14972
  return [4 /*yield*/, (0, testing_1.async_test)('non-admin can load threads based on assignment/default access', function () { return sdkNonAdmin.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
@@ -14898,30 +14976,39 @@ var inbox_threads_loading_tests = function () { return __awaiter(void 0, void 0,
14898
14976
  && threads.some(function (t) { return t.id === sms.id; });
14899
14977
  }
14900
14978
  })];
14901
- case 15:
14979
+ case 19:
14980
+ _g.sent();
14981
+ return [4 /*yield*/, (0, testing_1.async_test)('assigned access search still respects access control', function () { return sdkNonAdmin.api.inbox_threads.load_threads({ search: 'Test' }); }, { onResult: function (_a) {
14982
+ var threads = _a.threads;
14983
+ return threads.length === 2
14984
+ && threads.some(function (t) { return t.id === phone.id; })
14985
+ && threads.some(function (t) { return t.id === sms.id; });
14986
+ }
14987
+ })];
14988
+ case 20:
14902
14989
  _g.sent();
14903
14990
  roleTestUserEmail = 'inbox.role.test@tellescope.com';
14904
14991
  return [4 /*yield*/, sdk.api.users.getOne({ email: roleTestUserEmail }).catch(function () { return null; })]; // throws error on none found
14905
- case 16:
14992
+ case 21:
14906
14993
  _a = (_g.sent() // throws error on none found
14907
14994
  );
14908
- if (_a) return [3 /*break*/, 18];
14995
+ if (_a) return [3 /*break*/, 23];
14909
14996
  return [4 /*yield*/, sdk.api.users.createOne({ email: roleTestUserEmail })];
14910
- case 17:
14997
+ case 22:
14911
14998
  _a = (_g.sent());
14912
- _g.label = 18;
14913
- case 18:
14999
+ _g.label = 23;
15000
+ case 23:
14914
15001
  roleTestUser = _a;
14915
15002
  // add to care team to ensure this doesn't grant unexpected access
14916
15003
  return [4 /*yield*/, sdk.api.endusers.updateOne(e2.id, { assignedTo: [roleTestUser.id] })
14917
15004
  // assign (default access) to sms thread to ensure no unexpected access
14918
15005
  ];
14919
- case 19:
15006
+ case 24:
14920
15007
  // add to care team to ensure this doesn't grant unexpected access
14921
15008
  _g.sent();
14922
15009
  // assign (default access) to sms thread to ensure no unexpected access
14923
15010
  return [4 /*yield*/, sdk.api.inbox_threads.updateOne(sms.id, { userIds: [roleTestUser.id] }, { replaceObjectFields: true })];
14924
- case 20:
15011
+ case 25:
14925
15012
  // assign (default access) to sms thread to ensure no unexpected access
14926
15013
  _g.sent();
14927
15014
  return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
@@ -14937,30 +15024,36 @@ var inbox_threads_loading_tests = function () { return __awaiter(void 0, void 0,
14937
15024
  endusers: { read: 'Default', create: 'Default', update: 'Default', delete: 'Default' },
14938
15025
  },
14939
15026
  })];
14940
- case 21:
15027
+ case 26:
14941
15028
  defaultAccessRole = _g.sent();
14942
15029
  return [4 /*yield*/, sdk.api.users.updateOne(roleTestUser.id, { roles: [defaultAccessRole.role] }, { replaceObjectFields: true })];
14943
- case 22:
15030
+ case 27:
14944
15031
  _g.sent();
14945
15032
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 2000)]; // role change triggers a logout
14946
- case 23:
15033
+ case 28:
14947
15034
  _g.sent(); // role change triggers a logout
14948
15035
  _b = sdk_1.Session.bind;
14949
15036
  _d = {
14950
15037
  host: host
14951
15038
  };
14952
15039
  return [4 /*yield*/, sdk.api.users.generate_auth_token({ id: roleTestUser.id })];
14953
- case 24:
15040
+ case 29:
14954
15041
  sdkDefaultAccess = new (_b.apply(sdk_1.Session, [void 0, (_d.authToken = (_g.sent()).authToken,
14955
15042
  _d)]))();
14956
15043
  return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated (default access)', sdkDefaultAccess.test_authenticated, { expectedResult: 'Authenticated!' })];
14957
- case 25:
15044
+ case 30:
14958
15045
  _g.sent();
14959
15046
  return [4 /*yield*/, (0, testing_1.async_test)('non-admin default role', function () { return sdkDefaultAccess.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14960
15047
  var threads = _a.threads;
14961
15048
  return threads.length === 1 && threads.some(function (t) { return t.id === sms.id; });
14962
15049
  } })];
14963
- case 26:
15050
+ case 31:
15051
+ _g.sent();
15052
+ return [4 /*yield*/, (0, testing_1.async_test)('default access search still respects access control', function () { return sdkDefaultAccess.api.inbox_threads.load_threads({ search: 'Test' }); }, { onResult: function (_a) {
15053
+ var threads = _a.threads;
15054
+ return threads.length === 1 && threads.some(function (t) { return t.id === sms.id; });
15055
+ } })];
15056
+ case 32:
14964
15057
  _g.sent();
14965
15058
  return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
14966
15059
  role: 'No Access',
@@ -14978,48 +15071,54 @@ var inbox_threads_loading_tests = function () { return __awaiter(void 0, void 0,
14978
15071
  })
14979
15072
  // ensure role is set, in case GET returned a user without a role or with a different role
14980
15073
  ];
14981
- case 27:
15074
+ case 33:
14982
15075
  noAccessRole = _g.sent();
14983
15076
  // ensure role is set, in case GET returned a user without a role or with a different role
14984
15077
  return [4 /*yield*/, sdk.api.users.updateOne(roleTestUser.id, { roles: [noAccessRole.role] }, { replaceObjectFields: true })];
14985
- case 28:
15078
+ case 34:
14986
15079
  // ensure role is set, in case GET returned a user without a role or with a different role
14987
15080
  _g.sent();
14988
15081
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 2000)]; // role change triggers a logout
14989
- case 29:
15082
+ case 35:
14990
15083
  _g.sent(); // role change triggers a logout
14991
15084
  _c = sdk_1.Session.bind;
14992
15085
  _f = {
14993
15086
  host: host
14994
15087
  };
14995
15088
  return [4 /*yield*/, sdk.api.users.generate_auth_token({ id: roleTestUser.id })];
14996
- case 30:
15089
+ case 36:
14997
15090
  sdkNoAccess = new (_c.apply(sdk_1.Session, [void 0, (_f.authToken = (_g.sent()).authToken,
14998
15091
  _f)]))();
14999
15092
  return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated (no access)', sdkNoAccess.test_authenticated, { expectedResult: 'Authenticated!' })];
15000
- case 31:
15093
+ case 37:
15001
15094
  _g.sent();
15002
15095
  return [4 /*yield*/, (0, testing_1.async_test)('verify no-read on direct API call', sdkNoAccess.api.emails.getSome, testing_1.handleAnyError)]; // ensures role is set up correctly
15003
- case 32:
15096
+ case 38:
15004
15097
  _g.sent(); // ensures role is set up correctly
15005
15098
  return [4 /*yield*/, (0, testing_1.async_test)("No access reads nothing", function () { return sdkNoAccess.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
15006
15099
  var threads = _a.threads;
15007
15100
  return threads.length === 0;
15101
+ } })];
15102
+ case 39:
15103
+ _g.sent();
15104
+ return [4 /*yield*/, (0, testing_1.async_test)("No access reads nothing even with search", function () { return sdkNoAccess.api.inbox_threads.load_threads({ search: 'Test' }); }, { onResult: function (_a) {
15105
+ var threads = _a.threads;
15106
+ return threads.length === 0;
15008
15107
  } })
15009
15108
  // Update existing threads with phone numbers for phoneNumber filtering tests
15010
15109
  ];
15011
- case 33:
15110
+ case 40:
15012
15111
  _g.sent();
15013
15112
  // Update existing threads with phone numbers for phoneNumber filtering tests
15014
15113
  return [4 /*yield*/, sdk.api.inbox_threads.updateOne(sms.id, { phoneNumber: '+15555555555' })];
15015
- case 34:
15114
+ case 41:
15016
15115
  // Update existing threads with phone numbers for phoneNumber filtering tests
15017
15116
  _g.sent();
15018
15117
  return [4 /*yield*/, sdk.api.inbox_threads.updateOne(phone.id, { phoneNumber: '+15555555555' })];
15019
- case 35:
15118
+ case 42:
15020
15119
  _g.sent();
15021
15120
  return [4 /*yield*/, sdk.api.inbox_threads.createOne(__assign(__assign({}, defaultThreadFields), { title: 'Phone 2', type: 'Phone', threadId: '6', phoneNumber: '+15555555556' }))];
15022
- case 36:
15121
+ case 43:
15023
15122
  phoneThread2 = _g.sent();
15024
15123
  return [4 /*yield*/, (0, testing_1.async_test)('admin phoneNumber filter - SMS and Phone threads only', function () { return sdk.api.inbox_threads.load_threads({ phoneNumber: '+15555555555' }); }, { onResult: function (_a) {
15025
15124
  var threads = _a.threads;
@@ -15029,7 +15128,7 @@ var inbox_threads_loading_tests = function () { return __awaiter(void 0, void 0,
15029
15128
  && threads.every(function (t) { return t.type === 'SMS' || t.type === 'Phone'; });
15030
15129
  }
15031
15130
  })];
15032
- case 37:
15131
+ case 44:
15033
15132
  _g.sent();
15034
15133
  return [4 /*yield*/, (0, testing_1.async_test)('admin phoneNumber filter - different phone number', function () { return sdk.api.inbox_threads.load_threads({ phoneNumber: '+15555555556' }); }, { onResult: function (_a) {
15035
15134
  var threads = _a.threads;
@@ -15038,13 +15137,26 @@ var inbox_threads_loading_tests = function () { return __awaiter(void 0, void 0,
15038
15137
  && threads[0].phoneNumber === '+15555555556';
15039
15138
  }
15040
15139
  })];
15041
- case 38:
15140
+ case 45:
15042
15141
  _g.sent();
15043
15142
  return [4 /*yield*/, (0, testing_1.async_test)('admin phoneNumber filter - non-existent phone number', function () { return sdk.api.inbox_threads.load_threads({ phoneNumber: '+15555555999' }); }, { onResult: function (_a) {
15044
15143
  var threads = _a.threads;
15045
15144
  return threads.length === 0;
15046
- } })];
15047
- case 39:
15145
+ } })
15146
+ // search by phone number (uses regex on phoneNumber/enduserPhoneNumber fields)
15147
+ ];
15148
+ case 46:
15149
+ _g.sent();
15150
+ // search by phone number (uses regex on phoneNumber/enduserPhoneNumber fields)
15151
+ return [4 /*yield*/, (0, testing_1.async_test)('search by phone number', function () { return sdk.api.inbox_threads.load_threads({ search: '+15555555555' }); }, { onResult: function (_a) {
15152
+ var threads = _a.threads;
15153
+ return threads.length >= 2
15154
+ && threads.some(function (t) { return t.type === 'SMS'; })
15155
+ && threads.some(function (t) { return t.type === 'Phone'; });
15156
+ }
15157
+ })];
15158
+ case 47:
15159
+ // search by phone number (uses regex on phoneNumber/enduserPhoneNumber fields)
15048
15160
  _g.sent();
15049
15161
  return [4 /*yield*/, Promise.all(__spreadArray(__spreadArray([
15050
15162
  sdk.api.endusers.deleteOne(e1.id),
@@ -15055,7 +15167,7 @@ var inbox_threads_loading_tests = function () { return __awaiter(void 0, void 0,
15055
15167
  ], threads.map(function (t) { return sdk.api.inbox_threads.deleteOne(t.id); }), true), [
15056
15168
  sdk.api.inbox_threads.deleteOne(phoneThread2.id),
15057
15169
  ], false))];
15058
- case 40:
15170
+ case 48:
15059
15171
  _g.sent();
15060
15172
  return [2 /*return*/];
15061
15173
  }