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