@tellescope/sdk 0.0.91 → 0.0.94

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.
@@ -471,7 +471,7 @@ var verify_missing_defaults = function (_a) {
471
471
  o = _b[_i];
472
472
  if (Object.keys(model.defaultActions).includes(o) || model.customActions[o])
473
473
  return [3 /*break*/, 3]; // action is implemented
474
- return [4 /*yield*/, async_test("".concat(o, " unavailable for ").concat(name), function () { return queryForOperation[o](); }, { shouldError: true, onError: function (e) { return e.message === 'This action is not allowed'; } })];
474
+ return [4 /*yield*/, async_test("".concat(o, " unavailable for ").concat(name), function () { return queryForOperation[o](); }, { shouldError: true, onError: function (e) { return e.message === 'This action is not allowed' || e.message === 'Inaccessible'; } })];
475
475
  case 2:
476
476
  _d.sent();
477
477
  _d.label = 3;
@@ -1587,7 +1587,7 @@ var automation_events_tests = function () { return __awaiter(void 0, void 0, voi
1587
1587
  })];
1588
1588
  case 2:
1589
1589
  journey = _j.sent();
1590
- return [4 /*yield*/, async_test("enterState cannot match updateStateForJourney", function () { return sdk.api.event_automations.createOne({
1590
+ return [4 /*yield*/, async_test("enterState cannot match updateStateForJourney", function () { return sdk.api.automation_steps.createOne({
1591
1591
  journeyId: journey.id,
1592
1592
  event: {
1593
1593
  type: "enterState",
@@ -1600,7 +1600,7 @@ var automation_events_tests = function () { return __awaiter(void 0, void 0, voi
1600
1600
  }); }, { shouldError: true, onError: function (e) { return e.message === 'updateStateForJourney cannot have the same journey and state as the enterState event'; } })];
1601
1601
  case 3:
1602
1602
  _j.sent();
1603
- return [4 /*yield*/, async_test("leaveState cannot match updateStateForJourney", function () { return sdk.api.event_automations.createOne({
1603
+ return [4 /*yield*/, async_test("leaveState cannot match updateStateForJourney", function () { return sdk.api.automation_steps.createOne({
1604
1604
  journeyId: journey.id,
1605
1605
  event: {
1606
1606
  type: "leaveState",
@@ -1617,7 +1617,7 @@ var automation_events_tests = function () { return __awaiter(void 0, void 0, voi
1617
1617
  type: 'sendWebhook',
1618
1618
  info: { message: 'test' }
1619
1619
  };
1620
- return [4 /*yield*/, sdk.api.event_automations.createOne({
1620
+ return [4 /*yield*/, sdk.api.automation_steps.createOne({
1621
1621
  journeyId: journey.id,
1622
1622
  event: {
1623
1623
  type: "enterState",
@@ -1627,7 +1627,7 @@ var automation_events_tests = function () { return __awaiter(void 0, void 0, voi
1627
1627
  })];
1628
1628
  case 5:
1629
1629
  _j.sent();
1630
- return [4 /*yield*/, sdk.api.event_automations.createOne({
1630
+ return [4 /*yield*/, sdk.api.automation_steps.createOne({
1631
1631
  journeyId: journey.id,
1632
1632
  event: {
1633
1633
  type: "leaveState",
@@ -1637,7 +1637,7 @@ var automation_events_tests = function () { return __awaiter(void 0, void 0, voi
1637
1637
  })];
1638
1638
  case 6:
1639
1639
  _j.sent();
1640
- return [4 /*yield*/, sdk.api.event_automations.createOne({
1640
+ return [4 /*yield*/, sdk.api.automation_steps.createOne({
1641
1641
  journeyId: journey.id,
1642
1642
  event: {
1643
1643
  type: "enterState",
@@ -1647,7 +1647,7 @@ var automation_events_tests = function () { return __awaiter(void 0, void 0, voi
1647
1647
  })];
1648
1648
  case 7:
1649
1649
  _j.sent();
1650
- return [4 /*yield*/, sdk.api.event_automations.createOne({
1650
+ return [4 /*yield*/, sdk.api.automation_steps.createOne({
1651
1651
  journeyId: journey.id,
1652
1652
  event: {
1653
1653
  type: "formResponse",
@@ -1663,7 +1663,7 @@ var automation_events_tests = function () { return __awaiter(void 0, void 0, voi
1663
1663
  })];
1664
1664
  case 8:
1665
1665
  _j.sent();
1666
- return [4 /*yield*/, async_test("Cannot insert duplicate event/action pair", function () { return sdk.api.event_automations.createOne({
1666
+ return [4 /*yield*/, async_test("Cannot insert duplicate event/action pair", function () { return sdk.api.automation_steps.createOne({
1667
1667
  journeyId: journey.id,
1668
1668
  event: {
1669
1669
  type: "enterState",
@@ -1714,7 +1714,7 @@ var automation_events_tests = function () { return __awaiter(void 0, void 0, voi
1714
1714
  case 15:
1715
1715
  // SHOULD trigger now that user is in state 2
1716
1716
  _j.sent();
1717
- return [4 /*yield*/, async_test("Automation events triggered correctly", function () { return sdk.api.automation_endusers.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (es) { return es && es.length === 4 && es.filter(function (a) { return a.automationId === "ONE_TIME"; }).length === 4; } })
1717
+ return [4 /*yield*/, async_test("Automation events triggered correctly", function () { return sdk.api.automated_actions.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (es) { return es && es.length === 4 && es.filter(function (a) { return a.automationStepId === "ONE_TIME"; }).length === 4; } })
1718
1718
  // cleanup
1719
1719
  ];
1720
1720
  case 16:
@@ -1757,7 +1757,7 @@ var form_response_tests = function () { return __awaiter(void 0, void 0, void 0,
1757
1757
  })];
1758
1758
  case 2:
1759
1759
  form = _e.sent();
1760
- return [4 /*yield*/, sdk.api.event_automations.createOne({
1760
+ return [4 /*yield*/, sdk.api.automation_steps.createOne({
1761
1761
  event: { type: "formResponse", info: { formId: form.id } },
1762
1762
  action: { type: 'sendWebhook', info: { message: 'test' } },
1763
1763
  })];
@@ -1769,7 +1769,7 @@ var form_response_tests = function () { return __awaiter(void 0, void 0, void 0,
1769
1769
  return [4 /*yield*/, sdk.api.form_responses.submit_form_response({ accessCode: accessCode, responses: [stringResponse] })];
1770
1770
  case 5:
1771
1771
  _e.sent();
1772
- return [4 /*yield*/, sdk.api.automation_endusers.getSome()];
1772
+ return [4 /*yield*/, sdk.api.automated_actions.getSome()];
1773
1773
  case 6:
1774
1774
  triggeredAutomation = (_e.sent())[0];
1775
1775
  return [4 /*yield*/, sdk.api.endusers.getOne(enduser.id)];
@@ -1882,6 +1882,193 @@ var notifications_tests = function () { return __awaiter(void 0, void 0, void 0,
1882
1882
  }
1883
1883
  });
1884
1884
  }); };
1885
+ var handleAnyError = { shouldError: true, onError: function () { return true; } };
1886
+ var passOnAnyResult = { onResult: function () { return true; } };
1887
+ var role_based_access_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
1888
+ var adminId, nonAdminId, e, adminTicket, nonAdminTicket, nonAdminTicketNoEnduser, ticketCreatedByNonAdmin, email, sms, calendarEvent, chatRoom, chatMessage, chatMessage2;
1889
+ return __generator(this, function (_a) {
1890
+ switch (_a.label) {
1891
+ case 0:
1892
+ log_header("Role Based Access Tests");
1893
+ adminId = sdk.userInfo.id;
1894
+ nonAdminId = sdkNonAdmin.userInfo.id;
1895
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'roletest@gmail.com' })];
1896
+ case 1:
1897
+ e = _a.sent();
1898
+ return [4 /*yield*/, sdk.api.tickets.createOne({ title: 'ticket', enduserId: e.id, owner: adminId })];
1899
+ case 2:
1900
+ adminTicket = _a.sent();
1901
+ return [4 /*yield*/, sdk.api.tickets.createOne({ title: 'ticket', enduserId: e.id, owner: nonAdminId })];
1902
+ case 3:
1903
+ nonAdminTicket = _a.sent();
1904
+ return [4 /*yield*/, sdk.api.tickets.createOne({ title: 'ticket', owner: nonAdminId })];
1905
+ case 4:
1906
+ nonAdminTicketNoEnduser = _a.sent();
1907
+ return [4 /*yield*/, sdkNonAdmin.api.tickets.createOne({ title: 'ticket' })];
1908
+ case 5:
1909
+ ticketCreatedByNonAdmin = _a.sent();
1910
+ return [4 /*yield*/, sdk.api.emails.createOne({ enduserId: e.id, logOnly: true, subject: 'blah', textContent: 'blah blah' })];
1911
+ case 6:
1912
+ email = _a.sent();
1913
+ return [4 /*yield*/, sdk.api.sms_messages.createOne({ enduserId: e.id, logOnly: true, message: 'blah blah' })];
1914
+ case 7:
1915
+ sms = _a.sent();
1916
+ return [4 /*yield*/, sdk.api.calendar_events.createOne({
1917
+ attendees: [{ id: e.id, type: 'enduser' }],
1918
+ durationInMinutes: 50,
1919
+ startTimeInMS: 2000000,
1920
+ title: 'Access Test'
1921
+ })];
1922
+ case 8:
1923
+ calendarEvent = _a.sent();
1924
+ return [4 /*yield*/, sdk.api.chat_rooms.createOne({ enduserIds: [e.id] })];
1925
+ case 9:
1926
+ chatRoom = _a.sent();
1927
+ return [4 /*yield*/, sdk.api.chats.createOne({ roomId: chatRoom.id, message: 'test chat access' })];
1928
+ case 10:
1929
+ chatMessage = _a.sent();
1930
+ return [4 /*yield*/, sdk.api.chats.createOne({ roomId: chatRoom.id, message: 'test chat access 2' })
1931
+ // unassigned to enduser access tests
1932
+ ];
1933
+ case 11:
1934
+ chatMessage2 = _a.sent();
1935
+ // unassigned to enduser access tests
1936
+ return [4 /*yield*/, async_test("Admin / creator can access enduser without being assigned", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) { return !!e; } })];
1937
+ case 12:
1938
+ // unassigned to enduser access tests
1939
+ _a.sent();
1940
+ return [4 /*yield*/, async_test("Unassigned non-admin can't access enduser without being assigned", function () { return sdkNonAdmin.api.endusers.getOne(e.id); }, handleAnyError)];
1941
+ case 13:
1942
+ _a.sent();
1943
+ return [4 /*yield*/, async_test("non-admin for enduser ticket bad", function () { return sdkNonAdmin.api.tickets.getOne(adminTicket.id); }, handleAnyError)];
1944
+ case 14:
1945
+ _a.sent();
1946
+ return [4 /*yield*/, async_test("Non-admin for ticket", function () { return sdkNonAdmin.api.tickets.getOne(nonAdminTicketNoEnduser.id); }, passOnAnyResult)];
1947
+ case 15:
1948
+ _a.sent();
1949
+ return [4 /*yield*/, async_test("Non-admin for enduser ticket", function () { return sdkNonAdmin.api.tickets.getOne(nonAdminTicket.id); }, passOnAnyResult)];
1950
+ case 16:
1951
+ _a.sent();
1952
+ return [4 /*yield*/, async_test("Non-admin for own ticket", function () { return sdkNonAdmin.api.tickets.getOne(ticketCreatedByNonAdmin.id); }, passOnAnyResult)];
1953
+ case 17:
1954
+ _a.sent();
1955
+ return [4 /*yield*/, async_test("Non-admin for tickets", function () { return sdkNonAdmin.api.tickets.getSome(); }, { onResult: function (ts) { return ts.length === 3; } })];
1956
+ case 18:
1957
+ _a.sent();
1958
+ return [4 /*yield*/, async_test("non-admin for email bad", function () { return sdkNonAdmin.api.emails.getOne(email.id); }, handleAnyError)];
1959
+ case 19:
1960
+ _a.sent();
1961
+ return [4 /*yield*/, async_test("non-admin for sms bad", function () { return sdkNonAdmin.api.sms_messages.getOne(sms.id); }, handleAnyError)];
1962
+ case 20:
1963
+ _a.sent();
1964
+ return [4 /*yield*/, async_test("admin for calendar", function () { return sdk.api.calendar_events.getOne(calendarEvent.id); }, passOnAnyResult)];
1965
+ case 21:
1966
+ _a.sent();
1967
+ return [4 /*yield*/, async_test("non-admin for calendar bad", function () { return sdkNonAdmin.api.calendar_events.getOne(calendarEvent.id); }, handleAnyError)];
1968
+ case 22:
1969
+ _a.sent();
1970
+ return [4 /*yield*/, async_test("non-admin for chat room bad", function () { return sdkNonAdmin.api.chat_rooms.getOne(chatRoom.id); }, handleAnyError)];
1971
+ case 23:
1972
+ _a.sent();
1973
+ return [4 /*yield*/, async_test("non-admin for chat message bad", function () { return sdkNonAdmin.api.chats.getOne(chatMessage.id); }, handleAnyError)];
1974
+ case 24:
1975
+ _a.sent();
1976
+ return [4 /*yield*/, async_test("Non-admin for chats", function () { return sdkNonAdmin.api.chats.getSome({ filter: { roomId: chatRoom.id } }); }, handleAnyError)
1977
+ // unassigned update / delete coverage
1978
+ ];
1979
+ case 25:
1980
+ _a.sent();
1981
+ // unassigned update / delete coverage
1982
+ return [4 /*yield*/, async_test("non-admin for enduser ticket update bad", function () { return sdkNonAdmin.api.tickets.updateOne(adminTicket.id, { title: 'updated' }); }, handleAnyError)];
1983
+ case 26:
1984
+ // unassigned update / delete coverage
1985
+ _a.sent();
1986
+ return [4 /*yield*/, async_test("non-admin for enduser ticket delete bad", function () { return sdkNonAdmin.api.tickets.deleteOne(adminTicket.id); }, handleAnyError)];
1987
+ case 27:
1988
+ _a.sent();
1989
+ return [4 /*yield*/, async_test("non-admin can't delete tickets by default (even with access)", function () { return sdkNonAdmin.api.tickets.deleteOne(nonAdminTicket.id); }, handleAnyError)
1990
+ // set assignees
1991
+ ];
1992
+ case 28:
1993
+ _a.sent();
1994
+ // set assignees
1995
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e.id, { assignedTo: [sdk.userInfo.id, sdkNonAdmin.userInfo.id] })
1996
+ // assigned access tests
1997
+ ];
1998
+ case 29:
1999
+ // set assignees
2000
+ _a.sent();
2001
+ // assigned access tests
2002
+ return [4 /*yield*/, async_test("Admin / creator can access enduser while assigned", function () { return sdk.api.endusers.getOne(e.id); }, passOnAnyResult)];
2003
+ case 30:
2004
+ // assigned access tests
2005
+ _a.sent();
2006
+ return [4 /*yield*/, async_test("Unassigned non-admin can access enduser while assigned", function () { return sdkNonAdmin.api.endusers.getOne(e.id); }, passOnAnyResult)];
2007
+ case 31:
2008
+ _a.sent();
2009
+ return [4 /*yield*/, async_test("non-admin for enduser ticket", function () { return sdkNonAdmin.api.tickets.getOne(adminTicket.id); }, passOnAnyResult)];
2010
+ case 32:
2011
+ _a.sent();
2012
+ return [4 /*yield*/, async_test("Non-admin for ticket", function () { return sdkNonAdmin.api.tickets.getOne(nonAdminTicketNoEnduser.id); }, passOnAnyResult)];
2013
+ case 33:
2014
+ _a.sent();
2015
+ return [4 /*yield*/, async_test("Non-admin for enduser ticket", function () { return sdkNonAdmin.api.tickets.getOne(nonAdminTicket.id); }, passOnAnyResult)];
2016
+ case 34:
2017
+ _a.sent();
2018
+ return [4 /*yield*/, async_test("Non-admin for tickets", function () { return sdkNonAdmin.api.tickets.getSome(); }, { onResult: function (ts) { return ts.length === 4; } })];
2019
+ case 35:
2020
+ _a.sent();
2021
+ return [4 /*yield*/, async_test("non-admin for email", function () { return sdkNonAdmin.api.emails.getOne(email.id); }, passOnAnyResult)];
2022
+ case 36:
2023
+ _a.sent();
2024
+ return [4 /*yield*/, async_test("non-admin for sms", function () { return sdkNonAdmin.api.sms_messages.getOne(sms.id); }, passOnAnyResult)];
2025
+ case 37:
2026
+ _a.sent();
2027
+ return [4 /*yield*/, async_test("non-admin for calendar", function () { return sdkNonAdmin.api.calendar_events.getOne(calendarEvent.id); }, passOnAnyResult)];
2028
+ case 38:
2029
+ _a.sent();
2030
+ return [4 /*yield*/, async_test("non-admin for chat room", function () { return sdkNonAdmin.api.chat_rooms.getOne(chatRoom.id); }, passOnAnyResult)];
2031
+ case 39:
2032
+ _a.sent();
2033
+ return [4 /*yield*/, async_test("non-admin for chat message", function () { return sdkNonAdmin.api.chats.getOne(chatMessage.id); }, passOnAnyResult)];
2034
+ case 40:
2035
+ _a.sent();
2036
+ return [4 /*yield*/, async_test("Non-admin for chats", function () { return sdkNonAdmin.api.chats.getSome({ filter: { roomId: chatRoom.id } }); }, { onResult: function (cs) { return cs.length === 2; } })
2037
+ // update / delete coverage for assigned tickets
2038
+ ];
2039
+ case 41:
2040
+ _a.sent();
2041
+ // update / delete coverage for assigned tickets
2042
+ return [4 /*yield*/, async_test("non-admin assigned enduser ticket update find", function () { return sdkNonAdmin.api.tickets.updateOne(adminTicket.id, { title: 'updated' }); }, passOnAnyResult)];
2043
+ case 42:
2044
+ // update / delete coverage for assigned tickets
2045
+ _a.sent();
2046
+ return [4 /*yield*/, async_test("non-admin for enduser ticket delete still bad", function () { return sdkNonAdmin.api.tickets.deleteOne(adminTicket.id); }, handleAnyError)
2047
+ // cleanup
2048
+ ];
2049
+ case 43:
2050
+ _a.sent();
2051
+ // cleanup
2052
+ return [4 /*yield*/, Promise.all([
2053
+ sdk.api.endusers.deleteOne(e.id),
2054
+ sdk.api.tickets.deleteOne(adminTicket.id),
2055
+ sdk.api.tickets.deleteOne(nonAdminTicket.id),
2056
+ sdk.api.tickets.deleteOne(nonAdminTicketNoEnduser.id),
2057
+ sdk.api.tickets.deleteOne(ticketCreatedByNonAdmin.id),
2058
+ sdk.api.emails.deleteOne(email.id),
2059
+ sdk.api.sms_messages.deleteOne(sms.id),
2060
+ sdk.api.calendar_events.deleteOne(calendarEvent.id),
2061
+ sdk.api.chat_rooms.deleteOne(chatRoom.id),
2062
+ sdk.api.chats.deleteOne(chatMessage.id),
2063
+ sdk.api.chats.deleteOne(chatMessage2.id),
2064
+ ])];
2065
+ case 44:
2066
+ // cleanup
2067
+ _a.sent();
2068
+ return [2 /*return*/];
2069
+ }
2070
+ });
2071
+ }); };
1885
2072
  var NO_TEST = function () { };
1886
2073
  var tests = {
1887
2074
  chats: chat_tests,
@@ -1903,9 +2090,9 @@ var tests = {
1903
2090
  form_responses: form_response_tests,
1904
2091
  calendar_events: calendar_events_tests,
1905
2092
  webhooks: NO_TEST,
1906
- event_automations: automation_events_tests,
2093
+ automation_steps: automation_events_tests,
1907
2094
  sequence_automations: NO_TEST,
1908
- automation_endusers: NO_TEST,
2095
+ automated_actions: NO_TEST,
1909
2096
  user_logs: NO_TEST,
1910
2097
  user_notifications: notifications_tests,
1911
2098
  };
@@ -1918,7 +2105,7 @@ var tests = {
1918
2105
  log_header("API");
1919
2106
  _h.label = 1;
1920
2107
  case 1:
1921
- _h.trys.push([1, 13, , 14]);
2108
+ _h.trys.push([1, 14, , 15]);
1922
2109
  return [4 /*yield*/, Promise.all([
1923
2110
  sdk.authenticate(email, password),
1924
2111
  sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword),
@@ -1955,21 +2142,24 @@ var tests = {
1955
2142
  return [4 /*yield*/, enduser_session_tests()];
1956
2143
  case 12:
1957
2144
  _h.sent();
1958
- return [3 /*break*/, 14];
2145
+ return [4 /*yield*/, role_based_access_tests()];
1959
2146
  case 13:
2147
+ _h.sent();
2148
+ return [3 /*break*/, 15];
2149
+ case 14:
1960
2150
  err_1 = _h.sent();
1961
2151
  console.error("Failed during custom test");
1962
2152
  console.error(err_1);
1963
2153
  process.exit(1);
1964
- return [3 /*break*/, 14];
1965
- case 14:
2154
+ return [3 /*break*/, 15];
2155
+ case 15:
1966
2156
  _a = [];
1967
2157
  for (_b in schema)
1968
2158
  _a.push(_b);
1969
2159
  _i = 0;
1970
- _h.label = 15;
1971
- case 15:
1972
- if (!(_i < _a.length)) return [3 /*break*/, 18];
2160
+ _h.label = 16;
2161
+ case 16:
2162
+ if (!(_i < _a.length)) return [3 /*break*/, 19];
1973
2163
  n = _a[_i];
1974
2164
  returnValidation = (_g = (_f = schema[n].customActions) === null || _f === void 0 ? void 0 : _f.create) === null || _g === void 0 ? void 0 : _g.returns;
1975
2165
  return [4 /*yield*/, run_generated_tests({
@@ -1980,38 +2170,38 @@ var tests = {
1980
2170
  create: returnValidation // ModelFields<ClientModel>,
1981
2171
  }
1982
2172
  })];
1983
- case 16:
1984
- _h.sent();
1985
- _h.label = 17;
1986
2173
  case 17:
1987
- _i++;
1988
- return [3 /*break*/, 15];
2174
+ _h.sent();
2175
+ _h.label = 18;
1989
2176
  case 18:
2177
+ _i++;
2178
+ return [3 /*break*/, 16];
2179
+ case 19:
1990
2180
  _c = [];
1991
2181
  for (_d in tests)
1992
2182
  _c.push(_d);
1993
2183
  _e = 0;
1994
- _h.label = 19;
1995
- case 19:
1996
- if (!(_e < _c.length)) return [3 /*break*/, 24];
1997
- t = _c[_e];
1998
2184
  _h.label = 20;
1999
2185
  case 20:
2000
- _h.trys.push([20, 22, , 23]);
2001
- return [4 /*yield*/, tests[t]()];
2186
+ if (!(_e < _c.length)) return [3 /*break*/, 25];
2187
+ t = _c[_e];
2188
+ _h.label = 21;
2002
2189
  case 21:
2003
- _h.sent();
2004
- return [3 /*break*/, 23];
2190
+ _h.trys.push([21, 23, , 24]);
2191
+ return [4 /*yield*/, tests[t]()];
2005
2192
  case 22:
2193
+ _h.sent();
2194
+ return [3 /*break*/, 24];
2195
+ case 23:
2006
2196
  err_2 = _h.sent();
2007
2197
  console.error("Error running test:");
2008
2198
  console.error(err_2);
2009
2199
  process.exit(1);
2010
- return [3 /*break*/, 23];
2011
- case 23:
2012
- _e++;
2013
- return [3 /*break*/, 19];
2200
+ return [3 /*break*/, 24];
2014
2201
  case 24:
2202
+ _e++;
2203
+ return [3 /*break*/, 20];
2204
+ case 25:
2015
2205
  process.exit();
2016
2206
  return [2 /*return*/];
2017
2207
  }