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