Line data Source code
1 : /*
2 : * Famedly Matrix SDK
3 : * Copyright (C) 2019, 2020 Famedly GmbH
4 : *
5 : * This program is free software: you can redistribute it and/or modify
6 : * it under the terms of the GNU Affero General Public License as
7 : * published by the Free Software Foundation, either version 3 of the
8 : * License, or (at your option) any later version.
9 : *
10 : * This program is distributed in the hope that it will be useful,
11 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 : * GNU Affero General Public License for more details.
14 : *
15 : * You should have received a copy of the GNU Affero General Public License
16 : * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 : */
18 :
19 : import 'dart:async';
20 : import 'dart:convert';
21 : import 'dart:core';
22 : import 'dart:math';
23 :
24 : import 'package:http/http.dart';
25 :
26 : import 'package:matrix/matrix.dart' as sdk;
27 : import 'package:matrix/matrix.dart';
28 :
29 48 : T? tryCast<T>(dynamic object) => object is T ? object : null;
30 :
31 24 : Map<String, dynamic> decodeJson(dynamic data) {
32 24 : if (data is String) {
33 24 : return json.decode(data);
34 : }
35 0 : if (data.isEmpty) {
36 0 : return <String, dynamic>{};
37 : }
38 : return data;
39 : }
40 :
41 : class FakeMatrixApi extends BaseClient {
42 : static String? expectedAccessToken;
43 :
44 14 : static Map<String, List<dynamic>> get calledEndpoints =>
45 14 : currentApi!._calledEndpoints;
46 10 : static int get eventCounter => currentApi!._eventCounter;
47 5 : static set eventCounter(int c) {
48 5 : currentApi!._eventCounter = c;
49 : }
50 :
51 29 : static set client(sdk.Client? c) {
52 29 : currentApi?._client = c;
53 : }
54 :
55 1 : static set failToDevice(bool fail) {
56 1 : currentApi?._failToDevice = fail;
57 : }
58 :
59 0 : static set trace(bool t) {
60 0 : currentApi?._trace = t;
61 : }
62 :
63 : final _calledEndpoints = <String, List<dynamic>>{};
64 : int _eventCounter = 0;
65 : sdk.Client? _client;
66 : bool _failToDevice = false;
67 : bool _trace = false;
68 : final _apiCallStream = StreamController<String>.broadcast();
69 :
70 : static FakeMatrixApi? currentApi;
71 :
72 3 : static Future<String> firstWhereValue(String value) {
73 9 : return firstWhere((v) => v == value);
74 : }
75 :
76 5 : static Future<String> firstWhere(bool Function(String element) test) {
77 15 : for (final e in currentApi!._calledEndpoints.entries) {
78 20 : if (e.value.isNotEmpty && test(e.key)) {
79 10 : return Future.value(e.key);
80 : }
81 : }
82 :
83 1 : final completer = Completer<String>();
84 : StreamSubscription<String>? sub;
85 4 : sub = currentApi!._apiCallStream.stream.listen((action) {
86 1 : if (test(action)) {
87 1 : sub?.cancel();
88 1 : completer.complete(action);
89 : }
90 : });
91 1 : return completer.future;
92 : }
93 :
94 33 : FutureOr<Response> mockIntercept(Request request) async {
95 : // Collect data from Request
96 66 : var action = request.url.path;
97 99 : if (request.url.path.contains('/_matrix')) {
98 : action =
99 231 : '${request.url.path.split('/_matrix').last}?${request.url.query}';
100 : }
101 :
102 : // ignore: avoid_print
103 33 : if (_trace) print('called $action');
104 :
105 33 : if (action.endsWith('?')) {
106 99 : action = action.substring(0, action.length - 1);
107 : }
108 33 : if (action.endsWith('?server_name')) {
109 : // This can be removed after matrix_api_lite is released with:
110 : // https://gitlab.com/famedly/libraries/matrix_api_lite/-/merge_requests/16
111 0 : action = action.substring(0, action.length - 12);
112 : }
113 33 : if (action.endsWith('/')) {
114 21 : action = action.substring(0, action.length - 1);
115 : }
116 33 : final method = request.method;
117 : final dynamic data =
118 130 : method == 'GET' ? request.url.queryParameters : request.body;
119 33 : dynamic res = {};
120 : var statusCode = 200;
121 :
122 : //print('\$method request to $action with Data: $data');
123 :
124 : // Sync requests with timeout
125 99 : if (data is Map<String, dynamic> && data['timeout'] is String) {
126 62 : await Future.delayed(Duration(seconds: 5));
127 : }
128 :
129 99 : if (request.url.origin != 'https://fakeserver.notexisting') {
130 1 : return Response(
131 : '<html><head></head><body>Not found...</body></html>', 404);
132 : }
133 :
134 : if (!{
135 33 : '/client/v3/refresh',
136 33 : '/client/v3/login',
137 33 : '/client/v3/register',
138 33 : }.contains(action) &&
139 : expectedAccessToken != null &&
140 4 : request.headers['Authorization'] != 'Bearer $expectedAccessToken') {
141 1 : return Response(
142 2 : jsonEncode({
143 : 'errcode': 'M_UNKNOWN_TOKEN',
144 : 'error': 'Soft logged out',
145 : 'soft_logout': true,
146 : }),
147 : 401,
148 : );
149 : }
150 :
151 : // Call API
152 132 : (_calledEndpoints[action] ??= <dynamic>[]).add(data);
153 99 : final act = api[method]?[action];
154 : if (act != null) {
155 33 : res = act(data);
156 66 : if (res is Map && res.containsKey('errcode')) {
157 4 : if (res['errcode'] == 'M_NOT_FOUND') {
158 : statusCode = 404;
159 : } else {
160 : statusCode = 405;
161 : }
162 : }
163 40 : } else if (method == 'PUT' && action.contains('/client/v3/sendToDevice/')) {
164 10 : res = {};
165 10 : if (_failToDevice) {
166 : statusCode = 500;
167 : }
168 22 : } else if (method == 'GET' &&
169 18 : action.contains('/client/v3/rooms/') &&
170 6 : action.contains('/state/m.room.member/') &&
171 6 : !action.endsWith('%40alicyy%3Aexample.com')) {
172 6 : res = {'displayname': ''};
173 18 : } else if (method == 'PUT' &&
174 8 : action.contains(
175 : '/client/v3/rooms/!1234%3AfakeServer.notExisting/send/')) {
176 12 : res = {'event_id': '\$event${_eventCounter++}'};
177 17 : } else if (method == 'PUT' &&
178 6 : action.contains(
179 : '/client/v3/rooms/!1234%3AfakeServer.notExisting/state/')) {
180 4 : res = {'event_id': '\$event${_eventCounter++}'};
181 16 : } else if (action.contains('/client/v3/sync')) {
182 14 : res = {
183 42 : 'next_batch': DateTime.now().millisecondsSinceEpoch.toString(),
184 : };
185 5 : } else if (method == 'PUT' &&
186 5 : _client != null &&
187 5 : action.contains('/account_data/') &&
188 3 : !action.contains('/rooms/')) {
189 9 : final type = Uri.decodeComponent(action.split('/').last);
190 3 : final syncUpdate = sdk.SyncUpdate(
191 : nextBatch: '',
192 9 : accountData: [sdk.BasicEvent(content: decodeJson(data), type: type)],
193 : );
194 6 : if (_client?.database != null) {
195 12 : await _client?.database?.transaction(() async {
196 6 : await _client?.handleSync(syncUpdate);
197 : });
198 : } else {
199 0 : await _client?.handleSync(syncUpdate);
200 : }
201 3 : res = {};
202 3 : } else if (method == 'PUT' &&
203 3 : _client != null &&
204 3 : action.contains('/account_data/') &&
205 1 : action.contains('/rooms/')) {
206 1 : final segments = action.split('/');
207 2 : final type = Uri.decodeComponent(segments.last);
208 4 : final roomId = Uri.decodeComponent(segments[segments.length - 3]);
209 1 : final syncUpdate = sdk.SyncUpdate(
210 : nextBatch: '',
211 1 : rooms: RoomsUpdate(
212 1 : join: {
213 2 : roomId: JoinedRoomUpdate(accountData: [
214 1 : sdk.BasicRoomEvent(
215 1 : content: decodeJson(data), type: type, roomId: roomId)
216 : ])
217 : },
218 : ),
219 : );
220 2 : if (_client?.database != null) {
221 4 : await _client?.database?.transaction(() async {
222 2 : await _client?.handleSync(syncUpdate);
223 : });
224 : } else {
225 0 : await _client?.handleSync(syncUpdate);
226 : }
227 1 : res = {};
228 : } else {
229 3 : res = {
230 : 'errcode': 'M_UNRECOGNIZED',
231 : 'error': 'Unrecognized request: $action'
232 3 : };
233 : statusCode = 405;
234 : }
235 :
236 165 : unawaited(Future.delayed(Duration(milliseconds: 1)).then((_) async {
237 66 : _apiCallStream.add(action);
238 : }));
239 99 : return Response.bytes(utf8.encode(json.encode(res)), statusCode);
240 : }
241 :
242 33 : @override
243 : Future<StreamedResponse> send(BaseRequest request) async {
244 33 : final bodyStream = request.finalize();
245 33 : final bodyBytes = await bodyStream.toBytes();
246 99 : final r = Request(request.method, request.url)
247 66 : ..persistentConnection = request.persistentConnection
248 66 : ..followRedirects = request.followRedirects
249 66 : ..maxRedirects = request.maxRedirects
250 99 : ..headers.addAll(request.headers)
251 33 : ..bodyBytes = bodyBytes
252 33 : ..finalize();
253 :
254 33 : final response = await mockIntercept(r);
255 33 : return StreamedResponse(
256 66 : ByteStream.fromBytes(response.bodyBytes),
257 33 : response.statusCode,
258 33 : contentLength: response.contentLength,
259 : request: request,
260 33 : headers: response.headers,
261 33 : isRedirect: response.isRedirect,
262 33 : persistentConnection: response.persistentConnection,
263 33 : reasonPhrase: response.reasonPhrase,
264 : );
265 : }
266 :
267 35 : FakeMatrixApi() {
268 : currentApi = this;
269 106 : api['POST']?['/client/v3/keys/device_signing/upload'] = (var reqI) {
270 1 : if (_client != null) {
271 1 : final jsonBody = decodeJson(reqI);
272 1 : for (final keyType in {
273 1 : 'master_key',
274 1 : 'self_signing_key',
275 1 : 'user_signing_key'
276 1 : }) {
277 1 : if (jsonBody[keyType] != null) {
278 : final key =
279 3 : sdk.CrossSigningKey.fromJson(jsonBody[keyType], _client!);
280 6 : _client!.userDeviceKeys[_client!.userID!]?.crossSigningKeys
281 6 : .removeWhere((k, v) => v.usage.contains(key.usage.first));
282 5 : _client!.userDeviceKeys[_client!.userID!]
283 3 : ?.crossSigningKeys[key.publicKey!] = key;
284 : }
285 : }
286 : // and generate a fake sync
287 : // ignore: discarded_futures
288 3 : _client!.handleSync(sdk.SyncUpdate(nextBatch: ''));
289 : }
290 1 : return {};
291 : };
292 : }
293 :
294 : static const Map<String, dynamic> messagesResponsePast = {
295 : 'start': 't47429-4392820_219380_26003_2265',
296 : 'end': 't47409-4357353_219380_26003_2265',
297 : 'chunk': [
298 : {
299 : 'content': {
300 : 'body': 'This is an example text message',
301 : 'msgtype': 'm.text',
302 : 'format': 'org.matrix.custom.html',
303 : 'formatted_body': '<b>This is an example text message</b>'
304 : },
305 : 'type': 'm.room.message',
306 : 'event_id': '3143273582443PhrSn:example.org',
307 : 'room_id': '!1234:example.com',
308 : 'sender': '@example:example.org',
309 : 'origin_server_ts': 1432735824653,
310 : 'unsigned': {'age': 1234}
311 : },
312 : {
313 : 'content': {'name': 'The room name'},
314 : 'type': 'm.room.name',
315 : 'event_id': '2143273582443PhrSn:example.org',
316 : 'room_id': '!1234:example.com',
317 : 'sender': '@example:example.org',
318 : 'origin_server_ts': 1432735824653,
319 : 'unsigned': {'age': 1234},
320 : 'state_key': ''
321 : },
322 : {
323 : 'content': {
324 : 'body': 'Gangnam Style',
325 : 'url': 'mxc://example.org/a526eYUSFFxlgbQYZmo442',
326 : 'info': {
327 : 'thumbnail_url': 'mxc://example.org/FHyPlCeYUSFFxlgbQYZmoEoe',
328 : 'thumbnail_info': {
329 : 'mimetype': 'image/jpeg',
330 : 'size': 46144,
331 : 'w': 300,
332 : 'h': 300
333 : },
334 : 'w': 480,
335 : 'h': 320,
336 : 'duration': 2140786,
337 : 'size': 1563685,
338 : 'mimetype': 'video/mp4'
339 : },
340 : 'msgtype': 'm.video'
341 : },
342 : 'type': 'm.room.message',
343 : 'event_id': '1143273582443PhrSn:example.org',
344 : 'room_id': '!1234:example.com',
345 : 'sender': '@example:example.org',
346 : 'origin_server_ts': 1432735824653,
347 : 'unsigned': {'age': 1234}
348 : }
349 : ],
350 : 'state': [],
351 : };
352 : static const Map<String, dynamic> messagesResponseFuture = {
353 : 'start': 't456',
354 : 'end': 't789',
355 : 'chunk': [
356 : {
357 : 'content': {
358 : 'body': 'Gangnam Style',
359 : 'url': 'mxc://example.org/a526eYUSFFxlgbQYZmo442',
360 : 'info': {
361 : 'thumbnail_url': 'mxc://example.org/FHyPlCeYUSFFxlgbQYZmoEoe',
362 : 'thumbnail_info': {
363 : 'mimetype': 'image/jpeg',
364 : 'size': 46144,
365 : 'w': 300,
366 : 'h': 300
367 : },
368 : 'w': 480,
369 : 'h': 320,
370 : 'duration': 2140786,
371 : 'size': 1563685,
372 : 'mimetype': 'video/mp4'
373 : },
374 : 'msgtype': 'm.video'
375 : },
376 : 'type': 'm.room.message',
377 : 'event_id': '1143273582443PhrSn:example.org',
378 : 'room_id': '!1234:example.com',
379 : 'sender': '@example:example.org',
380 : 'origin_server_ts': 1432735824653,
381 : 'unsigned': {'age': 1234}
382 : },
383 : {
384 : 'content': {'name': 'The room name'},
385 : 'type': 'm.room.name',
386 : 'event_id': '2143273582443PhrSn:example.org',
387 : 'room_id': '!1234:example.com',
388 : 'sender': '@example:example.org',
389 : 'origin_server_ts': 1432735824653,
390 : 'unsigned': {'age': 1234},
391 : 'state_key': ''
392 : },
393 : {
394 : 'content': {
395 : 'body': 'This is an example text message',
396 : 'msgtype': 'm.text',
397 : 'format': 'org.matrix.custom.html',
398 : 'formatted_body': '<b>This is an example text message</b>'
399 : },
400 : 'type': 'm.room.message',
401 : 'event_id': '3143273582443PhrSn:example.org',
402 : 'room_id': '!1234:example.com',
403 : 'sender': '@example:example.org',
404 : 'origin_server_ts': 1432735824653,
405 : 'unsigned': {'age': 1234}
406 : }
407 : ],
408 : 'state': [],
409 : };
410 : static const Map<String, dynamic> messagesResponseFutureEnd = {
411 : 'start': 't789',
412 : 'end': null,
413 : 'chunk': [],
414 : 'state': [],
415 : };
416 :
417 6 : static Map<String, dynamic> archivesMessageResponse = {
418 : 'start': 't47429-4392820_219380_26003_2265',
419 : 'end': 't47409-4357353_219380_26003_2265',
420 2 : 'chunk': [
421 2 : {
422 2 : 'content': {
423 : 'body': 'This is an example text message',
424 : 'msgtype': 'm.text',
425 : 'format': 'org.matrix.custom.html',
426 : 'formatted_body': '<b>This is an example text message</b>'
427 : },
428 : 'type': 'm.room.message',
429 : 'event_id': '3143273582443PhrSn:example.org',
430 : 'room_id': '!5345234234:example.com',
431 : 'sender': '@example:example.org',
432 : 'origin_server_ts': 1432735824653,
433 2 : 'unsigned': {'age': 1234}
434 : },
435 2 : {
436 2 : 'content': {'name': 'The room name'},
437 : 'type': 'm.room.name',
438 : 'event_id': '2143273582443PhrSn:example.org',
439 : 'room_id': '!5345234234:example.com',
440 : 'sender': '@example:example.org',
441 : 'origin_server_ts': 1432735824653,
442 2 : 'unsigned': {'age': 1234},
443 : 'state_key': ''
444 : },
445 2 : {
446 2 : 'content': {
447 : 'body': 'Gangnam Style',
448 : 'url': 'mxc://example.org/a526eYUSFFxlgbQYZmo442',
449 2 : 'info': {
450 : 'thumbnail_url': 'mxc://example.org/FHyPlCeYUSFFxlgbQYZmoEoe',
451 2 : 'thumbnail_info': {
452 : 'mimetype': 'image/jpeg',
453 : 'size': 46144,
454 : 'w': 300,
455 : 'h': 300
456 : },
457 : 'w': 480,
458 : 'h': 320,
459 : 'duration': 2140786,
460 : 'size': 1563685,
461 : 'mimetype': 'video/mp4'
462 : },
463 : 'msgtype': 'm.video'
464 : },
465 : 'type': 'm.room.message',
466 : 'event_id': '1143273582466PhrSn:example.org',
467 : 'room_id': '!5345234234:example.com',
468 : 'sender': '@example:example.org',
469 : 'origin_server_ts': 1432735824654,
470 2 : 'unsigned': {'age': 1234}
471 : }
472 : ],
473 2 : 'state': [],
474 : };
475 :
476 93 : static Map<String, dynamic> syncResponse = {
477 93 : 'next_batch': Random().nextDouble().toString(),
478 31 : 'rooms': {
479 31 : 'join': {
480 31 : '!726s6s6q:example.com': {
481 31 : 'summary': {
482 31 : 'm.heroes': ['@alice:example.com'],
483 : 'm.joined_member_count': 1,
484 : 'm.invited_member_count': 0
485 : },
486 31 : 'unread_notifications': {
487 : 'highlight_count': 2,
488 : 'notification_count': 2,
489 : },
490 31 : 'state': {
491 31 : 'events': [
492 31 : {
493 : 'sender': '@alice:example.com',
494 : 'type': 'm.room.member',
495 : 'state_key': '@alice:example.com',
496 31 : 'content': {
497 : 'membership': 'join',
498 : 'avatar_url': 'mxc://example.org/SEsfnsuifSDFSSEF',
499 : 'displayname': 'Alice Margatroid',
500 : },
501 : 'origin_server_ts': 1417731086795,
502 : 'event_id': '66697273743031:example.com'
503 : },
504 31 : {
505 : 'sender': '@alice:example.com',
506 : 'type': 'm.room.canonical_alias',
507 31 : 'content': {
508 : 'alias': '#famedlyContactDiscovery:fakeServer.notExisting'
509 : },
510 : 'state_key': '',
511 : 'origin_server_ts': 1417731086796,
512 : 'event_id': '66697273743032:example.com'
513 : },
514 31 : {
515 : 'sender': '@alice:example.com',
516 : 'type': 'm.room.encryption',
517 : 'state_key': '',
518 31 : 'content': {'algorithm': AlgorithmTypes.megolmV1AesSha2},
519 : 'origin_server_ts': 1417731086795,
520 : 'event_id': '666972737430353:example.com'
521 : },
522 31 : {
523 31 : 'content': {
524 31 : 'pinned': ['1234:bla']
525 : },
526 : 'type': 'm.room.pinned_events',
527 : 'event_id': '21432735824443PhrSn:example.org',
528 : 'room_id': '!1234:example.com',
529 : 'sender': '@example:example.org',
530 : 'origin_server_ts': 1432735824653,
531 31 : 'unsigned': {'age': 1234},
532 : 'state_key': ''
533 : },
534 : ]
535 : },
536 31 : 'timeline': {
537 31 : 'events': [
538 31 : {
539 : 'sender': '@bob:example.com',
540 : 'type': 'm.room.member',
541 : 'state_key': '@bob:example.com',
542 31 : 'content': {'membership': 'join'},
543 31 : 'prev_content': {'membership': 'invite'},
544 : 'origin_server_ts': 1417731086795,
545 : 'event_id': '\$7365636s6r6432:example.com',
546 31 : 'unsigned': {'foo': 'bar'}
547 : },
548 31 : {
549 : 'sender': '@alice:example.com',
550 : 'type': 'm.room.message',
551 31 : 'content': {'body': 'I am a fish', 'msgtype': 'm.text'},
552 : 'origin_server_ts': 1417731086797,
553 : 'event_id': '74686972643033:example.com'
554 : }
555 : ],
556 : 'limited': true,
557 : 'prev_batch': 't34-23535_0_0'
558 : },
559 31 : 'ephemeral': {
560 31 : 'events': [
561 31 : {
562 : 'type': 'm.typing',
563 31 : 'content': {
564 31 : 'user_ids': ['@alice:example.com']
565 : }
566 : },
567 31 : {
568 31 : 'content': {
569 31 : '\$7365636s6r6432:example.com': {
570 31 : 'm.read': {
571 31 : '@alice:example.com': {'ts': 1436451550453}
572 : }
573 : }
574 : },
575 : 'room_id': '!726s6s6q:example.com',
576 : 'type': 'm.receipt'
577 : }
578 : ]
579 : },
580 31 : 'account_data': {
581 31 : 'events': [
582 31 : {
583 : 'type': 'm.tag',
584 31 : 'content': {
585 31 : 'tags': {
586 31 : 'work': {'order': 1}
587 : }
588 : }
589 : },
590 31 : {
591 : 'type': 'org.example.custom.room.config',
592 31 : 'content': {'custom_config_key': 'custom_config_value'}
593 : }
594 : ]
595 : }
596 : },
597 31 : '!calls:example.com': {
598 31 : 'state': {
599 31 : 'events': [
600 31 : {
601 : 'sender': '@test:fakeServer.notExisting',
602 : 'type': 'm.room.member',
603 : 'state_key': '@test:fakeServer.notExisting',
604 31 : 'content': {
605 : 'membership': 'join',
606 : 'avatar_url': 'mxc://example.org/SEsfnsuifSDFSSEF',
607 : 'displayname': 'Test User',
608 : },
609 : 'origin_server_ts': 1417731086795,
610 : 'event_id': 'calls_1:example.com'
611 : },
612 31 : {
613 : 'sender': '@alice:example.com',
614 : 'type': 'm.room.member',
615 : 'state_key': '@alice:example.com',
616 31 : 'content': {
617 : 'membership': 'join',
618 : 'avatar_url': 'mxc://example.org/SEsfnsuifSDFSSEF',
619 : 'displayname': 'Alice Margatroid',
620 : },
621 : 'origin_server_ts': 1417731086795,
622 : 'event_id': 'calls_2:example.com'
623 : },
624 : ]
625 : },
626 : },
627 : },
628 31 : 'invite': {
629 31 : '!696r7674:example.com': {
630 31 : 'invite_state': {
631 31 : 'events': [
632 31 : {
633 : 'sender': '@alice:example.com',
634 : 'type': 'm.room.name',
635 : 'state_key': '',
636 31 : 'content': {'name': 'My Room Name'}
637 : },
638 31 : {
639 : 'sender': '@alice:example.com',
640 : 'type': 'm.room.member',
641 : 'state_key': '@bob:example.com',
642 31 : 'content': {'membership': 'invite'}
643 : }
644 : ]
645 : }
646 : }
647 : },
648 31 : 'leave': {
649 31 : '!726s6s6f:example.com': {
650 31 : 'state': {
651 31 : 'events': [
652 31 : {
653 : 'sender': '@charley:example.com',
654 : 'type': 'm.room.name',
655 : 'state_key': '',
656 31 : 'content': {'name': 'left room'},
657 : 'origin_server_ts': 1417731086795,
658 : 'event_id': '66697273743031:example.com'
659 : },
660 : ]
661 : },
662 31 : 'timeline': {
663 31 : 'events': [
664 31 : {
665 : 'sender': '@bob:example.com',
666 : 'type': 'm.room.message',
667 31 : 'content': {'text': 'Hallo'},
668 : 'origin_server_ts': 1417731086795,
669 : 'event_id': '7365636s6r64300:example.com',
670 31 : 'unsigned': {'foo': 'bar'}
671 : },
672 : ],
673 : 'limited': true,
674 : 'prev_batch': 't34-23535_0_0'
675 : },
676 31 : 'account_data': {
677 31 : 'events': [
678 31 : {
679 : 'type': 'm.tag',
680 31 : 'content': {
681 31 : 'tags': {
682 31 : 'work': {'order': 1}
683 : }
684 : }
685 : },
686 31 : {
687 : 'type': 'org.example.custom.room.config',
688 31 : 'content': {'custom_config_key': 'custom_config_value'}
689 : }
690 : ]
691 : }
692 : }
693 : },
694 : },
695 31 : 'presence': {
696 31 : 'events': [
697 31 : {
698 : 'sender': '@alice:example.com',
699 : 'type': 'm.presence',
700 31 : 'content': {'presence': 'online'}
701 : }
702 : ]
703 : },
704 31 : 'account_data': {
705 31 : 'events': [
706 31 : {
707 31 : 'content': {
708 31 : 'global': {
709 31 : 'content': [
710 31 : {
711 31 : 'actions': [
712 : 'notify',
713 31 : {'set_tweak': 'sound', 'value': 'default'},
714 31 : {'set_tweak': 'highlight'}
715 : ],
716 : 'default': true,
717 : 'enabled': true,
718 : 'pattern': 'alice',
719 : 'rule_id': '.m.rule.contains_user_name'
720 : }
721 : ],
722 31 : 'override': [
723 31 : {
724 31 : 'actions': ['dont_notify'],
725 31 : 'conditions': [],
726 : 'default': true,
727 : 'enabled': false,
728 : 'rule_id': '.m.rule.master'
729 : },
730 31 : {
731 31 : 'actions': ['dont_notify'],
732 31 : 'conditions': [
733 31 : {
734 : 'key': 'content.msgtype',
735 : 'kind': 'event_match',
736 : 'pattern': 'm.notice'
737 : }
738 : ],
739 : 'default': true,
740 : 'enabled': true,
741 : 'rule_id': '.m.rule.suppress_notices'
742 : }
743 : ],
744 31 : 'room': [
745 31 : {
746 31 : 'actions': ['dont_notify'],
747 31 : 'conditions': [
748 31 : {
749 : 'key': 'room_id',
750 : 'kind': 'event_match',
751 : 'pattern': '!localpart:server.abc',
752 : }
753 : ],
754 : 'default': true,
755 : 'enabled': true,
756 : 'rule_id': '!localpart:server.abc'
757 : }
758 : ],
759 31 : 'sender': [],
760 31 : 'underride': [
761 31 : {
762 31 : 'actions': [
763 : 'notify',
764 31 : {'set_tweak': 'sound', 'value': 'ring'},
765 31 : {'set_tweak': 'highlight', 'value': false}
766 : ],
767 31 : 'conditions': [
768 31 : {
769 : 'key': 'type',
770 : 'kind': 'event_match',
771 : 'pattern': 'm.call.invite'
772 : }
773 : ],
774 : 'default': true,
775 : 'enabled': true,
776 : 'rule_id': '.m.rule.call'
777 : },
778 31 : {
779 31 : 'actions': [
780 : 'notify',
781 31 : {'set_tweak': 'sound', 'value': 'default'},
782 31 : {'set_tweak': 'highlight'}
783 : ],
784 31 : 'conditions': [
785 31 : {'kind': 'contains_display_name'}
786 : ],
787 : 'default': true,
788 : 'enabled': true,
789 : 'rule_id': '.m.rule.contains_display_name'
790 : },
791 31 : {
792 31 : 'actions': [
793 : 'notify',
794 31 : {'set_tweak': 'sound', 'value': 'default'},
795 31 : {'set_tweak': 'highlight', 'value': false}
796 : ],
797 31 : 'conditions': [
798 31 : {'is': '2', 'kind': 'room_member_count'},
799 31 : {
800 : 'key': 'type',
801 : 'kind': 'event_match',
802 : 'pattern': 'm.room.message'
803 : }
804 : ],
805 : 'default': true,
806 : 'enabled': true,
807 : 'rule_id': '.m.rule.room_one_to_one'
808 : },
809 31 : {
810 31 : 'actions': [
811 : 'notify',
812 31 : {'set_tweak': 'sound', 'value': 'default'},
813 31 : {'set_tweak': 'highlight', 'value': false}
814 : ],
815 31 : 'conditions': [
816 31 : {
817 : 'key': 'type',
818 : 'kind': 'event_match',
819 : 'pattern': 'm.room.member'
820 : },
821 31 : {
822 : 'key': 'content.membership',
823 : 'kind': 'event_match',
824 : 'pattern': 'invite'
825 : },
826 31 : {
827 : 'key': 'state_key',
828 : 'kind': 'event_match',
829 : 'pattern': '@alice:example.com'
830 : }
831 : ],
832 : 'default': true,
833 : 'enabled': true,
834 : 'rule_id': '.m.rule.invite_for_me'
835 : },
836 31 : {
837 31 : 'actions': [
838 : 'notify',
839 31 : {'set_tweak': 'highlight', 'value': false}
840 : ],
841 31 : 'conditions': [
842 31 : {
843 : 'key': 'type',
844 : 'kind': 'event_match',
845 : 'pattern': 'm.room.member'
846 : }
847 : ],
848 : 'default': true,
849 : 'enabled': true,
850 : 'rule_id': '.m.rule.member_event'
851 : },
852 31 : {
853 31 : 'actions': [
854 : 'notify',
855 31 : {'set_tweak': 'highlight', 'value': false}
856 : ],
857 31 : 'conditions': [
858 31 : {
859 : 'key': 'type',
860 : 'kind': 'event_match',
861 : 'pattern': 'm.room.message'
862 : }
863 : ],
864 : 'default': true,
865 : 'enabled': true,
866 : 'rule_id': '.m.rule.message'
867 : }
868 : ]
869 : }
870 : },
871 : 'type': 'm.push_rules'
872 : },
873 31 : {
874 : 'type': 'org.example.custom.config',
875 31 : 'content': {'custom_config_key': 'custom_config_value'}
876 : },
877 31 : {
878 31 : 'content': {
879 31 : '@bob:example.com': [
880 : '!726s6s6q:example.com',
881 : '!hgfedcba:example.com'
882 : ]
883 : },
884 : 'type': 'm.direct'
885 : },
886 31 : {
887 : 'type': EventTypes.SecretStorageDefaultKey,
888 31 : 'content': {'key': '0FajDWYaM6wQ4O60OZnLvwZfsBNu4Bu3'}
889 : },
890 31 : {
891 : 'type': 'm.secret_storage.key.0FajDWYaM6wQ4O60OZnLvwZfsBNu4Bu3',
892 31 : 'content': {
893 : 'algorithm': AlgorithmTypes.secretStorageV1AesHmcSha2,
894 31 : 'passphrase': {
895 : 'algorithm': AlgorithmTypes.pbkdf2,
896 : 'iterations': 500000,
897 : 'salt': 'F4jJ80mr0Fc8mRwU9JgA3lQDyjPuZXQL'
898 : },
899 : 'iv': 'HjbTgIoQH2pI7jQo19NUzA==',
900 : 'mac': 'QbJjQzDnAggU0cM4RBnDxw2XyarRGjdahcKukP9xVlk='
901 : }
902 : },
903 31 : {
904 : 'type': 'm.cross_signing.master',
905 31 : 'content': {
906 31 : 'encrypted': {
907 31 : '0FajDWYaM6wQ4O60OZnLvwZfsBNu4Bu3': {
908 : 'iv': 'eIb2IITxtmcq+1TrT8D5eQ==',
909 : 'ciphertext':
910 : 'lWRTPo5qxf4LAVwVPzGHOyMcP181n7bb9/B0lvkLDC2Oy4DvAL0eLx2x3bY=',
911 : 'mac': 'Ynx89tIxPkx0o6ljMgxszww17JOgB4tg4etmNnMC9XI='
912 : }
913 : }
914 : }
915 : },
916 31 : {
917 : 'type': EventTypes.CrossSigningSelfSigning,
918 31 : 'content': {
919 31 : 'encrypted': {
920 31 : '0FajDWYaM6wQ4O60OZnLvwZfsBNu4Bu3': {
921 : 'iv': 'YqU2XIjYulYZl+bkZtGgVw==',
922 : 'ciphertext':
923 : 'kM2TSoy/jR/4d357ZoRPbpPypxQl6XRLo3FsEXz+f7vIOp82GeRp28RYb3k=',
924 : 'mac': 'F+DZa5tAFmWsYSryw5EuEpzTmmABRab4GETkM85bGGo='
925 : }
926 : }
927 : }
928 : },
929 31 : {
930 : 'type': EventTypes.CrossSigningUserSigning,
931 31 : 'content': {
932 31 : 'encrypted': {
933 31 : '0FajDWYaM6wQ4O60OZnLvwZfsBNu4Bu3': {
934 : 'iv': 'D7AM3LXFu7ZlyGOkR+OeqQ==',
935 : 'ciphertext':
936 : 'bYA2+OMgsO6QB1E31aY+ESAWrT0fUBTXqajy4qmL7bVDSZY4Uj64EXNbHuA=',
937 : 'mac': 'j2UtyPo/UBSoiaQCWfzCiRZXp3IRt0ZZujuXgUMjnw4='
938 : }
939 : }
940 : }
941 : },
942 31 : {
943 : 'type': EventTypes.MegolmBackup,
944 31 : 'content': {
945 31 : 'encrypted': {
946 31 : '0FajDWYaM6wQ4O60OZnLvwZfsBNu4Bu3': {
947 : 'iv': 'cL/0MJZaiEd3fNU+I9oJrw==',
948 : 'ciphertext':
949 : 'WL73Pzdk5wZdaaSpaeRH0uZYKcxkuV8IS6Qa2FEfA1+vMeRLuHcWlXbMX0w=',
950 : 'mac': '+xozp909S6oDX8KRV8D8ZFVRyh7eEYQpPP76f+DOsnw='
951 : }
952 : }
953 : }
954 : },
955 31 : {
956 : 'type': 'io.element.recent_emoji',
957 31 : 'content': {
958 31 : 'recent_emoji': [
959 31 : ['👍️', 1],
960 31 : ['🖇️', 0],
961 31 : ['🙃', 'error'],
962 31 : [null, null],
963 31 : [1, '']
964 : ]
965 : }
966 : }
967 : ]
968 : },
969 31 : 'to_device': {
970 31 : 'events': [
971 31 : {
972 : 'sender': '@alice:example.com',
973 : 'type': 'm.new_device',
974 31 : 'content': {
975 : 'device_id': 'XYZABCDE',
976 31 : 'rooms': ['!726s6s6q:example.com']
977 : }
978 : },
979 : // {
980 : // 'sender': '@othertest:fakeServer.notExisting',
981 : // 'content': {
982 : // 'algorithm': AlgorithmTypes.megolmV1AesSha2,
983 : // 'room_id': '!726s6s6q:example.com',
984 : // 'session_id': 'ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU',
985 : // 'session_key':
986 : // 'AgAAAAAQcQ6XrFJk6Prm8FikZDqfry/NbDz8Xw7T6e+/9Yf/q3YHIPEQlzv7IZMNcYb51ifkRzFejVvtphS7wwG2FaXIp4XS2obla14iKISR0X74ugB2vyb1AydIHE/zbBQ1ic5s3kgjMFlWpu/S3FQCnCrv+DPFGEt3ERGWxIl3Bl5X53IjPyVkz65oljz2TZESwz0GH/QFvyOOm8ci0q/gceaF3S7Dmafg3dwTKYwcA5xkcc+BLyrLRzB6Hn+oMAqSNSscnm4mTeT5zYibIhrzqyUTMWr32spFtI9dNR/RFSzfCw'
987 : // },
988 : // 'type': 'm.room_key'
989 : // },
990 31 : {
991 : // this is the commented out m.room_key event - only encrypted
992 : 'sender': '@othertest:fakeServer.notExisting',
993 31 : 'content': {
994 : 'algorithm': AlgorithmTypes.olmV1Curve25519AesSha2,
995 : 'sender_key': 'JBG7ZaPn54OBC7TuIEiylW3BZ+7WcGQhFBPB9pogbAg',
996 31 : 'ciphertext': {
997 31 : '7rvl3jORJkBiK4XX1e5TnGnqz068XfYJ0W++Ml63rgk': {
998 : 'type': 0,
999 : 'body':
1000 : 'Awogyh7K4iLUQjcOxIfi7q7LhBBqv9w0mQ6JI9+U9tv7iF4SIHC6xb5YFWf9voRnmDBbd+0vxD/xDlVNRDlPIKliLGkYGiAkEbtlo+fng4ELtO4gSLKVbcFn7tZwZCEUE8H2miBsCCKABgMKIFrKDJwB7gM3lXPt9yVoh6gQksafKt7VFCNRN5KLKqsDEAAi0AX5EfTV7jJ1ZWAbxftjoSN6kCVIxzGclbyg1HjchmNCX7nxNCHWl+q5ZgqHYZVu2n2mCVmIaKD0kvoEZeY3tV1Itb6zf67BLaU0qgW/QzHCHg5a44tNLjucvL2mumHjIG8k0BY2uh+52HeiMCvSOvtDwHg7nzCASGdqPVCj9Kzw6z7F6nL4e3mYim8zvJd7f+mD9z3ARrypUOLGkTGYbB2PQOovf0Do8WzcaRzfaUCnuu/YVZWKK7DPgG8uhw/TjR6XtraAKZysF+4DJYMG9SQWx558r6s7Z5EUOF5CU2M35w1t1Xxllb3vrS83dtf9LPCrBhLsEBeYEUBE2+bTBfl0BDKqLiB0Cc0N0ixOcHIt6e40wAvW622/gMgHlpNSx8xG12u0s6h6EMWdCXXLWd9fy2q6glFUHvA67A35q7O+M8DVml7Y9xG55Y3DHkMDc9cwgwFkBDCAYQe6pQF1nlKytcVCGREpBs/gq69gHAStMQ8WEg38Lf8u8eBr2DFexrN4U+QAk+S//P3fJgf0bQx/Eosx4fvWSz9En41iC+ADCsWQpMbwHn4JWvtAbn3oW0XmL/OgThTkJMLiCymduYAa1Hnt7a3tP0KTL2/x11F02ggQHL28cCjq5W4zUGjWjl5wo2PsKB6t8aAvMg2ujGD2rCjb4yrv5VIzAKMOZLyj7K0vSK9gwDLQ/4vq+QnKUBG5zrcOze0hX+kz2909/tmAdeCH61Ypw7gbPUJAKnmKYUiB/UgwkJvzMJSsk/SEs5SXosHDI+HsJHJp4Mp4iKD0xRMst+8f9aTjaWwh8ZvELE1ZOhhCbF3RXhxi3x2Nu8ORIz+vhEQ1NOlMc7UIo98Fk/96T36vL/fviowT4C/0AlaapZDJBmKwhmwqisMjY2n1vY29oM2p5BzY1iwP7q9BYdRFst6xwo57TNSuRwQw7IhFsf0k+ABuPEZy5xB5nPHyIRTf/pr3Hw',
1001 : },
1002 : },
1003 : },
1004 : 'type': 'm.room.encrypted',
1005 : },
1006 : ]
1007 : },
1008 31 : 'device_lists': {
1009 31 : 'changed': [
1010 : '@alice:example.com',
1011 : ],
1012 31 : 'left': [
1013 : '@bob:example.com',
1014 : ],
1015 : },
1016 31 : 'device_one_time_keys_count': {'curve25519': 10, 'signed_curve25519': 20},
1017 : };
1018 :
1019 9 : static Map<String, dynamic> archiveSyncResponse = {
1020 9 : 'next_batch': Random().nextDouble().toString(),
1021 6 : 'presence': {'events': []},
1022 6 : 'account_data': {'events': []},
1023 6 : 'to_device': {'events': []},
1024 3 : 'rooms': {
1025 3 : 'join': {},
1026 3 : 'invite': {},
1027 3 : 'leave': {
1028 3 : '!5345234234:example.com': {
1029 3 : 'timeline': {
1030 3 : 'events': [
1031 3 : {
1032 3 : 'content': {
1033 : 'body': 'This is a second text example message',
1034 : 'msgtype': 'm.text',
1035 : 'format': 'org.matrix.custom.html',
1036 : 'formatted_body':
1037 : '<b>This is a second text example message</b>'
1038 : },
1039 : 'type': 'm.room.message',
1040 : 'event_id': '143274597446PhrSn:example.org',
1041 : 'room_id': '!5345234234:example.com',
1042 : 'sender': '@example:example.org',
1043 : 'origin_server_ts': 1432735824654,
1044 3 : 'unsigned': {'age': 1234}
1045 : },
1046 3 : {
1047 3 : 'content': {
1048 : 'body': 'This is a first text example message',
1049 : 'msgtype': 'm.text',
1050 : 'format': 'org.matrix.custom.html',
1051 : 'formatted_body':
1052 : '<b>This is a first text example message</b>'
1053 : },
1054 : 'type': 'm.room.message',
1055 : 'event_id': '143274597443PhrSn:example.org',
1056 : 'room_id': '!5345234234:example.com',
1057 : 'sender': '@example:example.org',
1058 : 'origin_server_ts': 1432735824653,
1059 3 : 'unsigned': {'age': 1234}
1060 : }
1061 : ],
1062 : 'prev_batch': 't_1234a'
1063 : },
1064 3 : 'state': {
1065 3 : 'events': [
1066 3 : {
1067 3 : 'content': {'name': 'The room name'},
1068 : 'type': 'm.room.name',
1069 : 'event_id': '2143273582443PhrSn:example.org',
1070 : 'room_id': '!5345234234:example.com',
1071 : 'sender': '@example:example.org',
1072 : 'origin_server_ts': 1432735824653,
1073 3 : 'unsigned': {'age': 1234},
1074 : 'state_key': ''
1075 : },
1076 : ]
1077 : },
1078 3 : 'account_data': {
1079 3 : 'events': [
1080 3 : {
1081 : 'type': 'test.type.data',
1082 3 : 'content': {'foo': 'bar'},
1083 : },
1084 : ],
1085 : },
1086 : },
1087 3 : '!5345234235:example.com': {
1088 6 : 'timeline': {'events': []},
1089 3 : 'state': {
1090 3 : 'events': [
1091 3 : {
1092 3 : 'content': {'name': 'The room name 2'},
1093 : 'type': 'm.room.name',
1094 : 'event_id': '2143273582443PhrSn:example.org',
1095 : 'room_id': '!5345234235:example.com',
1096 : 'sender': '@example:example.org',
1097 : 'origin_server_ts': 1432735824653,
1098 3 : 'unsigned': {'age': 1234},
1099 : 'state_key': ''
1100 : },
1101 : ]
1102 : },
1103 : 'prev_batch': 't_1234b'
1104 : },
1105 : },
1106 : }
1107 : };
1108 :
1109 : Map<String, Map<String, dynamic>> api = {
1110 : 'GET': {
1111 0 : '/path/to/auth/error': (var req) => {
1112 : 'errcode': 'M_FORBIDDEN',
1113 : 'error': 'Blabla',
1114 : },
1115 0 : '/media/v3/preview_url?url=https%3A%2F%2Fmatrix.org&ts=10': (var req) => {
1116 : 'og:title': 'Matrix Blog Post',
1117 : 'og:description': 'This is a really cool blog post from matrix.org',
1118 : 'og:image': 'mxc://example.com/ascERGshawAWawugaAcauga',
1119 : 'og:image:type': 'image/png',
1120 : 'og:image:height': 48,
1121 : 'og:image:width': 48,
1122 : 'matrix:image:size': 102400
1123 : },
1124 8 : '/media/v3/config': (var req) => {'m.upload.size': 50000000},
1125 0 : '/.well-known/matrix/client': (var req) => {
1126 0 : 'm.homeserver': {'base_url': 'https://matrix.example.com'},
1127 0 : 'm.identity_server': {'base_url': 'https://identity.example.com'},
1128 0 : 'org.example.custom.property': {
1129 : 'app_url': 'https://custom.app.example.org'
1130 : }
1131 : },
1132 : '/client/v3/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags':
1133 0 : (var req) => {
1134 0 : 'tags': {
1135 0 : 'm.favourite': {'order': 0.1},
1136 0 : 'u.Work': {'order': 0.7},
1137 0 : 'u.Customers': {}
1138 : }
1139 : },
1140 0 : '/client/v3/events?from=1234&timeout=10&roomId=%211234': (var req) => {
1141 : 'start': 's3456_9_0',
1142 : 'end': 's3457_9_0',
1143 0 : 'chunk': [
1144 0 : {
1145 0 : 'content': {
1146 : 'body': 'This is an example text message',
1147 : 'msgtype': 'm.text',
1148 : 'format': 'org.matrix.custom.html',
1149 : 'formatted_body': '<b>This is an example text message</b>'
1150 : },
1151 : 'type': 'm.room.message',
1152 : 'event_id': '\$143273582443PhrSn:example.org',
1153 : 'room_id': '!somewhere:over.the.rainbow',
1154 : 'sender': '@example:example.org',
1155 : 'origin_server_ts': 1432735824653,
1156 0 : 'unsigned': {'age': 1234}
1157 : }
1158 : ]
1159 : },
1160 0 : '/client/v3/thirdparty/location?alias=1234': (var req) => [
1161 0 : {
1162 : 'alias': '#freenode_#matrix:matrix.org',
1163 : 'protocol': 'irc',
1164 0 : 'fields': {'network': 'freenode', 'channel': '#matrix'}
1165 : }
1166 : ],
1167 0 : '/client/v3/thirdparty/location/irc': (var req) => [
1168 0 : {
1169 : 'alias': '#freenode_#matrix:matrix.org',
1170 : 'protocol': 'irc',
1171 0 : 'fields': {'network': 'freenode', 'channel': '#matrix'}
1172 : }
1173 : ],
1174 0 : '/client/v3/thirdparty/user/irc': (var req) => [
1175 0 : {
1176 : 'userid': '@_gitter_jim:matrix.org',
1177 : 'protocol': 'gitter',
1178 0 : 'fields': {'user': 'jim'}
1179 : }
1180 : ],
1181 0 : '/client/v3/thirdparty/user?userid=1234': (var req) => [
1182 0 : {
1183 : 'userid': '@_gitter_jim:matrix.org',
1184 : 'protocol': 'gitter',
1185 0 : 'fields': {'user': 'jim'}
1186 : }
1187 : ],
1188 0 : '/client/v3/thirdparty/protocol/irc': (var req) => {
1189 0 : 'user_fields': ['network', 'nickname'],
1190 0 : 'location_fields': ['network', 'channel'],
1191 : 'icon': 'mxc://example.org/aBcDeFgH',
1192 0 : 'field_types': {
1193 0 : 'network': {
1194 : 'regexp': '([a-z0-9]+\\.)*[a-z0-9]+',
1195 : 'placeholder': 'irc.example.org'
1196 : },
1197 0 : 'nickname': {'regexp': '[^\\s#]+', 'placeholder': 'username'},
1198 0 : 'channel': {'regexp': '#[^\\s]+', 'placeholder': '#foobar'}
1199 : },
1200 0 : 'instances': [
1201 0 : {
1202 : 'desc': 'Freenode',
1203 : 'icon': 'mxc://example.org/JkLmNoPq',
1204 0 : 'fields': {'network': 'freenode'},
1205 : 'network_id': 'freenode'
1206 : }
1207 : ]
1208 : },
1209 0 : '/client/v3/thirdparty/protocols': (var req) => {
1210 0 : 'irc': {
1211 0 : 'user_fields': ['network', 'nickname'],
1212 0 : 'location_fields': ['network', 'channel'],
1213 : 'icon': 'mxc://example.org/aBcDeFgH',
1214 0 : 'field_types': {
1215 0 : 'network': {
1216 : 'regexp': '([a-z0-9]+\\.)*[a-z0-9]+',
1217 : 'placeholder': 'irc.example.org'
1218 : },
1219 0 : 'nickname': {'regexp': '[^\\s]+', 'placeholder': 'username'},
1220 0 : 'channel': {'regexp': '#[^\\s]+', 'placeholder': '#foobar'}
1221 : },
1222 0 : 'instances': [
1223 0 : {
1224 : 'network_id': 'freenode',
1225 : 'desc': 'Freenode',
1226 : 'icon': 'mxc://example.org/JkLmNoPq',
1227 0 : 'fields': {'network': 'freenode.net'}
1228 : }
1229 : ]
1230 : },
1231 0 : 'gitter': {
1232 0 : 'user_fields': ['username'],
1233 0 : 'location_fields': ['room'],
1234 : 'icon': 'mxc://example.org/aBcDeFgH',
1235 0 : 'field_types': {
1236 0 : 'username': {'regexp': '@[^\\s]+', 'placeholder': '@username'},
1237 0 : 'room': {
1238 : 'regexp': '[^\\s]+\\/[^\\s]+',
1239 : 'placeholder': 'matrix-org/matrix-doc'
1240 : }
1241 : },
1242 0 : 'instances': [
1243 0 : {
1244 : 'network_id': 'gitter',
1245 : 'desc': 'Gitter',
1246 : 'icon': 'mxc://example.org/zXyWvUt',
1247 0 : 'fields': {}
1248 : }
1249 : ]
1250 : }
1251 : },
1252 0 : '/client/v3/account/whoami': (var req) =>
1253 0 : {'user_id': 'alice@example.com'},
1254 0 : '/client/v3/capabilities': (var req) => {
1255 0 : 'capabilities': {
1256 0 : 'm.change_password': {'enabled': false},
1257 0 : 'm.room_versions': {
1258 : 'default': '1',
1259 0 : 'available': {
1260 : '1': 'stable',
1261 : '2': 'stable',
1262 : '3': 'unstable',
1263 : 'test-version': 'unstable'
1264 : }
1265 : },
1266 0 : 'com.example.custom.ratelimit': {'max_requests_per_hour': 600}
1267 : }
1268 : },
1269 0 : '/client/v3/rooms/1234/context/1234?filter=%7B%7D&limit=10': (var req) =>
1270 0 : {
1271 : 'end': 't29-57_2_0_2',
1272 0 : 'events_after': [
1273 0 : {
1274 0 : 'content': {
1275 : 'body': 'This is an example text message',
1276 : 'msgtype': 'm.text',
1277 : 'format': 'org.matrix.custom.html',
1278 : 'formatted_body': '<b>This is an example text message</b>'
1279 : },
1280 : 'type': 'm.room.message',
1281 : 'event_id': '\$143273582443PhrSn:example.org',
1282 : 'room_id': '!636q39766251:example.com',
1283 : 'sender': '@example:example.org',
1284 : 'origin_server_ts': 1432735824653,
1285 0 : 'unsigned': {'age': 1234}
1286 : }
1287 : ],
1288 0 : 'event': {
1289 0 : 'content': {
1290 : 'body': 'filename.jpg',
1291 0 : 'info': {
1292 : 'h': 398,
1293 : 'w': 394,
1294 : 'mimetype': 'image/jpeg',
1295 : 'size': 31037
1296 : },
1297 : 'url': 'mxc://example.org/JWEIFJgwEIhweiWJE',
1298 : 'msgtype': 'm.image'
1299 : },
1300 : 'type': 'm.room.message',
1301 : 'event_id': '\$f3h4d129462ha:example.com',
1302 : 'room_id': '!636q39766251:example.com',
1303 : 'sender': '@example:example.org',
1304 : 'origin_server_ts': 1432735824653,
1305 0 : 'unsigned': {'age': 1234}
1306 : },
1307 0 : 'events_before': [
1308 0 : {
1309 0 : 'content': {
1310 : 'body': 'something-important.doc',
1311 : 'filename': 'something-important.doc',
1312 0 : 'info': {'mimetype': 'application/msword', 'size': 46144},
1313 : 'msgtype': 'm.file',
1314 : 'url': 'mxc://example.org/FHyPlCeYUSFFxlgbQYZmoEoe'
1315 : },
1316 : 'type': 'm.room.message',
1317 : 'event_id': '\$143273582443PhrSn:example.org',
1318 : 'room_id': '!636q39766251:example.com',
1319 : 'sender': '@example:example.org',
1320 : 'origin_server_ts': 1432735824653,
1321 0 : 'unsigned': {'age': 1234}
1322 : }
1323 : ],
1324 : 'start': 't27-54_2_0_2',
1325 0 : 'state': [
1326 0 : {
1327 0 : 'content': {
1328 : 'creator': '@example:example.org',
1329 : 'room_version': '1',
1330 : 'm.federate': true,
1331 0 : 'predecessor': {
1332 : 'event_id': '\$something:example.org',
1333 : 'room_id': '!oldroom:example.org'
1334 : }
1335 : },
1336 : 'type': 'm.room.create',
1337 : 'event_id': '\$143273582443PhrSn:example.org',
1338 : 'room_id': '!636q39766251:example.com',
1339 : 'sender': '@example:example.org',
1340 : 'origin_server_ts': 1432735824653,
1341 0 : 'unsigned': {'age': 1234},
1342 : 'state_key': ''
1343 : },
1344 0 : {
1345 0 : 'content': {
1346 : 'membership': 'join',
1347 : 'avatar_url': 'mxc://example.org/SEsfnsuifSDFSSEF',
1348 : 'displayname': 'Alice Margatroid'
1349 : },
1350 : 'type': 'm.room.member',
1351 : 'event_id': '\$143273582443PhrSn:example.org',
1352 : 'room_id': '!636q39766251:example.com',
1353 : 'sender': '@example:example.org',
1354 : 'origin_server_ts': 1432735824653,
1355 0 : 'unsigned': {'age': 1234},
1356 : 'state_key': '@alice:example.org'
1357 : }
1358 : ]
1359 : },
1360 0 : '/client/v3/admin/whois/%40alice%3Aexample.com': (var req) => {
1361 : 'user_id': '@peter:rabbit.rocks',
1362 0 : 'devices': {
1363 0 : 'teapot': {
1364 0 : 'sessions': [
1365 0 : {
1366 0 : 'connections': [
1367 0 : {
1368 : 'ip': '127.0.0.1',
1369 : 'last_seen': 1411996332123,
1370 : 'user_agent': 'curl/7.31.0-DEV'
1371 : },
1372 0 : {
1373 : 'ip': '10.0.0.2',
1374 : 'last_seen': 1411996332123,
1375 : 'user_agent':
1376 : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36'
1377 : }
1378 : ]
1379 : }
1380 : ]
1381 : }
1382 : }
1383 : },
1384 : '/client/v3/user/%40alice%3Aexample.com/account_data/test.account.data':
1385 0 : (var req) => {'foo': 'bar'},
1386 : '/client/v3/user/%40alice%3Aexample.com/rooms/1234/account_data/test.account.data':
1387 0 : (var req) => {'foo': 'bar'},
1388 0 : '/client/v3/directory/room/%23testalias%3Aexample.com': (var reqI) => {
1389 : 'room_id': '!abnjk1jdasj98:capuchins.com',
1390 0 : 'servers': ['capuchins.com', 'matrix.org', 'another.com']
1391 : },
1392 0 : '/client/v3/account/3pid': (var req) => {
1393 0 : 'threepids': [
1394 0 : {
1395 : 'medium': 'email',
1396 : 'address': 'monkey@banana.island',
1397 : 'validated_at': 1535176800000,
1398 : 'added_at': 1535336848756
1399 : }
1400 : ]
1401 : },
1402 0 : '/client/v3/devices': (var req) => {
1403 0 : 'devices': [
1404 0 : {
1405 : 'device_id': 'QBUAZIFURK',
1406 : 'display_name': 'android',
1407 : 'last_seen_ip': '1.2.3.4',
1408 : 'last_seen_ts': 1474491775024
1409 : }
1410 : ]
1411 : },
1412 0 : '/client/v3/notifications?from=1234&limit=10&only=1234': (var req) => {
1413 : 'next_token': 'abcdef',
1414 0 : 'notifications': [
1415 0 : {
1416 0 : 'actions': ['notify'],
1417 : 'profile_tag': 'hcbvkzxhcvb',
1418 : 'read': true,
1419 : 'room_id': '!abcdefg:example.com',
1420 : 'ts': 1475508881945,
1421 0 : 'event': {
1422 0 : 'content': {
1423 : 'body': 'This is an example text message',
1424 : 'msgtype': 'm.text',
1425 : 'format': 'org.matrix.custom.html',
1426 : 'formatted_body': '<b>This is an example text message</b>'
1427 : },
1428 : 'type': 'm.room.message',
1429 : 'event_id': '\$143273582443PhrSn:example.org',
1430 : 'room_id': '!jEsUZKDJdhlrceRyVU:example.org',
1431 : 'sender': '@example:example.org',
1432 : 'origin_server_ts': 1432735824653,
1433 0 : 'unsigned': {'age': 1234}
1434 : }
1435 : }
1436 : ]
1437 : },
1438 0 : '/client/v3/devices/QBUAZIFURK': (var req) => {
1439 : 'device_id': 'QBUAZIFURK',
1440 : 'display_name': 'android',
1441 : 'last_seen_ip': '1.2.3.4',
1442 : 'last_seen_ts': 1474491775024
1443 : },
1444 0 : '/client/v3/profile/%40test%3AfakeServer.notExisting': (var reqI) =>
1445 0 : {'displayname': 'Some First Name Some Last Name'},
1446 0 : '/client/v3/profile/%40alice%3Aexample.com/displayname': (var reqI) =>
1447 0 : {'displayname': 'Alice M'},
1448 0 : '/client/v3/profile/%40alice%3Aexample.com/avatar_url': (var reqI) =>
1449 0 : {'avatar_url': 'mxc://test'},
1450 0 : '/client/v3/profile/%40alice%3Aexample.com': (var reqI) => {
1451 : 'avatar_url': 'mxc://test',
1452 : 'displayname': 'Alice M',
1453 : },
1454 4 : '/client/v3/voip/turnServer': (var req) => {
1455 : 'username': '1443779631:@user:example.com',
1456 : 'password': 'JlKfBy1QwLrO20385QyAtEyIv0=',
1457 2 : 'uris': [
1458 : 'turn:turn.example.com:3478?transport=udp',
1459 : 'turn:10.20.30.40:3478?transport=tcp',
1460 : 'turns:10.20.30.40:443?transport=tcp'
1461 : ],
1462 : 'ttl': 86400
1463 : },
1464 : '/client/v3/presence/${Uri.encodeComponent('@alice:example.com')}/status':
1465 0 : (var req) => {
1466 : 'presence': 'unavailable',
1467 : 'last_active_ago': 420845,
1468 : 'status_msg': 'test',
1469 : 'currently_active': false
1470 : },
1471 0 : '/client/v3/keys/changes?from=1234&to=1234': (var req) => {
1472 0 : 'changed': ['@alice:example.com', '@bob:example.org'],
1473 0 : 'left': ['@clara:example.com', '@doug:example.org']
1474 : },
1475 0 : '/client/v3/pushers': (var req) => {
1476 0 : 'pushers': [
1477 0 : {
1478 : 'pushkey': 'Xp/MzCt8/9DcSNE9cuiaoT5Ac55job3TdLSSmtmYl4A=',
1479 : 'kind': 'http',
1480 : 'app_id': 'face.mcapp.appy.prod',
1481 : 'app_display_name': 'Appy McAppface',
1482 : 'device_display_name': 'Alices Phone',
1483 : 'profile_tag': 'xyz',
1484 : 'lang': 'en-US',
1485 0 : 'data': {
1486 : 'url': 'https://example.com/_matrix/push/v1/notify',
1487 : 'format': 'event_id_only',
1488 : }
1489 : }
1490 : ]
1491 : },
1492 : '/client/v3/publicRooms?limit=10&since=1234&server=example.com':
1493 0 : (var req) => {
1494 0 : 'chunk': [
1495 0 : {
1496 0 : 'aliases': ['#murrays:cheese.bar'],
1497 : 'canonical_alias': '#murrays:cheese.bar',
1498 : 'avatar_url': 'mxc://bleeker.street/CHEDDARandBRIE',
1499 : 'guest_can_join': false,
1500 : 'name': 'CHEESE',
1501 : 'num_joined_members': 37,
1502 : 'room_id': '!ol19s:bleecker.street',
1503 : 'topic': 'Tasty tasty cheese',
1504 : 'world_readable': true
1505 : }
1506 : ],
1507 : 'next_batch': 'p190q',
1508 : 'prev_batch': 'p1902',
1509 : 'total_room_count_estimate': 115
1510 : },
1511 0 : '/client/v3/room/!localpart%3Aexample.com/aliases': (var req) => {
1512 0 : 'aliases': [
1513 : '#somewhere:example.com',
1514 : '#another:example.com',
1515 : '#hat_trick:example.com'
1516 : ]
1517 : },
1518 0 : '/client/v3/joined_rooms': (var req) => {
1519 0 : 'joined_rooms': ['!foo:example.com']
1520 : },
1521 0 : '/client/v3/directory/list/room/!localpart%3Aexample.com': (var req) =>
1522 0 : {'visibility': 'public'},
1523 0 : '/client/v3/rooms/1/state/m.room.member/@alice:example.com': (var req) =>
1524 0 : {'displayname': 'Alice'},
1525 2 : '/client/v3/profile/%40getme%3Aexample.com': (var req) => {
1526 : 'avatar_url': 'mxc://test',
1527 : 'displayname': 'You got me',
1528 : },
1529 : '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.member/@getme%3Aexample.com':
1530 0 : (var req) => {
1531 : 'avatar_url': 'mxc://test',
1532 : 'displayname': 'You got me',
1533 : },
1534 0 : '/client/v3/rooms/!localpart%3Aserver.abc/state': (var req) => [
1535 0 : {
1536 0 : 'content': {'join_rule': 'public'},
1537 : 'type': 'm.room.join_rules',
1538 : 'event_id': '\$143273582443PhrSn:example.org',
1539 : 'room_id': '!636q39766251:example.com',
1540 : 'sender': '@example:example.org',
1541 : 'origin_server_ts': 1432735824653,
1542 0 : 'unsigned': {'age': 1234},
1543 : 'state_key': ''
1544 : },
1545 0 : {
1546 0 : 'content': {
1547 : 'membership': 'join',
1548 : 'avatar_url': 'mxc://example.org/SEsfnsuifSDFSSEF',
1549 : 'displayname': 'Alice Margatroid'
1550 : },
1551 : 'type': 'm.room.member',
1552 : 'event_id': '\$143273582443PhrSn:example.org',
1553 : 'room_id': '!636q39766251:example.com',
1554 : 'sender': '@example:example.org',
1555 : 'origin_server_ts': 1432735824653,
1556 0 : 'unsigned': {'age': 1234},
1557 : 'state_key': '@alice:example.org'
1558 : },
1559 0 : {
1560 0 : 'content': {
1561 : 'creator': '@example:example.org',
1562 : 'room_version': '1',
1563 : 'm.federate': true,
1564 0 : 'predecessor': {
1565 : 'event_id': '\$something:example.org',
1566 : 'room_id': '!oldroom:example.org'
1567 : }
1568 : },
1569 : 'type': 'm.room.create',
1570 : 'event_id': '\$143273582443PhrSn:example.org',
1571 : 'room_id': '!636q39766251:example.com',
1572 : 'sender': '@example:example.org',
1573 : 'origin_server_ts': 1432735824653,
1574 0 : 'unsigned': {'age': 1234},
1575 : 'state_key': ''
1576 : },
1577 0 : {
1578 0 : 'content': {
1579 : 'ban': 50,
1580 0 : 'events': {'m.room.name': 100, 'm.room.power_levels': 100},
1581 : 'events_default': 0,
1582 : 'invite': 50,
1583 : 'kick': 50,
1584 : 'redact': 50,
1585 : 'state_default': 50,
1586 0 : 'users': {'@example:localhost': 100},
1587 : 'users_default': 0,
1588 0 : 'notifications': {'room': 20}
1589 : },
1590 : 'type': 'm.room.power_levels',
1591 : 'event_id': '\$143273582443PhrSn:example.org',
1592 : 'room_id': '!636q39766251:example.com',
1593 : 'sender': '@example:example.org',
1594 : 'origin_server_ts': 1432735824653,
1595 0 : 'unsigned': {'age': 1234},
1596 : 'state_key': ''
1597 : }
1598 : ],
1599 : '/client/v3/rooms/!localpart:server.abc/state/m.room.member/@getme:example.com':
1600 0 : (var req) => {
1601 : 'avatar_url': 'mxc://test',
1602 : 'displayname': 'You got me',
1603 : },
1604 0 : '/client/v3/rooms/!localpart:server.abc/event/1234': (var req) => {
1605 0 : 'content': {
1606 : 'body': 'This is an example text message',
1607 : 'msgtype': 'm.text',
1608 : 'format': 'org.matrix.custom.html',
1609 : 'formatted_body': '<b>This is an example text message</b>'
1610 : },
1611 : 'type': 'm.room.message',
1612 : 'event_id': '143273582443PhrSn:example.org',
1613 : 'room_id': '!localpart:server.abc',
1614 : 'sender': '@example:example.org',
1615 : 'origin_server_ts': 1432735824653,
1616 0 : 'unsigned': {'age': 1234}
1617 : },
1618 6 : '/client/v3/rooms/!localpart%3Aserver.abc/event/1234': (var req) => {
1619 3 : 'content': {
1620 : 'body': 'This is an example text message',
1621 : 'msgtype': 'm.text',
1622 : 'format': 'org.matrix.custom.html',
1623 : 'formatted_body': '<b>This is an example text message</b>'
1624 : },
1625 : 'type': 'm.room.message',
1626 : 'event_id': '143273582443PhrSn:example.org',
1627 : 'room_id': '!localpart:server.abc',
1628 : 'sender': '@example:example.org',
1629 : 'origin_server_ts': 1432735824653,
1630 3 : 'unsigned': {'age': 1234}
1631 : },
1632 4 : '/client/v3/rooms/!1234%3Aexample.com/event/not_found': (var req) => {
1633 : 'errcode': 'M_NOT_FOUND',
1634 : 'error': 'Event not found',
1635 : },
1636 : '/client/v3/rooms/!1234%3Aexample.com/event/unencrypted_event':
1637 4 : (var req) => {
1638 2 : 'content': {
1639 : 'body': 'This is an example text message',
1640 : 'msgtype': 'm.text',
1641 : 'format': 'org.matrix.custom.html',
1642 : 'formatted_body': '<b>This is an example text message</b>'
1643 : },
1644 : 'type': 'm.room.message',
1645 : 'event_id': '143273582443PhrSn:example.org',
1646 : 'room_id': '!localpart:server.abc',
1647 : 'sender': '@example:example.org',
1648 : 'origin_server_ts': 1432735824653,
1649 2 : 'unsigned': {'age': 1234}
1650 : },
1651 2 : '/client/v3/rooms/!1234%3Aexample.com/event/encrypted_event': (var req) =>
1652 2 : {
1653 2 : 'content': {
1654 : 'algorithm': 'm.megolm.v1.aes-sha2',
1655 : 'ciphertext': 'invalid',
1656 : 'device_id': 'SOME_DEVICE',
1657 : 'sender_key': 'invalid',
1658 : 'session_id': 'not_found'
1659 : },
1660 : 'type': 'm.room.encrypted',
1661 : 'event_id': '143273582443PhrSn:example.org',
1662 : 'room_id': '!localpart:server.abc',
1663 : 'sender': '@example:example.org',
1664 : 'origin_server_ts': 1432735824653,
1665 2 : 'unsigned': {'age': 1234}
1666 : },
1667 : '/client/v3/rooms/!localpart%3Aserver.abc/messages?from=1234&dir=b&to=1234&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
1668 0 : (var req) => messagesResponsePast,
1669 : '/client/v3/rooms/!localpart%3Aserver.abc/messages?from=&dir=b&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
1670 0 : (var req) => messagesResponsePast,
1671 : '/client/v3/rooms/!1234%3Aexample.com/messages?from=1234&dir=b&limit=30&filter=%7B%22lazy_load_members%22%3Atrue%7D':
1672 1 : (var req) => messagesResponsePast,
1673 : '/client/v3/rooms/!localpart%3Aserver.abc/messages?from=t456&dir=f&to=1234&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
1674 0 : (var req) => messagesResponseFuture,
1675 : '/client/v3/rooms/!1234%3Aexample.com/messages?from=t456&dir=f&limit=30&filter=%7B%22lazy_load_members%22%3Atrue%7D':
1676 1 : (var req) => messagesResponseFuture,
1677 : '/client/v3/rooms/!localpart%3Aserver.abc/messages?from=t789&dir=f&to=1234&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
1678 0 : (var req) => messagesResponseFutureEnd,
1679 : '/client/v3/rooms/!1234%3Aexample.com/messages?from=t789&dir=f&limit=30&filter=%7B%22lazy_load_members%22%3Atrue%7D':
1680 1 : (var req) => messagesResponseFutureEnd,
1681 : '/client/v3/rooms/!5345234234%3Aexample.com/messages?from=t_1234a&dir=b&limit=30&filter=%7B%22lazy_load_members%22%3Atrue%7D':
1682 4 : (var req) => archivesMessageResponse,
1683 66 : '/client/versions': (var req) => {
1684 33 : 'versions': [
1685 : 'v1.1',
1686 : 'v1.2',
1687 : ],
1688 33 : 'unstable_features': {'m.lazy_load_members': true},
1689 : },
1690 66 : '/client/v3/login': (var req) => {
1691 33 : 'flows': [
1692 33 : {'type': 'm.login.password'}
1693 : ]
1694 : },
1695 0 : '/client/v3/rooms/!localpart%3Aserver.abc/joined_members': (var req) => {
1696 0 : 'joined': {
1697 0 : '@bar:example.com': {
1698 : 'display_name': 'Bar',
1699 : 'avatar_url': 'mxc://riot.ovh/printErCATzZijQsSDWorRaK'
1700 : }
1701 : }
1702 : },
1703 : '/client/v3/rooms/!localpart%3Aserver.abc/members?at=1234&membership=join¬_membership=leave':
1704 0 : (var req) => {
1705 0 : 'chunk': [
1706 0 : {
1707 0 : 'content': {
1708 : 'membership': 'join',
1709 : 'avatar_url': 'mxc://example.org/SEsfnsuifSDFSSEF',
1710 : 'displayname': 'Alice Margatroid'
1711 : },
1712 : 'type': 'm.room.member',
1713 : 'event_id': '§143273582443PhrSn:example.org',
1714 : 'room_id': '!636q39766251:example.com',
1715 : 'sender': '@alice:example.com',
1716 : 'origin_server_ts': 1432735824653,
1717 0 : 'unsigned': {'age': 1234},
1718 : 'state_key': '@alice:example.com'
1719 : }
1720 : ]
1721 : },
1722 0 : '/client/v3/rooms/!696r7674:example.com/members': (var req) => {
1723 0 : 'chunk': [
1724 0 : {
1725 0 : 'content': {
1726 : 'membership': 'join',
1727 : 'avatar_url': 'mxc://example.org/SEsfnsuifSDFSSEF',
1728 : 'displayname': 'Alice Margatroid'
1729 : },
1730 : 'type': 'm.room.member',
1731 : 'event_id': '§143273582443PhrSn:example.org',
1732 : 'room_id': '!636q39766251:example.com',
1733 : 'sender': '@alice:example.com',
1734 : 'origin_server_ts': 1432735824653,
1735 0 : 'unsigned': {'age': 1234},
1736 : 'state_key': '@alice:example.com'
1737 : }
1738 : ]
1739 : },
1740 2 : '/client/v3/rooms/!726s6s6q%3Aexample.com/members': (var req) => {
1741 1 : 'chunk': [
1742 1 : {
1743 1 : 'content': {
1744 : 'membership': 'join',
1745 : 'avatar_url': 'mxc://example.org/SEsfnsuifSDFSSEF',
1746 : 'displayname': 'Alice Margatroid'
1747 : },
1748 : 'type': 'm.room.member',
1749 : 'event_id': '§143273582443PhrSn:example.org',
1750 : 'room_id': '!636q39766251:example.com',
1751 : 'sender': '@alice:example.com',
1752 : 'origin_server_ts': 1432735824653,
1753 1 : 'unsigned': {'age': 1234},
1754 : 'state_key': '@alice:example.com'
1755 : }
1756 : ]
1757 : },
1758 0 : '/client/v3/rooms/!localpart%3Aserver.abc/members': (var req) => {
1759 0 : 'chunk': [
1760 0 : {
1761 0 : 'content': {
1762 : 'membership': 'join',
1763 : 'avatar_url': 'mxc://example.org/SEsfnsuifSDFSSEF',
1764 : 'displayname': 'Alice Margatroid'
1765 : },
1766 : 'type': 'm.room.member',
1767 : 'event_id': '§143273582443PhrSn:example.org',
1768 : 'room_id': '!636q39766251:example.com',
1769 : 'sender': '@example:example.org',
1770 : 'origin_server_ts': 1432735824653,
1771 0 : 'unsigned': {'age': 1234},
1772 : 'state_key': '@alice:example.org'
1773 : }
1774 : ]
1775 : },
1776 0 : '/client/v3/pushrules/global/content/nocake': (var req) => {
1777 0 : 'actions': ['dont_notify'],
1778 : 'pattern': 'cake*lie',
1779 : 'rule_id': 'nocake',
1780 : 'enabled': true,
1781 : 'default': false
1782 : },
1783 0 : '/client/v3/pushrules/global/content/nocake/enabled': (var req) => {
1784 : 'enabled': true,
1785 : },
1786 0 : '/client/v3/pushrules/global/content/nocake/actions': (var req) => {
1787 0 : 'actions': ['notify']
1788 : },
1789 0 : '/client/v3/pushrules': (var req) => {
1790 0 : 'global': {
1791 0 : 'content': [
1792 0 : {
1793 0 : 'actions': [
1794 : 'notify',
1795 0 : {'set_tweak': 'sound', 'value': 'default'},
1796 0 : {'set_tweak': 'highlight'}
1797 : ],
1798 : 'default': true,
1799 : 'enabled': true,
1800 : 'pattern': 'alice',
1801 : 'rule_id': '.m.rule.contains_user_name'
1802 : }
1803 : ],
1804 0 : 'override': [
1805 0 : {
1806 0 : 'actions': ['dont_notify'],
1807 0 : 'conditions': [],
1808 : 'default': true,
1809 : 'enabled': false,
1810 : 'rule_id': '.m.rule.master'
1811 : },
1812 0 : {
1813 0 : 'actions': ['dont_notify'],
1814 0 : 'conditions': [
1815 0 : {
1816 : 'key': 'content.msgtype',
1817 : 'kind': 'event_match',
1818 : 'pattern': 'm.notice'
1819 : }
1820 : ],
1821 : 'default': true,
1822 : 'enabled': true,
1823 : 'rule_id': '.m.rule.suppress_notices'
1824 : }
1825 : ],
1826 0 : 'room': [],
1827 0 : 'sender': [],
1828 0 : 'underride': [
1829 0 : {
1830 0 : 'actions': [
1831 : 'notify',
1832 0 : {'set_tweak': 'sound', 'value': 'ring'},
1833 0 : {'set_tweak': 'highlight', 'value': false}
1834 : ],
1835 0 : 'conditions': [
1836 0 : {
1837 : 'key': 'type',
1838 : 'kind': 'event_match',
1839 : 'pattern': 'm.call.invite'
1840 : }
1841 : ],
1842 : 'default': true,
1843 : 'enabled': true,
1844 : 'rule_id': '.m.rule.call'
1845 : },
1846 0 : {
1847 0 : 'actions': [
1848 : 'notify',
1849 0 : {'set_tweak': 'sound', 'value': 'default'},
1850 0 : {'set_tweak': 'highlight'}
1851 : ],
1852 0 : 'conditions': [
1853 0 : {'kind': 'contains_display_name'}
1854 : ],
1855 : 'default': true,
1856 : 'enabled': true,
1857 : 'rule_id': '.m.rule.contains_display_name'
1858 : },
1859 0 : {
1860 0 : 'actions': [
1861 : 'notify',
1862 0 : {'set_tweak': 'sound', 'value': 'default'},
1863 0 : {'set_tweak': 'highlight', 'value': false}
1864 : ],
1865 0 : 'conditions': [
1866 0 : {'is': '2', 'kind': 'room_member_count'}
1867 : ],
1868 : 'default': true,
1869 : 'enabled': true,
1870 : 'rule_id': '.m.rule.room_one_to_one'
1871 : },
1872 0 : {
1873 0 : 'actions': [
1874 : 'notify',
1875 0 : {'set_tweak': 'sound', 'value': 'default'},
1876 0 : {'set_tweak': 'highlight', 'value': false}
1877 : ],
1878 0 : 'conditions': [
1879 0 : {
1880 : 'key': 'type',
1881 : 'kind': 'event_match',
1882 : 'pattern': 'm.room.member'
1883 : },
1884 0 : {
1885 : 'key': 'content.membership',
1886 : 'kind': 'event_match',
1887 : 'pattern': 'invite'
1888 : },
1889 0 : {
1890 : 'key': 'state_key',
1891 : 'kind': 'event_match',
1892 : 'pattern': '@alice:example.com'
1893 : }
1894 : ],
1895 : 'default': true,
1896 : 'enabled': true,
1897 : 'rule_id': '.m.rule.invite_for_me'
1898 : },
1899 0 : {
1900 0 : 'actions': [
1901 : 'notify',
1902 0 : {'set_tweak': 'highlight', 'value': false}
1903 : ],
1904 0 : 'conditions': [
1905 0 : {
1906 : 'key': 'type',
1907 : 'kind': 'event_match',
1908 : 'pattern': 'm.room.member'
1909 : }
1910 : ],
1911 : 'default': true,
1912 : 'enabled': true,
1913 : 'rule_id': '.m.rule.member_event'
1914 : },
1915 0 : {
1916 0 : 'actions': [
1917 : 'notify',
1918 0 : {'set_tweak': 'highlight', 'value': false}
1919 : ],
1920 0 : 'conditions': [
1921 0 : {
1922 : 'key': 'type',
1923 : 'kind': 'event_match',
1924 : 'pattern': 'm.room.message'
1925 : }
1926 : ],
1927 : 'default': true,
1928 : 'enabled': true,
1929 : 'rule_id': '.m.rule.message'
1930 : }
1931 : ]
1932 : }
1933 : },
1934 : '/client/v3/sync?filter=%7B%22room%22%3A%7B%22include_leave%22%3Atrue%2C%22timeline%22%3A%7B%22limit%22%3A10%7D%7D%7D&timeout=0':
1935 6 : (var req) => archiveSyncResponse,
1936 62 : '/client/v3/sync?filter=1234&timeout=0': (var req) => syncResponse,
1937 : '/client/v3/sync?filter=1234&since=1234&full_state=false&set_presence=unavailable&timeout=15':
1938 0 : (var req) => syncResponse,
1939 1 : '/client/v3/register/available?username=testuser': (var req) =>
1940 1 : {'available': true},
1941 : '/client/v3/user/${Uri.encodeComponent('@test:fakeServer.notExisting')}/filter/1234':
1942 0 : (var req) => {
1943 0 : 'room': {
1944 0 : 'state': {
1945 0 : 'types': ['m.room.*'],
1946 0 : 'not_rooms': ['!726s6s6q:example.com']
1947 : },
1948 0 : 'timeline': {
1949 : 'limit': 10,
1950 0 : 'types': ['m.room.message'],
1951 0 : 'not_rooms': ['!726s6s6q:example.com'],
1952 0 : 'not_senders': ['@spam:example.com']
1953 : },
1954 0 : 'ephemeral': {
1955 0 : 'types': ['m.receipt', 'm.typing'],
1956 0 : 'not_rooms': ['!726s6s6q:example.com'],
1957 0 : 'not_senders': ['@spam:example.com']
1958 : },
1959 0 : 'account_data': {
1960 0 : 'types': ['m.receipt', 'm.typing'],
1961 0 : 'not_rooms': ['!726s6s6q:example.com'],
1962 0 : 'not_senders': ['@spam:example.com']
1963 : }
1964 : },
1965 0 : 'presence': {
1966 0 : 'types': ['m.presence'],
1967 0 : 'not_senders': ['@alice:example.com']
1968 : },
1969 : 'event_format': 'client',
1970 0 : 'event_fields': ['type', 'content', 'sender']
1971 : },
1972 10 : '/client/v3/room_keys/version': (var req) => {
1973 : 'algorithm': AlgorithmTypes.megolmBackupV1Curve25519AesSha2,
1974 5 : 'auth_data': {
1975 : 'public_key': 'GXYaxqhNhUK28zUdxOmEsFRguz+PzBsDlTLlF0O0RkM',
1976 5 : 'signatures': {},
1977 : },
1978 : 'count': 0,
1979 : 'etag': '0',
1980 : 'version': '5',
1981 : },
1982 : '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
1983 2 : (var req) => {
1984 : 'first_message_index': 0,
1985 : 'forwarded_count': 0,
1986 : 'is_verified': true,
1987 1 : 'session_data': {
1988 : 'ephemeral': 'fwRxYh+seqLykz5mQCLypJ4/59URdcFJ2s69OU1dGRc',
1989 : 'ciphertext':
1990 : '19jkQYlbgdP+VL9DH3qY/Dvpk6onJZgf+6frZFl1TinPCm9OMK9AZZLuM1haS9XLAUK1YsREgjBqfl6T+Tq8JlJ5ONZGg2Wttt24sGYc0iTMZJ8rXcNDeKMZhM96ETyjufJSeYoXLqifiVLDw9rrVBmNStF7PskYp040em+0OZ4pF85Cwsdf7l9V7MMynzh9BoXqVUCBiwT03PNYH9AEmNUxXX+6ZwCpe/saONv8MgGt5uGXMZIK29phA3D8jD6uV/WOHsB8NjHNq9FrfSEAsl+dAcS4uiYie4BKSSeQN+zGAQqu1MMW4OAdxGOuf8WpIINx7n+7cKQfxlmc/Cgg5+MmIm2H0oDwQ+Xu7aSxp1OCUzbxQRdjz6+tnbYmZBuH0Ov2RbEvC5tDb261LRqKXpub0llg5fqKHl01D0ahv4OAQgRs5oU+4mq+H2QGTwIFGFqP9tCRo0I+aICawpxYOfoLJpFW6KvEPnM2Lr3sl6Nq2fmkz6RL5F7nUtzxN8OKazLQpv8DOYzXbi7+ayEsqS0/EINetq7RfCqgjrEUgfNWYuFXWqvUT8lnxLdNu+8cyrJqh1UquFjXWTw1kWcJ0pkokVeBtK9YysCnF1UYh/Iv3rl2ZoYSSLNtuvMSYlYHggZ8xV8bz9S3X2/NwBycBiWIy5Ou/OuSX7trIKgkkmda0xjBWEM1a2acVuqu2OFbMn2zFxm2a3YwKP//OlIgMg',
1991 : 'mac': 'QzKV/fgAs4U',
1992 : },
1993 : },
1994 : '/client/v3/room_keys/keys/${Uri.encodeComponent('!getroomkeys726s6s6q:example.com')}?version=5':
1995 2 : (var req) => {
1996 1 : 'sessions': {
1997 1 : 'ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU': {
1998 : 'first_message_index': 0,
1999 : 'forwarded_count': 0,
2000 : 'is_verified': true,
2001 1 : 'session_data': {
2002 : 'ephemeral':
2003 : 'fwRxYh+seqLykz5mQCLypJ4/59URdcFJ2s69OU1dGRc',
2004 : 'ciphertext':
2005 : '19jkQYlbgdP+VL9DH3qY/Dvpk6onJZgf+6frZFl1TinPCm9OMK9AZZLuM1haS9XLAUK1YsREgjBqfl6T+Tq8JlJ5ONZGg2Wttt24sGYc0iTMZJ8rXcNDeKMZhM96ETyjufJSeYoXLqifiVLDw9rrVBmNStF7PskYp040em+0OZ4pF85Cwsdf7l9V7MMynzh9BoXqVUCBiwT03PNYH9AEmNUxXX+6ZwCpe/saONv8MgGt5uGXMZIK29phA3D8jD6uV/WOHsB8NjHNq9FrfSEAsl+dAcS4uiYie4BKSSeQN+zGAQqu1MMW4OAdxGOuf8WpIINx7n+7cKQfxlmc/Cgg5+MmIm2H0oDwQ+Xu7aSxp1OCUzbxQRdjz6+tnbYmZBuH0Ov2RbEvC5tDb261LRqKXpub0llg5fqKHl01D0ahv4OAQgRs5oU+4mq+H2QGTwIFGFqP9tCRo0I+aICawpxYOfoLJpFW6KvEPnM2Lr3sl6Nq2fmkz6RL5F7nUtzxN8OKazLQpv8DOYzXbi7+ayEsqS0/EINetq7RfCqgjrEUgfNWYuFXWqvUT8lnxLdNu+8cyrJqh1UquFjXWTw1kWcJ0pkokVeBtK9YysCnF1UYh/Iv3rl2ZoYSSLNtuvMSYlYHggZ8xV8bz9S3X2/NwBycBiWIy5Ou/OuSX7trIKgkkmda0xjBWEM1a2acVuqu2OFbMn2zFxm2a3YwKP//OlIgMg',
2006 : 'mac': 'QzKV/fgAs4U',
2007 : },
2008 : },
2009 : },
2010 : },
2011 2 : '/client/v3/room_keys/keys?version=5': (var req) => {
2012 1 : 'rooms': {
2013 1 : '!getallkeys726s6s6q:example.com': {
2014 1 : 'sessions': {
2015 1 : 'ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU': {
2016 : 'first_message_index': 0,
2017 : 'forwarded_count': 0,
2018 : 'is_verified': true,
2019 1 : 'session_data': {
2020 : 'ephemeral':
2021 : 'fwRxYh+seqLykz5mQCLypJ4/59URdcFJ2s69OU1dGRc',
2022 : 'ciphertext':
2023 : '19jkQYlbgdP+VL9DH3qY/Dvpk6onJZgf+6frZFl1TinPCm9OMK9AZZLuM1haS9XLAUK1YsREgjBqfl6T+Tq8JlJ5ONZGg2Wttt24sGYc0iTMZJ8rXcNDeKMZhM96ETyjufJSeYoXLqifiVLDw9rrVBmNStF7PskYp040em+0OZ4pF85Cwsdf7l9V7MMynzh9BoXqVUCBiwT03PNYH9AEmNUxXX+6ZwCpe/saONv8MgGt5uGXMZIK29phA3D8jD6uV/WOHsB8NjHNq9FrfSEAsl+dAcS4uiYie4BKSSeQN+zGAQqu1MMW4OAdxGOuf8WpIINx7n+7cKQfxlmc/Cgg5+MmIm2H0oDwQ+Xu7aSxp1OCUzbxQRdjz6+tnbYmZBuH0Ov2RbEvC5tDb261LRqKXpub0llg5fqKHl01D0ahv4OAQgRs5oU+4mq+H2QGTwIFGFqP9tCRo0I+aICawpxYOfoLJpFW6KvEPnM2Lr3sl6Nq2fmkz6RL5F7nUtzxN8OKazLQpv8DOYzXbi7+ayEsqS0/EINetq7RfCqgjrEUgfNWYuFXWqvUT8lnxLdNu+8cyrJqh1UquFjXWTw1kWcJ0pkokVeBtK9YysCnF1UYh/Iv3rl2ZoYSSLNtuvMSYlYHggZ8xV8bz9S3X2/NwBycBiWIy5Ou/OuSX7trIKgkkmda0xjBWEM1a2acVuqu2OFbMn2zFxm2a3YwKP//OlIgMg',
2024 : 'mac': 'QzKV/fgAs4U',
2025 : },
2026 : },
2027 : },
2028 : },
2029 : },
2030 : },
2031 4 : '/client/unstable/org.matrix.msc3814.v1/dehydrated_device': (var _) => {
2032 : 'device_id': 'DEHYDDEV',
2033 2 : 'device_data': {'algorithm': 'some.famedly.proprietary.algorithm'},
2034 : },
2035 : },
2036 : 'POST': {
2037 2 : '/client/v3/refresh': (var req) => {
2038 : 'access_token': 'a_new_token',
2039 2 : 'expires_in_ms': 1000 * 60 * 5,
2040 : 'refresh_token': 'another_new_token'
2041 : },
2042 0 : '/client/v3/delete_devices': (var req) => {},
2043 0 : '/client/v3/account/3pid/add': (var req) => {},
2044 0 : '/client/v3/account/3pid/bind': (var req) => {},
2045 0 : '/client/v3/account/3pid/delete': (var req) =>
2046 0 : {'id_server_unbind_result': 'success'},
2047 0 : '/client/v3/account/3pid/unbind': (var req) =>
2048 0 : {'id_server_unbind_result': 'success'},
2049 2 : '/client/v3/account/password': (var req) => {},
2050 0 : '/client/v3/rooms/1234/report/1234': (var req) => {},
2051 0 : '/client/v3/search': (var req) => {
2052 0 : 'search_categories': {
2053 0 : 'room_events': {
2054 0 : 'groups': {
2055 0 : 'room_id': {
2056 0 : '!qPewotXpIctQySfjSy:localhost': {
2057 : 'order': 1,
2058 : 'next_batch': 'BdgFsdfHSf-dsFD',
2059 0 : 'results': ['\$144429830826TWwbB:localhost']
2060 : }
2061 : }
2062 : },
2063 0 : 'highlights': ['martians', 'men'],
2064 : 'next_batch': '5FdgFsd234dfgsdfFD',
2065 : 'count': 1224,
2066 0 : 'results': [
2067 0 : {
2068 : 'rank': 0.00424866,
2069 0 : 'result': {
2070 0 : 'content': {
2071 : 'body': 'This is an example text message',
2072 : 'msgtype': 'm.text',
2073 : 'format': 'org.matrix.custom.html',
2074 : 'formatted_body':
2075 : '<b>This is an example text message</b>'
2076 : },
2077 : 'type': 'm.room.message',
2078 : 'event_id': '\$144429830826TWwbB:localhost',
2079 : 'room_id': '!qPewotXpIctQySfjSy:localhost',
2080 : 'sender': '@example:example.org',
2081 : 'origin_server_ts': 1432735824653,
2082 0 : 'unsigned': {'age': 1234}
2083 : }
2084 : }
2085 : ]
2086 : }
2087 : }
2088 : },
2089 0 : '/client/v3/account/deactivate': (var req) =>
2090 0 : {'id_server_unbind_result': 'success'},
2091 0 : '/client/v3/user_directory/search': (var req) => {
2092 0 : 'results': [
2093 0 : {
2094 : 'user_id': '@foo:bar.com',
2095 : 'display_name': 'Foo',
2096 : 'avatar_url': 'mxc://bar.com/foo'
2097 : }
2098 : ],
2099 : 'limited': false
2100 : },
2101 0 : '/client/v3/register/email/requestToken': (var req) => {
2102 : 'sid': '123abc',
2103 : 'submit_url': 'https://example.org/path/to/submitToken'
2104 : },
2105 0 : '/client/v3/register/msisdn/requestToken': (var req) => {
2106 : 'sid': '123abc',
2107 : 'submit_url': 'https://example.org/path/to/submitToken'
2108 : },
2109 0 : '/client/v3/account/password/email/requestToken': (var req) => {
2110 : 'sid': '123abc',
2111 : 'submit_url': 'https://example.org/path/to/submitToken'
2112 : },
2113 0 : '/client/v3/account/password/msisdn/requestToken': (var req) => {
2114 : 'sid': '123abc',
2115 : 'submit_url': 'https://example.org/path/to/submitToken'
2116 : },
2117 0 : '/client/v3/account/3pid/email/requestToken': (var req) => {
2118 : 'sid': '123abc',
2119 : 'submit_url': 'https://example.org/path/to/submitToken'
2120 : },
2121 0 : '/client/v3/account/3pid/msisdn/requestToken': (var req) => {
2122 : 'sid': '123abc',
2123 : 'submit_url': 'https://example.org/path/to/submitToken'
2124 : },
2125 : '/client/v3/rooms/!localpart%3Aexample.com/receipt/m.read/%241234%3Aexample.com':
2126 0 : (var req) => {},
2127 0 : '/client/v3/rooms/!localpart%3Aexample.com/read_markers': (var req) => {},
2128 4 : '/client/v3/rooms/!1234%3Aexample.com/read_markers': (var req) => {},
2129 : '/client/v3/user/${Uri.encodeComponent('@othertest:fakeServer.notExisting')}/filter':
2130 4 : (var req) => {'filter_id': '1234'},
2131 : '/client/v3/user/${Uri.encodeComponent('@test:fakeServer.notExisting')}/filter':
2132 62 : (var req) => {'filter_id': '1234'},
2133 0 : '/client/v3/publicRooms?server=example.com': (var req) => {
2134 0 : 'chunk': [
2135 0 : {
2136 0 : 'aliases': ['#murrays:cheese.bar'],
2137 : 'canonical_alias': '#murrays:cheese.bar',
2138 : 'avatar_url': 'mxc://bleeker.street/CHEDDARandBRIE',
2139 : 'guest_can_join': false,
2140 : 'name': 'CHEESE',
2141 : 'num_joined_members': 37,
2142 : 'room_id': '!ol19s:bleecker.street',
2143 : 'topic': 'Tasty tasty cheese',
2144 : 'world_readable': true
2145 : }
2146 : ],
2147 : 'next_batch': 'p190q',
2148 : 'prev_batch': 'p1902',
2149 : 'total_room_count_estimate': 115
2150 : },
2151 20 : '/client/v3/keys/claim': (var req) => {
2152 10 : 'failures': {},
2153 10 : 'one_time_keys': {
2154 30 : if (decodeJson(req)['one_time_keys']['@alice:example.com'] !=
2155 : null)
2156 12 : '@alice:example.com': {
2157 6 : 'JLAFKJWSCS': {
2158 6 : 'signed_curve25519:AAAAAQ': {
2159 : 'key': 'ikMXajRlkS7Xi9CROrAh3jXnbygk8mLBdSaY9/al0X0',
2160 6 : 'signatures': {
2161 6 : '@alice:example.com': {
2162 : 'ed25519:JLAFKJWSCS':
2163 : 'XdboCa0Ljoh0Y0i/IVnmMqy/+T1hJyu8BA/nRYniJMQ7QWh/pGS5AsWswdARD+MAX+r4u98Qzk0y27HUddZXDA'
2164 : }
2165 : }
2166 : }
2167 : }
2168 : },
2169 20 : if (decodeJson(req)['one_time_keys']
2170 10 : ['@test:fakeServer.notExisting'] !=
2171 : null)
2172 12 : '@test:fakeServer.notExisting': {
2173 6 : 'GHTYAJCE': {
2174 6 : 'signed_curve25519:AAAAAQ': {
2175 : 'key': 'qc72ve94cA28iuE0fXa98QO3uls39DHWdQlYyvvhGh0',
2176 6 : 'signatures': {
2177 6 : '@test:fakeServer.notExisting': {
2178 : 'ed25519:GHTYAJCE':
2179 : 'dFwffr5kTKefO7sjnWLMhTzw7oV31nkPIDRxFy5OQT2OP5++Ao0KRbaBZ6qfuT7lW1owKK0Xk3s7QTBvc/eNDA',
2180 : },
2181 : },
2182 : },
2183 : },
2184 : },
2185 : }
2186 : },
2187 0 : '/client/v3/rooms/!localpart%3Aexample.com/invite': (var req) => {},
2188 2 : '/client/v3/rooms/!1234%3AfakeServer.notExisting/invite': (var req) => {},
2189 0 : '/client/v3/rooms/!localpart%3Aexample.com/leave': (var req) => {},
2190 2 : '/client/v3/rooms/!1234%3AfakeServer.notExisting/leave': (var req) => {},
2191 0 : '/client/v3/rooms/!localpart%3Aexample.com/forget': (var req) => {},
2192 8 : '/client/v3/rooms/!localpart%3Aserver.abc/kick': (var req) => {},
2193 2 : '/client/v3/rooms/!1234%3AfakeServer.notExisting/kick': (var req) => {},
2194 0 : '/client/v3/rooms/!localpart%3Aexample.com/kick': (var req) => {},
2195 0 : '/client/v3/rooms/!localpart%3Aexample.com/ban': (var req) => {},
2196 2 : '/client/v3/rooms/!1234%3AfakeServer.notExisting/ban': (var req) => {},
2197 0 : '/client/v3/rooms/!localpart%3Aexample.com/unban': (var req) => {},
2198 2 : '/client/v3/rooms/!1234%3AfakeServer.notExisting/unban': (var req) => {},
2199 0 : '/client/v3/rooms/!localpart%3Aexample.com/join': (var req) =>
2200 0 : {'room_id': '!localpart:example.com'},
2201 : '/client/v3/join/!localpart%3Aexample.com?server_name=example.com&server_name=example.abc':
2202 0 : (var req) => {'room_id': '!localpart:example.com'},
2203 1 : '/client/v3/join/!newroom%3Aexample.com': (var req) =>
2204 1 : {'room_id': '!newroom%3A:example.com'},
2205 48 : '/client/v3/keys/upload': (var req) => {
2206 24 : 'one_time_key_counts': {
2207 : 'curve25519': 10,
2208 : 'signed_curve25519':
2209 48 : tryCast<Map<String, Object?>>(decodeJson(req))
2210 24 : ?.tryGetMap<String, Object?>('one_time_keys')
2211 24 : ?.keys
2212 24 : .length ??
2213 : 0,
2214 : }
2215 : },
2216 60 : '/client/v3/keys/query': (var req) => {
2217 30 : 'failures': {},
2218 30 : 'device_keys': {
2219 30 : '@alice:example.com': {
2220 30 : 'JLAFKJWSCS': {
2221 : 'user_id': '@alice:example.com',
2222 : 'device_id': 'JLAFKJWSCS',
2223 30 : 'algorithms': [
2224 : AlgorithmTypes.olmV1Curve25519AesSha2,
2225 : AlgorithmTypes.megolmV1AesSha2
2226 : ],
2227 30 : 'keys': {
2228 : 'curve25519:JLAFKJWSCS':
2229 : 'L+4+JCl8MD63dgo8z5Ta+9QAHXiANyOVSfgbHA5d3H8',
2230 : 'ed25519:JLAFKJWSCS':
2231 : 'rUFJftIWpFF/jqqz3bexGGYiG8UobKhzkeabqw1v0zM'
2232 : },
2233 30 : 'signatures': {
2234 30 : '@alice:example.com': {
2235 : 'ed25519:JLAFKJWSCS':
2236 : 'go3mi5o3Ile+Ik+lCEpHmBmyJmKWfnRDCBBvfaVlKsMyha5IORuYcxwEUrAeLyAeeeHvkWDFX+No5eY1jYeKBw'
2237 : }
2238 : },
2239 30 : 'unsigned': {'device_display_name': 'Alices mobile phone'}
2240 : },
2241 30 : 'OTHERDEVICE': {
2242 : 'user_id': '@alice:example.com',
2243 : 'device_id': 'OTHERDEVICE',
2244 30 : 'algorithms': [
2245 : AlgorithmTypes.olmV1Curve25519AesSha2,
2246 : AlgorithmTypes.megolmV1AesSha2
2247 : ],
2248 30 : 'keys': {
2249 : 'curve25519:OTHERDEVICE':
2250 : 'wMIDhiQl5jEXQrTB03ePOSQfR8sA/KMrW0CIfFfXKEE',
2251 : 'ed25519:OTHERDEVICE':
2252 : '2Lyaj5NB7HPqKZMjZpA/pECXuQ+9wi8AGFdw33y3DuQ'
2253 : },
2254 30 : 'signatures': {
2255 30 : '@alice:example.com': {
2256 : 'ed25519:OTHERDEVICE':
2257 : 'bwHd6ylISP13AICdDPd0HQd4V6dvvd4vno8/OwUNdm9UAprr3YjkDqVw425I74u2UQAarq9bytBqVqFyD6trAw',
2258 : }
2259 : },
2260 : },
2261 : },
2262 30 : '@test:fakeServer.notExisting': {
2263 30 : 'GHTYAJCE': {
2264 : 'user_id': '@test:fakeServer.notExisting',
2265 : 'device_id': 'GHTYAJCE',
2266 30 : 'algorithms': [
2267 : AlgorithmTypes.olmV1Curve25519AesSha2,
2268 : AlgorithmTypes.megolmV1AesSha2
2269 : ],
2270 30 : 'keys': {
2271 : 'curve25519:GHTYAJCE':
2272 : '7rvl3jORJkBiK4XX1e5TnGnqz068XfYJ0W++Ml63rgk',
2273 : 'ed25519:GHTYAJCE':
2274 : 'gjL//fyaFHADt9KBADGag8g7F8Up78B/K1zXeiEPLJo'
2275 : },
2276 30 : 'signatures': {
2277 30 : '@test:fakeServer.notExisting': {
2278 : 'ed25519:GHTYAJCE':
2279 : 'NEQeTgv7ew1IZSLQphWd0y60EdHdcNfHgvoaMQco5XKeIYyiUZIWd7F4x/mkPDjUizv6yWMbTDCWdSg5XcgNBA',
2280 : 'ed25519:F9ypFzgbISXCzxQhhSnXMkc1vq12Luna3Nw5rqViOJY':
2281 : 'Q4/55vZjEJD7M2EC40bgZqd9Zuy/4C75UPVopJdXeioQVaKtFf6EF0nUUuql0yD+r3hinsZcock0wO6Q2xcoAQ',
2282 : },
2283 : },
2284 : },
2285 30 : 'OTHERDEVICE': {
2286 : 'user_id': '@test:fakeServer.notExisting',
2287 : 'device_id': 'OTHERDEVICE',
2288 30 : 'algorithms': [
2289 : AlgorithmTypes.olmV1Curve25519AesSha2,
2290 : AlgorithmTypes.megolmV1AesSha2
2291 : ],
2292 30 : 'keys': {
2293 : 'curve25519:OTHERDEVICE':
2294 : 'R96BA0qE1+QAWLp7E1jyWSTJ1VXMLpEdiM2SZHlKMXM',
2295 : 'ed25519:OTHERDEVICE':
2296 : 'EQo9eYbSygIbOR+tVJziqAY1NI6Gga+JQOVIqJe4mr4'
2297 : },
2298 30 : 'signatures': {
2299 30 : '@test:fakeServer.notExisting': {
2300 : 'ed25519:OTHERDEVICE':
2301 : '/rT6pVRypJWxGos1QcI7jHL9HwcA83nkHLHqMcRPeLSxXHh4oHWvC0/tl0Xg06ogyiGw4NuB7TpOISvJBdt7BA',
2302 : 'ed25519:F9ypFzgbISXCzxQhhSnXMkc1vq12Luna3Nw5rqViOJY':
2303 : 'qnjiLl36h/1jlLvcAgt46Igaod2T9lOSnoSVkV0KC+c7vYIjG4QBzXpH+hycfufOT/y+a/kl52dUTLQWctMKCA',
2304 : },
2305 : },
2306 : },
2307 : },
2308 30 : '@othertest:fakeServer.notExisting': {
2309 30 : 'FOXDEVICE': {
2310 : 'user_id': '@othertest:fakeServer.notExisting',
2311 : 'device_id': 'FOXDEVICE',
2312 30 : 'algorithms': [
2313 : AlgorithmTypes.olmV1Curve25519AesSha2,
2314 : AlgorithmTypes.megolmV1AesSha2
2315 : ],
2316 30 : 'keys': {
2317 : 'curve25519:FOXDEVICE':
2318 : 'JBG7ZaPn54OBC7TuIEiylW3BZ+7WcGQhFBPB9pogbAg',
2319 : 'ed25519:FOXDEVICE':
2320 : 'R5/p04tticvdlNIxiiBIP0j9OQWv8ep6eEU6/lWKDxw',
2321 : },
2322 30 : 'signatures': {
2323 30 : '@othertest:fakeServer.notExisting': {
2324 : 'ed25519:FOXDEVICE':
2325 : '2lJ3atmRIWgkyQNC9gvWEpxwuozsBQsg33M2IMDJqLhx/+g3Ds1vQ683dJsYIu04ORa4U0L9TqieHVpV/7qqDA',
2326 : },
2327 : },
2328 : },
2329 : },
2330 : },
2331 30 : 'master_keys': {
2332 30 : '@test:fakeServer.notExisting': {
2333 : 'user_id': '@test:fakeServer.notExisting',
2334 30 : 'usage': ['master'],
2335 30 : 'keys': {
2336 : 'ed25519:82mAXjsmbTbrE6zyShpR869jnrANO75H8nYY0nDLoJ8':
2337 : '82mAXjsmbTbrE6zyShpR869jnrANO75H8nYY0nDLoJ8',
2338 : },
2339 30 : 'signatures': {},
2340 : },
2341 30 : '@othertest:fakeServer.notExisting': {
2342 : 'user_id': '@othertest:fakeServer.notExisting',
2343 30 : 'usage': ['master'],
2344 30 : 'keys': {
2345 : 'ed25519:92mAXjsmbTbrE6zyShpR869jnrANO75H8nYY0nDLoJ8':
2346 : '92mAXjsmbTbrE6zyShpR869jnrANO75H8nYY0nDLoJ8',
2347 : },
2348 30 : 'signatures': {},
2349 : },
2350 : },
2351 30 : 'self_signing_keys': {
2352 30 : '@test:fakeServer.notExisting': {
2353 : 'user_id': '@test:fakeServer.notExisting',
2354 30 : 'usage': ['self_signing'],
2355 30 : 'keys': {
2356 : 'ed25519:F9ypFzgbISXCzxQhhSnXMkc1vq12Luna3Nw5rqViOJY':
2357 : 'F9ypFzgbISXCzxQhhSnXMkc1vq12Luna3Nw5rqViOJY',
2358 : },
2359 30 : 'signatures': {
2360 30 : '@test:fakeServer.notExisting': {
2361 : 'ed25519:82mAXjsmbTbrE6zyShpR869jnrANO75H8nYY0nDLoJ8':
2362 : 'afkrbGvPn5Zb5zc7Lk9cz2skI3QrzI/L0st1GS+/GATxNjMzc6vKmGu7r9cMb1GJxy4RdeUpfH3L7Fs/fNL1Dw',
2363 : },
2364 : },
2365 : },
2366 30 : '@othertest:fakeServer.notExisting': {
2367 : 'user_id': '@othertest:fakeServer.notExisting',
2368 30 : 'usage': ['self_signing'],
2369 30 : 'keys': {
2370 : 'ed25519:self_signing': 'self_signing',
2371 : },
2372 30 : 'signatures': {},
2373 : },
2374 : },
2375 30 : 'user_signing_keys': {
2376 30 : '@test:fakeServer.notExisting': {
2377 : 'user_id': '@test:fakeServer.notExisting',
2378 30 : 'usage': ['user_signing'],
2379 30 : 'keys': {
2380 : 'ed25519:0PiwulzJ/RU86LlzSSZ8St80HUMN3dqjKa/orIJoA0g':
2381 : '0PiwulzJ/RU86LlzSSZ8St80HUMN3dqjKa/orIJoA0g',
2382 : },
2383 30 : 'signatures': {
2384 30 : '@test:fakeServer.notExisting': {
2385 : 'ed25519:82mAXjsmbTbrE6zyShpR869jnrANO75H8nYY0nDLoJ8':
2386 : 'pvgbZxEbllaElhpiRnb7/uOIUhrglvHCFnpoxr3/5ZrWa0EK/uaefhex9eEV4uBLrHjHg2ymwdNaM7ap9+sBBg',
2387 : },
2388 : },
2389 : },
2390 30 : '@othertest:fakeServer.notExisting': {
2391 : 'user_id': '@othertest:fakeServer.notExisting',
2392 30 : 'usage': ['user_signing'],
2393 30 : 'keys': {
2394 : 'ed25519:user_signing': 'user_signing',
2395 : },
2396 30 : 'signatures': {},
2397 : },
2398 : },
2399 : },
2400 0 : '/client/v3/register': (var req) => {
2401 : 'user_id': '@testuser:example.com',
2402 : 'access_token': '1234',
2403 : 'device_id': 'ABCD',
2404 : },
2405 0 : '/client/v3/register?kind=user': (var req) =>
2406 0 : {'user_id': '@testuser:example.com'},
2407 0 : '/client/v3/register?kind=guest': (var req) =>
2408 0 : {'user_id': '@testuser:example.com'},
2409 0 : '/client/v3/rooms/1234/upgrade': (var req) => {},
2410 0 : '/client/v3/user/1234/openid/request_token': (var req) => {
2411 : 'access_token': 'SomeT0kenHere',
2412 : 'token_type': 'Bearer',
2413 : 'matrix_server_name': 'example.com',
2414 : 'expires_in': 3600.0
2415 : },
2416 : '/client/v3/user/@test:fakeServer.notExisting/openid/request_token':
2417 0 : (var req) => {
2418 : 'access_token': 'SomeT0kenHere',
2419 : 'token_type': 'Bearer',
2420 : 'matrix_server_name': 'example.com',
2421 : 'expires_in': 3600
2422 : },
2423 8 : '/client/v3/login': (var req) => {
2424 : 'user_id': '@test:fakeServer.notExisting',
2425 : 'access_token': 'abc123',
2426 : 'refresh_token': 'refresh_abc123',
2427 : 'device_id': 'GHTYAJCE',
2428 4 : 'well_known': {
2429 4 : 'm.homeserver': {'base_url': 'https://example.org'},
2430 4 : 'm.identity_server': {'base_url': 'https://id.example.org'}
2431 : }
2432 : },
2433 4 : '/media/v3/upload?filename=file.jpeg': (var req) =>
2434 4 : {'content_uri': 'mxc://example.com/AQwafuaFswefuhsfAFAgsw'},
2435 18 : '/client/v3/logout': (var reqI) => {},
2436 0 : '/client/v3/pushers/set': (var reqI) => {},
2437 0 : '/client/v3/join/1234': (var reqI) => {'room_id': '1234'},
2438 0 : '/client/v3/logout/all': (var reqI) => {},
2439 12 : '/client/v3/createRoom': (var reqI) => {
2440 : 'room_id': '!1234:fakeServer.notExisting',
2441 : },
2442 4 : '/client/v3/rooms/!localpart%3Aserver.abc/read_markers': (var reqI) => {},
2443 0 : '/client/v3/rooms/!localpart:server.abc/kick': (var reqI) => {},
2444 8 : '/client/v3/rooms/!localpart%3Aserver.abc/ban': (var reqI) => {},
2445 8 : '/client/v3/rooms/!localpart%3Aserver.abc/unban': (var reqI) => {},
2446 4 : '/client/v3/rooms/!localpart%3Aserver.abc/invite': (var reqI) => {},
2447 21 : '/client/v3/keys/signatures/upload': (var reqI) => {'failures': {}},
2448 2 : '/client/v3/room_keys/version': (var reqI) => {'version': '5'},
2449 : '/client/unstable/org.matrix.msc3814.v1/dehydrated_device/DEHYDDEV/events?limit=100':
2450 4 : (var _) => {
2451 2 : 'events': [
2452 2 : {
2453 : // this is the commented out m.room_key event - only encrypted
2454 : 'sender': '@othertest:fakeServer.notExisting',
2455 2 : 'content': {
2456 : 'algorithm': AlgorithmTypes.olmV1Curve25519AesSha2,
2457 : 'sender_key':
2458 : 'JBG7ZaPn54OBC7TuIEiylW3BZ+7WcGQhFBPB9pogbAg',
2459 2 : 'ciphertext': {
2460 2 : '7rvl3jORJkBiK4XX1e5TnGnqz068XfYJ0W++Ml63rgk': {
2461 : 'type': 0,
2462 : 'body':
2463 : 'Awogyh7K4iLUQjcOxIfi7q7LhBBqv9w0mQ6JI9+U9tv7iF4SIHC6xb5YFWf9voRnmDBbd+0vxD/xDlVNRDlPIKliLGkYGiAkEbtlo+fng4ELtO4gSLKVbcFn7tZwZCEUE8H2miBsCCKABgMKIFrKDJwB7gM3lXPt9yVoh6gQksafKt7VFCNRN5KLKqsDEAAi0AX5EfTV7jJ1ZWAbxftjoSN6kCVIxzGclbyg1HjchmNCX7nxNCHWl+q5ZgqHYZVu2n2mCVmIaKD0kvoEZeY3tV1Itb6zf67BLaU0qgW/QzHCHg5a44tNLjucvL2mumHjIG8k0BY2uh+52HeiMCvSOvtDwHg7nzCASGdqPVCj9Kzw6z7F6nL4e3mYim8zvJd7f+mD9z3ARrypUOLGkTGYbB2PQOovf0Do8WzcaRzfaUCnuu/YVZWKK7DPgG8uhw/TjR6XtraAKZysF+4DJYMG9SQWx558r6s7Z5EUOF5CU2M35w1t1Xxllb3vrS83dtf9LPCrBhLsEBeYEUBE2+bTBfl0BDKqLiB0Cc0N0ixOcHIt6e40wAvW622/gMgHlpNSx8xG12u0s6h6EMWdCXXLWd9fy2q6glFUHvA67A35q7O+M8DVml7Y9xG55Y3DHkMDc9cwgwFkBDCAYQe6pQF1nlKytcVCGREpBs/gq69gHAStMQ8WEg38Lf8u8eBr2DFexrN4U+QAk+S//P3fJgf0bQx/Eosx4fvWSz9En41iC+ADCsWQpMbwHn4JWvtAbn3oW0XmL/OgThTkJMLiCymduYAa1Hnt7a3tP0KTL2/x11F02ggQHL28cCjq5W4zUGjWjl5wo2PsKB6t8aAvMg2ujGD2rCjb4yrv5VIzAKMOZLyj7K0vSK9gwDLQ/4vq+QnKUBG5zrcOze0hX+kz2909/tmAdeCH61Ypw7gbPUJAKnmKYUiB/UgwkJvzMJSsk/SEs5SXosHDI+HsJHJp4Mp4iKD0xRMst+8f9aTjaWwh8ZvELE1ZOhhCbF3RXhxi3x2Nu8ORIz+vhEQ1NOlMc7UIo98Fk/96T36vL/fviowT4C/0AlaapZDJBmKwhmwqisMjY2n1vY29oM2p5BzY1iwP7q9BYdRFst6xwo57TNSuRwQw7IhFsf0k+ABuPEZy5xB5nPHyIRTf/pr3Hw',
2464 : },
2465 : },
2466 : },
2467 : 'type': 'm.room.encrypted',
2468 : },
2469 : ],
2470 : 'next_batch': 'd1',
2471 : },
2472 : },
2473 : 'PUT': {
2474 : '/client/v3/user/${Uri.encodeComponent('@alice:example.com')}/account_data/io.element.recent_emoji}':
2475 0 : (var req) => {},
2476 : '/client/v3/user/%40test%3AfakeServer.notExisting/account_data/io.element.recent_emoji':
2477 2 : (var req) => {},
2478 : '/client/v3/user/%40test%3AfakeServer.notExisting/account_data/m.ignored_user_list':
2479 2 : (var req) => {},
2480 : '/client/v3/presence/${Uri.encodeComponent('@alice:example.com')}/status':
2481 0 : (var req) => {},
2482 0 : '/client/v3/pushrules/global/content/nocake/enabled': (var req) => {},
2483 0 : '/client/v3/pushrules/global/content/nocake/actions': (var req) => {},
2484 : '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.history_visibility':
2485 4 : (var req) => {'event_id': '1234'},
2486 : '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.join_rules':
2487 4 : (var req) => {'event_id': '1234'},
2488 : '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.guest_access':
2489 4 : (var req) => {'event_id': '1234'},
2490 : '/client/v3/rooms/!calls%3Aexample.com/send/m.call.invite/1234':
2491 4 : (var req) => {'event_id': '1234'},
2492 : '/client/v3/rooms/!calls%3Aexample.com/send/m.call.answer/1234':
2493 4 : (var req) => {'event_id': '1234'},
2494 : '/client/v3/rooms/!calls%3Aexample.com/send/m.call.select_answer/1234':
2495 4 : (var req) => {'event_id': '1234'},
2496 : '/client/v3/rooms/!calls%3Aexample.com/send/m.call.reject/1234':
2497 4 : (var req) => {'event_id': '1234'},
2498 : '/client/v3/rooms/!calls%3Aexample.com/send/m.call.negotiate/1234':
2499 4 : (var req) => {'event_id': '1234'},
2500 : '/client/v3/rooms/!calls%3Aexample.com/send/m.call.candidates/1234':
2501 4 : (var req) => {'event_id': '1234'},
2502 : '/client/v3/rooms/!calls%3Aexample.com/send/m.call.hangup/1234':
2503 4 : (var req) => {'event_id': '1234'},
2504 : '/client/v3/rooms/!calls%3Aexample.com/send/m.call.replaces/1234':
2505 4 : (var req) => {'event_id': '1234'},
2506 : '/client/v3/rooms/!calls%3Aexample.com/send/m.call.asserted_identity/1234':
2507 4 : (var req) => {'event_id': '1234'},
2508 : '/client/v3/rooms/!calls%3Aexample.com/send/m.call.sdp_stream_metadata_changed/1234':
2509 4 : (var req) => {'event_id': '1234'},
2510 : '/client/v3/rooms/!calls%3Aexample.com/send/org.matrix.call.sdp_stream_metadata_changed/1234':
2511 0 : (var req) => {'event_id': '1234'},
2512 : '/client/v3/rooms/!calls%3Aexample.com/send/org.matrix.call.asserted_identity/1234':
2513 0 : (var req) => {'event_id': '1234'},
2514 : '/client/v3/rooms/!1234%3Aexample.com/redact/1143273582443PhrSn%3Aexample.org/1234':
2515 2 : (var req) => {'event_id': '1234'},
2516 2 : '/client/v3/pushrules/global/room/!localpart%3Aserver.abc': (var req) =>
2517 2 : {},
2518 : '/client/v3/pushrules/global/override/.m.rule.master/enabled':
2519 2 : (var req) => {},
2520 : '/client/v3/pushrules/global/content/nocake?before=1&after=2':
2521 0 : (var req) => {},
2522 0 : '/client/v3/devices/QBUAZIFURK': (var req) => {},
2523 0 : '/client/v3/directory/room/%23testalias%3Aexample.com': (var reqI) => {},
2524 : '/client/v3/rooms/!localpart%3Aserver.abc/send/m.room.message/testtxid':
2525 4 : (var reqI) => {
2526 6 : 'event_id': '\$event${FakeMatrixApi.eventCounter++}',
2527 : },
2528 : '/client/v3/rooms/!localpart%3Aserver.abc/send/m.reaction/testtxid':
2529 4 : (var reqI) => {
2530 6 : 'event_id': '\$event${FakeMatrixApi.eventCounter++}',
2531 : },
2532 : '/client/v3/rooms/!localpart%3Aexample.com/typing/%40alice%3Aexample.com':
2533 0 : (var req) => {},
2534 : '/client/v3/rooms/!1234%3Aexample.com/send/m.room.message/1234':
2535 6 : (var reqI) => {
2536 9 : 'event_id': '\$event${FakeMatrixApi.eventCounter++}',
2537 : },
2538 : '/client/v3/rooms/!1234%3Aexample.com/send/m.room.message/newresend':
2539 4 : (var reqI) => {
2540 6 : 'event_id': '\$event${FakeMatrixApi.eventCounter++}',
2541 : },
2542 : '/client/v3/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/tags/m.favourite':
2543 4 : (var req) => {},
2544 : '/client/v3/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags/testtag':
2545 0 : (var req) => {},
2546 : '/client/v3/user/%40alice%3Aexample.com/account_data/test.account.data':
2547 0 : (var req) => {},
2548 : '/client/v3/user/%40test%3AfakeServer.notExisting/account_data/best%20animal':
2549 2 : (var req) => {},
2550 : '/client/v3/user/%40alice%3Aexample.com/rooms/1234/account_data/test.account.data':
2551 0 : (var req) => {},
2552 : '/client/v3/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/account_data/com.famedly.marked_unread':
2553 4 : (var req) => {},
2554 : '/client/v3/user/%40test%3AfakeServer.notExisting/account_data/m.direct':
2555 16 : (var req) => {},
2556 : '/client/v3/user/%40othertest%3AfakeServer.notExisting/account_data/m.direct':
2557 0 : (var req) => {},
2558 0 : '/client/v3/profile/%40alice%3Aexample.com/displayname': (var reqI) => {},
2559 0 : '/client/v3/profile/%40alice%3Aexample.com/avatar_url': (var reqI) => {},
2560 : '/client/v3/profile/%40test%3AfakeServer.notExisting/avatar_url':
2561 2 : (var reqI) => {},
2562 : '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.encryption':
2563 4 : (var reqI) => {'event_id': 'YUwRidLecu:example.com'},
2564 : '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.avatar':
2565 4 : (var reqI) => {'event_id': 'YUwRidLecu:example.com'},
2566 : '/client/v3/rooms/!localpart%3Aserver.abc/send/m.room.message/1234':
2567 0 : (var reqI) => {'event_id': 'YUwRidLecu:example.com'},
2568 0 : '/client/v3/rooms/!localpart%3Aserver.abc/redact/1234/1234': (var reqI) =>
2569 0 : {'event_id': 'YUwRidLecu:example.com'},
2570 : '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.name':
2571 4 : (var reqI) => {
2572 : 'event_id': '42',
2573 : },
2574 : '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.topic':
2575 4 : (var reqI) => {
2576 : 'event_id': '42',
2577 : },
2578 : '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.pinned_events':
2579 0 : (var reqI) => {
2580 : 'event_id': '42',
2581 : },
2582 : '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.power_levels':
2583 8 : (var reqI) => {
2584 : 'event_id': '42',
2585 : },
2586 : '/client/v3/rooms/!calls%3Aexample.com/state/m.room.power_levels':
2587 4 : (var reqI) => {
2588 : 'event_id': '42',
2589 : },
2590 0 : '/client/v3/directory/list/room/!localpart%3Aexample.com': (var req) =>
2591 0 : {},
2592 0 : '/client/v3/room_keys/version/5': (var req) => {},
2593 : '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
2594 0 : (var req) => {
2595 : 'etag': 'asdf',
2596 : 'count': 1,
2597 : },
2598 : '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
2599 0 : (var req) => {
2600 : 'etag': 'asdf',
2601 : 'count': 1,
2602 : },
2603 8 : '/client/v3/room_keys/keys?version=5': (var req) => {
2604 : 'etag': 'asdf',
2605 : 'count': 1,
2606 : },
2607 4 : '/client/unstable/org.matrix.msc3814.v1/dehydrated_device': (var _) => {
2608 : 'device_id': 'DEHYDDEV',
2609 : }
2610 : },
2611 : 'DELETE': {
2612 0 : '/unknown/token': (var req) => {'errcode': 'M_UNKNOWN_TOKEN'},
2613 0 : '/client/v3/devices/QBUAZIFURK': (var req) => {},
2614 0 : '/client/v3/directory/room/%23testalias%3Aexample.com': (var reqI) => {},
2615 0 : '/client/v3/pushrules/global/content/nocake': (var req) => {},
2616 : '/client/v3/pushrules/global/override/!localpart%3Aserver.abc':
2617 4 : (var req) => {},
2618 : '/client/v3/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/tags/m.favourite':
2619 4 : (var req) => {},
2620 : '/client/v3/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags/testtag':
2621 0 : (var req) => {},
2622 0 : '/client/v3/room_keys/version/5': (var req) => {},
2623 : '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
2624 0 : (var req) => {
2625 : 'etag': 'asdf',
2626 : 'count': 1,
2627 : },
2628 : '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
2629 0 : (var req) => {
2630 : 'etag': 'asdf',
2631 : 'count': 1,
2632 : },
2633 0 : '/client/v3/room_keys/keys?version=5': (var req) => {
2634 : 'etag': 'asdf',
2635 : 'count': 1,
2636 : },
2637 : },
2638 : };
2639 : }
|