@wireapp/core 17.27.2 → 17.28.1

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.
@@ -51,6 +51,13 @@ describe('ConversationService', () => {
51
51
  account = new Account_1.Account(client);
52
52
  await account.initServices(new store_engine_1.MemoryEngine());
53
53
  });
54
+ beforeEach(() => {
55
+ account['apiClient'].context = {
56
+ clientType: client_1.ClientType.NONE,
57
+ userId: PayloadHelper.getUUID(),
58
+ clientId: PayloadHelper.getUUID(),
59
+ };
60
+ });
54
61
  describe('"send"', () => {
55
62
  const baseMessage = {
56
63
  conversation: PayloadHelper.getUUID(),
@@ -67,11 +74,6 @@ describe('ConversationService', () => {
67
74
  ];
68
75
  messages.forEach(payloadBundle => {
69
76
  it(`calls callbacks when sending '${payloadBundle.type}' message is starting and successful`, async () => {
70
- account['apiClient'].context = {
71
- clientType: client_1.ClientType.NONE,
72
- userId: PayloadHelper.getUUID(),
73
- clientId: PayloadHelper.getUUID(),
74
- };
75
77
  const conversationService = account.service.conversation;
76
78
  const sentTime = new Date().toISOString();
77
79
  spyOn(conversationService, 'sendGenericMessage').and.returnValue(Promise.resolve({ time: sentTime }));
@@ -86,12 +88,98 @@ describe('ConversationService', () => {
86
88
  expect(callbacks.onSuccess).toHaveBeenCalledWith(jasmine.any(Object), sentTime);
87
89
  });
88
90
  });
91
+ describe('targetted messages', () => {
92
+ const message = Object.assign(Object.assign({}, baseMessage), { type: _1.PayloadBundleType.TEXT, content: { text: 'test' } });
93
+ it('fails if no userIds are given', done => {
94
+ const conversationService = account.service.conversation;
95
+ conversationService
96
+ .send({
97
+ payloadBundle: message,
98
+ targetMode: _1.MessageTargetMode.USERS,
99
+ })
100
+ .catch(error => {
101
+ expect(error.message).toContain('no userIds are given');
102
+ done();
103
+ });
104
+ });
105
+ [{ user1: ['client1'], user2: ['client11', 'client12'] }, ['user1', 'user2']].forEach(recipients => {
106
+ it(`forwards the list of users to report (${JSON.stringify(recipients)})`, async () => {
107
+ const conversationService = account.service.conversation;
108
+ spyOn(conversationService, 'getRecipientsForConversation').and.returnValue(Promise.resolve({}));
109
+ spyOn(conversationService['messageService'], 'sendMessage').and.returnValue(Promise.resolve({}));
110
+ await conversationService.send({
111
+ payloadBundle: message,
112
+ targetMode: _1.MessageTargetMode.USERS,
113
+ userIds: recipients,
114
+ });
115
+ expect(conversationService['messageService'].sendMessage).toHaveBeenCalledWith(jasmine.any(String), jasmine.any(Object), jasmine.any(Uint8Array), jasmine.objectContaining({ reportMissing: ['user1', 'user2'] }));
116
+ });
117
+ });
118
+ [
119
+ { domain1: { user1: ['client1'], user2: ['client11', 'client12'] }, domain2: { user3: ['client1'] } },
120
+ [
121
+ { id: 'user1', domain: 'domain1' },
122
+ { id: 'user2', domain: 'domain1' },
123
+ { id: 'user3', domain: 'domain2' },
124
+ ],
125
+ ].forEach(recipients => {
126
+ it(`forwards the list of users to report for federated message (${JSON.stringify(recipients)})`, async () => {
127
+ const conversationService = account.service.conversation;
128
+ spyOn(conversationService, 'getQualifiedRecipientsForConversation').and.returnValue(Promise.resolve({}));
129
+ spyOn(conversationService['messageService'], 'sendFederatedMessage').and.returnValue(Promise.resolve({}));
130
+ await conversationService.send({
131
+ conversationDomain: 'domain1',
132
+ payloadBundle: message,
133
+ targetMode: _1.MessageTargetMode.USERS,
134
+ userIds: recipients,
135
+ });
136
+ expect(conversationService['messageService'].sendFederatedMessage).toHaveBeenCalledWith(jasmine.any(String), jasmine.any(Object), jasmine.any(Uint8Array), jasmine.objectContaining({
137
+ reportMissing: [
138
+ { id: 'user1', domain: 'domain1' },
139
+ { id: 'user2', domain: 'domain1' },
140
+ { id: 'user3', domain: 'domain2' },
141
+ ],
142
+ }));
143
+ });
144
+ });
145
+ [{ user1: ['client1'], user2: ['client11', 'client12'] }, ['user1', 'user2']].forEach(recipients => {
146
+ it(`ignores all missing user/client pair if targetMode is USER_CLIENTS`, async () => {
147
+ const conversationService = account.service.conversation;
148
+ spyOn(conversationService, 'getRecipientsForConversation').and.returnValue(Promise.resolve({}));
149
+ spyOn(conversationService['messageService'], 'sendMessage').and.returnValue(Promise.resolve({}));
150
+ await conversationService.send({
151
+ payloadBundle: message,
152
+ targetMode: _1.MessageTargetMode.USERS_CLIENTS,
153
+ userIds: recipients,
154
+ });
155
+ expect(conversationService['messageService'].sendMessage).toHaveBeenCalledWith(jasmine.any(String), jasmine.any(Object), jasmine.any(Uint8Array), jasmine.objectContaining({ reportMissing: false }));
156
+ });
157
+ });
158
+ [
159
+ { domain1: { user1: ['client1'], user2: ['client11', 'client12'] }, domain2: { user3: ['client1'] } },
160
+ [
161
+ { id: 'user1', domain: 'domain1' },
162
+ { id: 'user2', domain: 'domain1' },
163
+ { id: 'user3', domain: 'domain2' },
164
+ ],
165
+ ].forEach(recipients => {
166
+ it(`ignores all missing user/client pair if targetMode is USER_CLIENTS on federated env`, async () => {
167
+ const conversationService = account.service.conversation;
168
+ spyOn(conversationService, 'getQualifiedRecipientsForConversation').and.returnValue(Promise.resolve({}));
169
+ spyOn(conversationService['messageService'], 'sendFederatedMessage').and.returnValue(Promise.resolve({}));
170
+ await conversationService.send({
171
+ conversationDomain: 'domain1',
172
+ payloadBundle: message,
173
+ targetMode: _1.MessageTargetMode.USERS_CLIENTS,
174
+ userIds: recipients,
175
+ });
176
+ expect(conversationService['messageService'].sendFederatedMessage).toHaveBeenCalledWith(jasmine.any(String), jasmine.any(Object), jasmine.any(Uint8Array), jasmine.objectContaining({
177
+ reportMissing: false,
178
+ }));
179
+ });
180
+ });
181
+ });
89
182
  it(`cancels message sending if onStart returns false`, async () => {
90
- account['apiClient'].context = {
91
- clientType: client_1.ClientType.NONE,
92
- userId: PayloadHelper.getUUID(),
93
- clientId: PayloadHelper.getUUID(),
94
- };
95
183
  const conversationService = account.service.conversation;
96
184
  spyOn(conversationService, 'sendGenericMessage');
97
185
  const message = Object.assign(Object.assign({}, baseMessage), { type: _1.PayloadBundleType.TEXT, content: { text: 'test' } });
@@ -104,11 +192,6 @@ describe('ConversationService', () => {
104
192
  expect(conversationService['sendGenericMessage']).not.toHaveBeenCalled();
105
193
  });
106
194
  it(`does not call onSuccess when message was canceled`, async () => {
107
- account['apiClient'].context = {
108
- clientType: client_1.ClientType.NONE,
109
- userId: PayloadHelper.getUUID(),
110
- clientId: PayloadHelper.getUUID(),
111
- };
112
195
  const conversationService = account.service.conversation;
113
196
  spyOn(conversationService, 'sendGenericMessage').and.returnValue(Promise.resolve({ time: '', errored: true }));
114
197
  const message = Object.assign(Object.assign({}, baseMessage), { type: _1.PayloadBundleType.TEXT, content: { text: 'test' } });
@@ -122,10 +205,6 @@ describe('ConversationService', () => {
122
205
  });
123
206
  describe('"createText"', () => {
124
207
  it('adds link previews correctly', async () => {
125
- account['apiClient'].context = {
126
- clientType: client_1.ClientType.NONE,
127
- userId: PayloadHelper.getUUID(),
128
- };
129
208
  const url = 'http://example.com';
130
209
  const permanentUrl = url;
131
210
  const summary = 'Summary';
@@ -161,19 +240,11 @@ describe('ConversationService', () => {
161
240
  }));
162
241
  });
163
242
  it('does not add link previews', () => {
164
- account['apiClient'].context = {
165
- clientType: client_1.ClientType.NONE,
166
- userId: PayloadHelper.getUUID(),
167
- };
168
243
  const text = 'Hello, world!';
169
244
  const textMessage = account.service.conversation.messageBuilder.createText({ conversationId: '', text }).build();
170
245
  expect(textMessage.content.linkPreviews).toBeUndefined();
171
246
  });
172
247
  it('uploads link previews', async () => {
173
- account['apiClient'].context = {
174
- clientType: client_1.ClientType.NONE,
175
- userId: PayloadHelper.getUUID(),
176
- };
177
248
  spyOn(account.service.asset, 'uploadImageAsset').and.returnValue(Promise.resolve({
178
249
  cipherText: Buffer.from([]),
179
250
  key: '',
@@ -204,10 +275,6 @@ describe('ConversationService', () => {
204
275
  }));
205
276
  });
206
277
  it('adds mentions correctly', () => {
207
- account['apiClient'].context = {
208
- clientType: client_1.ClientType.NONE,
209
- userId: PayloadHelper.getUUID(),
210
- };
211
278
  const text = 'Hello @user!';
212
279
  const mention = {
213
280
  length: 5,
@@ -224,19 +291,11 @@ describe('ConversationService', () => {
224
291
  expect(textMessage.content.mentions[0]).toEqual(jasmine.objectContaining(mention));
225
292
  });
226
293
  it('does not add mentions', () => {
227
- account['apiClient'].context = {
228
- clientType: client_1.ClientType.NONE,
229
- userId: PayloadHelper.getUUID(),
230
- };
231
294
  const text = 'Hello, world!';
232
295
  const textMessage = account.service.conversation.messageBuilder.createText({ conversationId: '', text }).build();
233
296
  expect(textMessage.content.mentions).toBeUndefined();
234
297
  });
235
298
  it('adds a quote correctly', () => {
236
- account['apiClient'].context = {
237
- clientType: client_1.ClientType.NONE,
238
- userId: PayloadHelper.getUUID(),
239
- };
240
299
  const quoteId = PayloadHelper.getUUID();
241
300
  const text = 'I totally agree.';
242
301
  const quote = {
@@ -251,19 +310,11 @@ describe('ConversationService', () => {
251
310
  expect(replyMessage.content.quote).toEqual(jasmine.objectContaining(quote));
252
311
  });
253
312
  it('does not add a quote', () => {
254
- account['apiClient'].context = {
255
- clientType: client_1.ClientType.NONE,
256
- userId: PayloadHelper.getUUID(),
257
- };
258
313
  const text = 'Hello, world!';
259
314
  const textMessage = account.service.conversation.messageBuilder.createText({ conversationId: '', text }).build();
260
315
  expect(textMessage.content.quote).toBeUndefined();
261
316
  });
262
317
  it('adds a read confirmation request correctly', () => {
263
- account['apiClient'].context = {
264
- clientType: client_1.ClientType.NONE,
265
- userId: PayloadHelper.getUUID(),
266
- };
267
318
  const text = 'Please read me';
268
319
  const replyMessage = account
269
320
  .service.conversation.messageBuilder.createText({ conversationId: '', text })
@@ -273,10 +324,6 @@ describe('ConversationService', () => {
273
324
  expect(replyMessage.content.expectsReadConfirmation).toEqual(true);
274
325
  });
275
326
  it('adds a legal hold status', () => {
276
- account['apiClient'].context = {
277
- clientType: client_1.ClientType.NONE,
278
- userId: PayloadHelper.getUUID(),
279
- };
280
327
  const text = 'Please read me';
281
328
  const firstMessage = account
282
329
  .service.conversation.messageBuilder.createText({ conversationId: '', text })
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationService.test.node.js","sourceRoot":"","sources":["ConversationService.test.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConversationService.test.node.js","sourceRoot":"","sources":["ConversationService.test.node.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ import {APIClient} from '@wireapp/api-client';
21
21
  import {ClientType} from '@wireapp/api-client/src/client';
22
22
  import {LegalHoldStatus} from '@wireapp/protocol-messaging';
23
23
  import {MemoryEngine} from '@wireapp/store-engine';
24
- import {PayloadBundleSource, PayloadBundleState, PayloadBundleType} from '.';
24
+ import {MessageTargetMode, PayloadBundleSource, PayloadBundleState, PayloadBundleType} from '.';
25
25
 
26
26
  import {Account} from '../Account';
27
27
  import * as PayloadHelper from '../test/PayloadHelper';
@@ -37,6 +37,14 @@ describe('ConversationService', () => {
37
37
  await account.initServices(new MemoryEngine());
38
38
  });
39
39
 
40
+ beforeEach(() => {
41
+ account['apiClient'].context = {
42
+ clientType: ClientType.NONE,
43
+ userId: PayloadHelper.getUUID(),
44
+ clientId: PayloadHelper.getUUID(),
45
+ };
46
+ });
47
+
40
48
  describe('"send"', () => {
41
49
  const baseMessage = {
42
50
  conversation: PayloadHelper.getUUID(),
@@ -57,11 +65,6 @@ describe('ConversationService', () => {
57
65
  ];
58
66
  messages.forEach(payloadBundle => {
59
67
  it(`calls callbacks when sending '${payloadBundle.type}' message is starting and successful`, async () => {
60
- account['apiClient'].context = {
61
- clientType: ClientType.NONE,
62
- userId: PayloadHelper.getUUID(),
63
- clientId: PayloadHelper.getUUID(),
64
- };
65
68
  const conversationService = account.service!.conversation;
66
69
  const sentTime = new Date().toISOString();
67
70
  spyOn<any>(conversationService, 'sendGenericMessage').and.returnValue(Promise.resolve({time: sentTime}));
@@ -78,12 +81,135 @@ describe('ConversationService', () => {
78
81
  });
79
82
  });
80
83
 
84
+ describe('targetted messages', () => {
85
+ const message: OtrMessage = {...baseMessage, type: PayloadBundleType.TEXT, content: {text: 'test'}};
86
+ it('fails if no userIds are given', done => {
87
+ const conversationService = account.service!.conversation;
88
+ conversationService
89
+ .send({
90
+ payloadBundle: message,
91
+ targetMode: MessageTargetMode.USERS,
92
+ })
93
+ .catch(error => {
94
+ expect(error.message).toContain('no userIds are given');
95
+ done();
96
+ });
97
+ });
98
+
99
+ [{user1: ['client1'], user2: ['client11', 'client12']}, ['user1', 'user2']].forEach(recipients => {
100
+ it(`forwards the list of users to report (${JSON.stringify(recipients)})`, async () => {
101
+ const conversationService = account.service!.conversation;
102
+ spyOn<any>(conversationService, 'getRecipientsForConversation').and.returnValue(Promise.resolve({} as any));
103
+ spyOn(conversationService['messageService'], 'sendMessage').and.returnValue(Promise.resolve({} as any));
104
+ await conversationService.send({
105
+ payloadBundle: message,
106
+ targetMode: MessageTargetMode.USERS,
107
+ userIds: recipients,
108
+ });
109
+
110
+ expect(conversationService['messageService'].sendMessage).toHaveBeenCalledWith(
111
+ jasmine.any(String),
112
+ jasmine.any(Object),
113
+ jasmine.any(Uint8Array),
114
+ jasmine.objectContaining({reportMissing: ['user1', 'user2']}),
115
+ );
116
+ });
117
+ });
118
+
119
+ [
120
+ {domain1: {user1: ['client1'], user2: ['client11', 'client12']}, domain2: {user3: ['client1']}},
121
+ [
122
+ {id: 'user1', domain: 'domain1'},
123
+ {id: 'user2', domain: 'domain1'},
124
+ {id: 'user3', domain: 'domain2'},
125
+ ],
126
+ ].forEach(recipients => {
127
+ it(`forwards the list of users to report for federated message (${JSON.stringify(recipients)})`, async () => {
128
+ const conversationService = account.service!.conversation;
129
+ spyOn<any>(conversationService, 'getQualifiedRecipientsForConversation').and.returnValue(
130
+ Promise.resolve({} as any),
131
+ );
132
+ spyOn(conversationService['messageService'], 'sendFederatedMessage').and.returnValue(
133
+ Promise.resolve({} as any),
134
+ );
135
+ await conversationService.send({
136
+ conversationDomain: 'domain1',
137
+ payloadBundle: message,
138
+ targetMode: MessageTargetMode.USERS,
139
+ userIds: recipients,
140
+ });
141
+
142
+ expect(conversationService['messageService'].sendFederatedMessage).toHaveBeenCalledWith(
143
+ jasmine.any(String),
144
+ jasmine.any(Object),
145
+ jasmine.any(Uint8Array),
146
+ jasmine.objectContaining({
147
+ reportMissing: [
148
+ {id: 'user1', domain: 'domain1'},
149
+ {id: 'user2', domain: 'domain1'},
150
+ {id: 'user3', domain: 'domain2'},
151
+ ],
152
+ }),
153
+ );
154
+ });
155
+ });
156
+
157
+ [{user1: ['client1'], user2: ['client11', 'client12']}, ['user1', 'user2']].forEach(recipients => {
158
+ it(`ignores all missing user/client pair if targetMode is USER_CLIENTS`, async () => {
159
+ const conversationService = account.service!.conversation;
160
+ spyOn<any>(conversationService, 'getRecipientsForConversation').and.returnValue(Promise.resolve({} as any));
161
+ spyOn(conversationService['messageService'], 'sendMessage').and.returnValue(Promise.resolve({} as any));
162
+ await conversationService.send({
163
+ payloadBundle: message,
164
+ targetMode: MessageTargetMode.USERS_CLIENTS,
165
+ userIds: recipients,
166
+ });
167
+
168
+ expect(conversationService['messageService'].sendMessage).toHaveBeenCalledWith(
169
+ jasmine.any(String),
170
+ jasmine.any(Object),
171
+ jasmine.any(Uint8Array),
172
+ jasmine.objectContaining({reportMissing: false}),
173
+ );
174
+ });
175
+ });
176
+
177
+ [
178
+ {domain1: {user1: ['client1'], user2: ['client11', 'client12']}, domain2: {user3: ['client1']}},
179
+ [
180
+ {id: 'user1', domain: 'domain1'},
181
+ {id: 'user2', domain: 'domain1'},
182
+ {id: 'user3', domain: 'domain2'},
183
+ ],
184
+ ].forEach(recipients => {
185
+ it(`ignores all missing user/client pair if targetMode is USER_CLIENTS on federated env`, async () => {
186
+ const conversationService = account.service!.conversation;
187
+ spyOn<any>(conversationService, 'getQualifiedRecipientsForConversation').and.returnValue(
188
+ Promise.resolve({} as any),
189
+ );
190
+ spyOn(conversationService['messageService'], 'sendFederatedMessage').and.returnValue(
191
+ Promise.resolve({} as any),
192
+ );
193
+ await conversationService.send({
194
+ conversationDomain: 'domain1',
195
+ payloadBundle: message,
196
+ targetMode: MessageTargetMode.USERS_CLIENTS,
197
+ userIds: recipients,
198
+ });
199
+
200
+ expect(conversationService['messageService'].sendFederatedMessage).toHaveBeenCalledWith(
201
+ jasmine.any(String),
202
+ jasmine.any(Object),
203
+ jasmine.any(Uint8Array),
204
+ jasmine.objectContaining({
205
+ reportMissing: false,
206
+ }),
207
+ );
208
+ });
209
+ });
210
+ });
211
+
81
212
  it(`cancels message sending if onStart returns false`, async () => {
82
- account['apiClient'].context = {
83
- clientType: ClientType.NONE,
84
- userId: PayloadHelper.getUUID(),
85
- clientId: PayloadHelper.getUUID(),
86
- };
87
213
  const conversationService = account.service!.conversation;
88
214
  spyOn<any>(conversationService, 'sendGenericMessage');
89
215
  const message: OtrMessage = {...baseMessage, type: PayloadBundleType.TEXT, content: {text: 'test'}};
@@ -98,11 +224,6 @@ describe('ConversationService', () => {
98
224
  });
99
225
 
100
226
  it(`does not call onSuccess when message was canceled`, async () => {
101
- account['apiClient'].context = {
102
- clientType: ClientType.NONE,
103
- userId: PayloadHelper.getUUID(),
104
- clientId: PayloadHelper.getUUID(),
105
- };
106
227
  const conversationService = account.service!.conversation;
107
228
  spyOn<any>(conversationService, 'sendGenericMessage').and.returnValue(Promise.resolve({time: '', errored: true}));
108
229
  const message: OtrMessage = {...baseMessage, type: PayloadBundleType.TEXT, content: {text: 'test'}};
@@ -118,11 +239,6 @@ describe('ConversationService', () => {
118
239
 
119
240
  describe('"createText"', () => {
120
241
  it('adds link previews correctly', async () => {
121
- account['apiClient'].context = {
122
- clientType: ClientType.NONE,
123
- userId: PayloadHelper.getUUID(),
124
- };
125
-
126
242
  const url = 'http://example.com';
127
243
 
128
244
  const permanentUrl = url;
@@ -165,11 +281,6 @@ describe('ConversationService', () => {
165
281
  });
166
282
 
167
283
  it('does not add link previews', () => {
168
- account['apiClient'].context = {
169
- clientType: ClientType.NONE,
170
- userId: PayloadHelper.getUUID(),
171
- };
172
-
173
284
  const text = 'Hello, world!';
174
285
  const textMessage = account.service!.conversation.messageBuilder.createText({conversationId: '', text}).build();
175
286
 
@@ -177,11 +288,6 @@ describe('ConversationService', () => {
177
288
  });
178
289
 
179
290
  it('uploads link previews', async () => {
180
- account['apiClient'].context = {
181
- clientType: ClientType.NONE,
182
- userId: PayloadHelper.getUUID(),
183
- };
184
-
185
291
  spyOn(account.service!.asset, 'uploadImageAsset').and.returnValue(
186
292
  Promise.resolve({
187
293
  cipherText: Buffer.from([]),
@@ -222,11 +328,6 @@ describe('ConversationService', () => {
222
328
  });
223
329
 
224
330
  it('adds mentions correctly', () => {
225
- account['apiClient'].context = {
226
- clientType: ClientType.NONE,
227
- userId: PayloadHelper.getUUID(),
228
- };
229
-
230
331
  const text = 'Hello @user!';
231
332
 
232
333
  const mention: MentionContent = {
@@ -248,11 +349,6 @@ describe('ConversationService', () => {
248
349
  });
249
350
 
250
351
  it('does not add mentions', () => {
251
- account['apiClient'].context = {
252
- clientType: ClientType.NONE,
253
- userId: PayloadHelper.getUUID(),
254
- };
255
-
256
352
  const text = 'Hello, world!';
257
353
  const textMessage = account.service!.conversation.messageBuilder.createText({conversationId: '', text}).build();
258
354
 
@@ -260,11 +356,6 @@ describe('ConversationService', () => {
260
356
  });
261
357
 
262
358
  it('adds a quote correctly', () => {
263
- account['apiClient'].context = {
264
- clientType: ClientType.NONE,
265
- userId: PayloadHelper.getUUID(),
266
- };
267
-
268
359
  const quoteId = PayloadHelper.getUUID();
269
360
  const text = 'I totally agree.';
270
361
 
@@ -283,11 +374,6 @@ describe('ConversationService', () => {
283
374
  });
284
375
 
285
376
  it('does not add a quote', () => {
286
- account['apiClient'].context = {
287
- clientType: ClientType.NONE,
288
- userId: PayloadHelper.getUUID(),
289
- };
290
-
291
377
  const text = 'Hello, world!';
292
378
  const textMessage = account.service!.conversation.messageBuilder.createText({conversationId: '', text}).build();
293
379
 
@@ -295,11 +381,6 @@ describe('ConversationService', () => {
295
381
  });
296
382
 
297
383
  it('adds a read confirmation request correctly', () => {
298
- account['apiClient'].context = {
299
- clientType: ClientType.NONE,
300
- userId: PayloadHelper.getUUID(),
301
- };
302
-
303
384
  const text = 'Please read me';
304
385
 
305
386
  const replyMessage = account
@@ -312,11 +393,6 @@ describe('ConversationService', () => {
312
393
  });
313
394
 
314
395
  it('adds a legal hold status', () => {
315
- account['apiClient'].context = {
316
- clientType: ClientType.NONE,
317
- userId: PayloadHelper.getUUID(),
318
- };
319
-
320
396
  const text = 'Please read me';
321
397
 
322
398
  const firstMessage = account