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