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