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