Merge branch 'krille/migrate-to-matrixapilite-v1' into 'main'

refactor: Migrate to Matrix Api Lite 1.0.0

See merge request famedly/company/frontend/famedlysdk!1029
This commit is contained in:
Nicolas Werner 2022-05-17 22:50:05 +00:00
commit edec008bbe
18 changed files with 287 additions and 291 deletions

View File

@ -631,7 +631,7 @@ class KeyManager {
Future<void> loadSingleKey(String roomId, String sessionId) async { Future<void> loadSingleKey(String roomId, String sessionId) async {
final info = await getRoomKeysBackupInfo(); final info = await getRoomKeysBackupInfo();
final ret = final ret =
await client.getRoomKeysBySessionId(roomId, sessionId, info.version); await client.getRoomKeyBySessionId(roomId, sessionId, info.version);
final keys = RoomKeys.fromJson({ final keys = RoomKeys.fromJson({
'rooms': { 'rooms': {
roomId: { roomId: {

View File

@ -846,7 +846,7 @@ class Client extends MatrixApi {
return pushrules != null ? PushRuleSet.fromJson(pushrules) : null; return pushrules != null ? PushRuleSet.fromJson(pushrules) : null;
} }
static const Set<String> supportedVersions = {'r0.5.0', 'r0.6.0'}; static const Set<String> supportedVersions = {'v1.1', 'v1.2'};
static const List<String> supportedDirectEncryptionAlgorithms = [ static const List<String> supportedDirectEncryptionAlgorithms = [
AlgorithmTypes.olmV1Curve25519AesSha2 AlgorithmTypes.olmV1Curve25519AesSha2
]; ];

View File

@ -1102,7 +1102,7 @@ class Room {
this.prev_batch = resp.end; this.prev_batch = resp.end;
final loadFn = () async { final loadFn = () async {
if (!((resp.chunk?.isNotEmpty ?? false) && resp.end != null)) return; if (!((resp.chunk.isNotEmpty) && resp.end != null)) return;
await client.handleSync( await client.handleSync(
SyncUpdate( SyncUpdate(
@ -1116,7 +1116,7 @@ class Room {
limited: false, limited: false,
events: direction == Direction.b events: direction == Direction.b
? resp.chunk ? resp.chunk
: resp.chunk?.reversed.toList(), : resp.chunk.reversed.toList(),
prevBatch: direction == Direction.b prevBatch: direction == Direction.b
? resp.end ? resp.end
: resp.start, : resp.start,
@ -1151,7 +1151,7 @@ class Room {
await loadFn(); await loadFn();
} }
return resp.chunk?.length ?? 0; return resp.chunk.length;
} }
/// Sets this room as a direct chat for this user if not already. /// Sets this room as a direct chat for this user if not already.

View File

@ -184,8 +184,8 @@ class Timeline {
filter: jsonEncode(StateFilter(lazyLoadMembers: true).toJson()), filter: jsonEncode(StateFilter(lazyLoadMembers: true).toJson()),
); );
if (resp.end == null || resp.start == null) { if (resp.end == null) {
Logs().w('end or start parameters where not set in the response'); Logs().w('end parameter was not set in the response');
} }
final newNextBatch = direction == Direction.b ? resp.start : resp.end; final newNextBatch = direction == Direction.b ? resp.start : resp.end;
@ -206,7 +206,7 @@ class Timeline {
} }
final newEvents = final newEvents =
resp.chunk?.map((e) => Event.fromMatrixEvent(e, room)).toList() ?? []; resp.chunk.map((e) => Event.fromMatrixEvent(e, room)).toList();
if (!allowNewEvent) { if (!allowNewEvent) {
if (resp.start == resp.end) allowNewEvent = true; if (resp.start == resp.end) allowNewEvent = true;
@ -255,7 +255,7 @@ class Timeline {
if (onUpdate != null) { if (onUpdate != null) {
onUpdate!(); onUpdate!();
} }
return resp.chunk?.length ?? 0; return resp.chunk.length;
} }
Timeline( Timeline(

View File

@ -25,7 +25,7 @@ extension MxcUriExtension on Uri {
Uri getDownloadLink(Client matrix) => isScheme('mxc') Uri getDownloadLink(Client matrix) => isScheme('mxc')
? matrix.homeserver != null ? matrix.homeserver != null
? matrix.homeserver?.resolve( ? matrix.homeserver?.resolve(
'_matrix/media/r0/download/$host${hasPort ? ':$port' : ''}$path') ?? '_matrix/media/v3/download/$host${hasPort ? ':$port' : ''}$path') ??
Uri() Uri()
: Uri() : Uri()
: this; : this;
@ -48,7 +48,7 @@ extension MxcUriExtension on Uri {
return Uri( return Uri(
scheme: homeserver.scheme, scheme: homeserver.scheme,
host: homeserver.host, host: homeserver.host,
path: '/_matrix/media/r0/thumbnail/$host${hasPort ? ':$port' : ''}$path', path: '/_matrix/media/v3/thumbnail/$host${hasPort ? ':$port' : ''}$path',
port: homeserver.port, port: homeserver.port,
queryParameters: { queryParameters: {
if (width != null) 'width': width.round().toString(), if (width != null) 'width': width.round().toString(),

View File

@ -18,7 +18,7 @@ dependencies:
crypto: ^3.0.0 crypto: ^3.0.0
base58check: ^2.0.0 base58check: ^2.0.0
olm: ^2.0.0 olm: ^2.0.0
matrix_api_lite: ^0.5.1 matrix_api_lite: ^1.0.0
hive: ^2.0.4 hive: ^2.0.4
image: ^3.1.1 image: ^3.1.1
ffi: ^1.0.0 ffi: ^1.0.0

View File

@ -579,7 +579,7 @@ void main() {
}); });
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
true); true);
}); });
test('sendToDeviceEncryptedChunked', () async { test('sendToDeviceEncryptedChunked', () async {
@ -599,7 +599,7 @@ void main() {
expect( expect(
FakeMatrixApi.calledEndpoints.keys FakeMatrixApi.calledEndpoints.keys
.where((k) => .where((k) =>
k.startsWith('/client/r0/sendToDevice/m.room.encrypted')) k.startsWith('/client/v3/sendToDevice/m.room.encrypted'))
.length, .length,
1); 1);
@ -641,14 +641,14 @@ void main() {
expect( expect(
FakeMatrixApi.calledEndpoints.keys FakeMatrixApi.calledEndpoints.keys
.where((k) => .where((k) =>
k.startsWith('/client/r0/sendToDevice/m.room.encrypted')) k.startsWith('/client/v3/sendToDevice/m.room.encrypted'))
.length, .length,
1); 1);
await Future.delayed(Duration(milliseconds: 100)); await Future.delayed(Duration(milliseconds: 100));
expect( expect(
FakeMatrixApi.calledEndpoints.keys FakeMatrixApi.calledEndpoints.keys
.where((k) => .where((k) =>
k.startsWith('/client/r0/sendToDevice/m.room.encrypted')) k.startsWith('/client/v3/sendToDevice/m.room.encrypted'))
.length, .length,
2); 2);
}); });
@ -688,26 +688,26 @@ void main() {
await client.sendToDevice('raccoon', 'raccoon_txnid', raccoonContent); await client.sendToDevice('raccoon', 'raccoon_txnid', raccoonContent);
expect( expect(
json.decode(FakeMatrixApi json.decode(FakeMatrixApi
.calledEndpoints['/client/r0/sendToDevice/foxies/floof_txnid'] .calledEndpoints['/client/v3/sendToDevice/foxies/floof_txnid']
?[0])['messages'], ?[0])['messages'],
foxContent); foxContent);
expect( expect(
json.decode(FakeMatrixApi.calledEndpoints[ json.decode(FakeMatrixApi.calledEndpoints[
'/client/r0/sendToDevice/raccoon/raccoon_txnid']?[0])['messages'], '/client/v3/sendToDevice/raccoon/raccoon_txnid']?[0])['messages'],
raccoonContent); raccoonContent);
FakeMatrixApi.calledEndpoints.clear(); FakeMatrixApi.calledEndpoints.clear();
await client.sendToDevice('bunny', 'bunny_txnid', bunnyContent); await client.sendToDevice('bunny', 'bunny_txnid', bunnyContent);
expect( expect(
FakeMatrixApi FakeMatrixApi
.calledEndpoints['/client/r0/sendToDevice/foxies/floof_txnid'], .calledEndpoints['/client/v3/sendToDevice/foxies/floof_txnid'],
null); null);
expect( expect(
FakeMatrixApi FakeMatrixApi
.calledEndpoints['/client/r0/sendToDevice/raccoon/raccoon_txnid'], .calledEndpoints['/client/v3/sendToDevice/raccoon/raccoon_txnid'],
null); null);
expect( expect(
json.decode(FakeMatrixApi json.decode(FakeMatrixApi
.calledEndpoints['/client/r0/sendToDevice/bunny/bunny_txnid'] .calledEndpoints['/client/v3/sendToDevice/bunny/bunny_txnid']
?[0])['messages'], ?[0])['messages'],
bunnyContent); bunnyContent);
await client.dispose(closeDatabase: true); await client.dispose(closeDatabase: true);
@ -751,16 +751,16 @@ void main() {
await client.sendToDevice('bunny', 'bunny_txnid', bunnyContent); await client.sendToDevice('bunny', 'bunny_txnid', bunnyContent);
expect( expect(
json.decode(FakeMatrixApi json.decode(FakeMatrixApi
.calledEndpoints['/client/r0/sendToDevice/foxies/floof_txnid'] .calledEndpoints['/client/v3/sendToDevice/foxies/floof_txnid']
?[0])['messages'], ?[0])['messages'],
foxContent); foxContent);
expect( expect(
json.decode(FakeMatrixApi.calledEndpoints[ json.decode(FakeMatrixApi.calledEndpoints[
'/client/r0/sendToDevice/raccoon/raccoon_txnid']?[0])['messages'], '/client/v3/sendToDevice/raccoon/raccoon_txnid']?[0])['messages'],
raccoonContent); raccoonContent);
expect( expect(
json.decode(FakeMatrixApi json.decode(FakeMatrixApi
.calledEndpoints['/client/r0/sendToDevice/bunny/bunny_txnid'] .calledEndpoints['/client/v3/sendToDevice/bunny/bunny_txnid']
?[0])['messages'], ?[0])['messages'],
bunnyContent); bunnyContent);
await client.dispose(closeDatabase: true); await client.dispose(closeDatabase: true);

View File

@ -35,7 +35,7 @@ void main() {
final state = stateKey != null; final state = stateKey != null;
return json.decode(FakeMatrixApi.calledEndpoints.entries return json.decode(FakeMatrixApi.calledEndpoints.entries
.firstWhere((e) => e.key.startsWith( .firstWhere((e) => e.key.startsWith(
'/client/r0/rooms/${Uri.encodeComponent(room.id)}/${state ? 'state' : 'send'}/${Uri.encodeComponent(type)}${state && stateKey?.isNotEmpty == true ? '/' + Uri.encodeComponent(stateKey!) : ''}')) '/client/v3/rooms/${Uri.encodeComponent(room.id)}/${state ? 'state' : 'send'}/${Uri.encodeComponent(type)}${state && stateKey?.isNotEmpty == true ? '/' + Uri.encodeComponent(stateKey!) : ''}'))
.value .value
.first); .first);
}; };
@ -168,7 +168,7 @@ void main() {
await room.sendTextEvent('/join !newroom:example.com'); await room.sendTextEvent('/join !newroom:example.com');
expect( expect(
FakeMatrixApi FakeMatrixApi
.calledEndpoints['/client/r0/join/!newroom%3Aexample.com'] .calledEndpoints['/client/v3/join/!newroom%3Aexample.com']
?.first != ?.first !=
null, null,
true); true);
@ -180,7 +180,7 @@ void main() {
expect( expect(
FakeMatrixApi FakeMatrixApi
.calledEndpoints[ .calledEndpoints[
'/client/r0/rooms/!1234%3AfakeServer.notExisting/leave'] '/client/v3/rooms/!1234%3AfakeServer.notExisting/leave']
?.first != ?.first !=
null, null,
true); true);
@ -208,7 +208,7 @@ void main() {
expect( expect(
json.decode(FakeMatrixApi json.decode(FakeMatrixApi
.calledEndpoints[ .calledEndpoints[
'/client/r0/rooms/!1234%3AfakeServer.notExisting/kick'] '/client/v3/rooms/!1234%3AfakeServer.notExisting/kick']
?.first), ?.first),
{ {
'user_id': '@baduser:example.org', 'user_id': '@baduser:example.org',
@ -221,7 +221,7 @@ void main() {
expect( expect(
json.decode(FakeMatrixApi json.decode(FakeMatrixApi
.calledEndpoints[ .calledEndpoints[
'/client/r0/rooms/!1234%3AfakeServer.notExisting/ban'] '/client/v3/rooms/!1234%3AfakeServer.notExisting/ban']
?.first), ?.first),
{ {
'user_id': '@baduser:example.org', 'user_id': '@baduser:example.org',
@ -234,7 +234,7 @@ void main() {
expect( expect(
json.decode(FakeMatrixApi json.decode(FakeMatrixApi
.calledEndpoints[ .calledEndpoints[
'/client/r0/rooms/!1234%3AfakeServer.notExisting/unban'] '/client/v3/rooms/!1234%3AfakeServer.notExisting/unban']
?.first), ?.first),
{ {
'user_id': '@baduser:example.org', 'user_id': '@baduser:example.org',
@ -247,7 +247,7 @@ void main() {
expect( expect(
json.decode(FakeMatrixApi json.decode(FakeMatrixApi
.calledEndpoints[ .calledEndpoints[
'/client/r0/rooms/!1234%3AfakeServer.notExisting/invite'] '/client/v3/rooms/!1234%3AfakeServer.notExisting/invite']
?.first), ?.first),
{ {
'user_id': '@baduser:example.org', 'user_id': '@baduser:example.org',
@ -279,7 +279,7 @@ void main() {
await room.sendTextEvent('/dm @alice:example.com --no-encryption'); await room.sendTextEvent('/dm @alice:example.com --no-encryption');
expect( expect(
json.decode( json.decode(
FakeMatrixApi.calledEndpoints['/client/r0/createRoom']?.first), FakeMatrixApi.calledEndpoints['/client/v3/createRoom']?.first),
{ {
'invite': ['@alice:example.com'], 'invite': ['@alice:example.com'],
'is_direct': true, 'is_direct': true,
@ -292,7 +292,7 @@ void main() {
await room.sendTextEvent('/create @alice:example.com --no-encryption'); await room.sendTextEvent('/create @alice:example.com --no-encryption');
expect( expect(
json.decode( json.decode(
FakeMatrixApi.calledEndpoints['/client/r0/createRoom']?.first), FakeMatrixApi.calledEndpoints['/client/v3/createRoom']?.first),
{'preset': 'private_chat'}); {'preset': 'private_chat'});
}); });

View File

@ -192,7 +192,7 @@ void main() {
await Future.delayed(Duration(milliseconds: 10)); await Future.delayed(Duration(milliseconds: 10));
expect( expect(
FakeMatrixApi.calledEndpoints.keys FakeMatrixApi.calledEndpoints.keys
.any((k) => k == '/client/r0/keys/signatures/upload'), .any((k) => k == '/client/v3/keys/signatures/upload'),
true); true);
expect(key.directVerified, true); expect(key.directVerified, true);
@ -201,7 +201,7 @@ void main() {
await Future.delayed(Duration(milliseconds: 10)); await Future.delayed(Duration(milliseconds: 10));
expect( expect(
FakeMatrixApi.calledEndpoints.keys FakeMatrixApi.calledEndpoints.keys
.any((k) => k == '/client/r0/keys/signatures/upload'), .any((k) => k == '/client/v3/keys/signatures/upload'),
false); false);
expect(key.directVerified, false); expect(key.directVerified, false);
client.userDeviceKeys[client.userID]?.deviceKeys.remove('UNSIGNEDDEVICE'); client.userDeviceKeys[client.userID]?.deviceKeys.remove('UNSIGNEDDEVICE');

View File

@ -61,7 +61,7 @@ void main() {
expect(key.directVerified, true); expect(key.directVerified, true);
expect( expect(
FakeMatrixApi.calledEndpoints FakeMatrixApi.calledEndpoints
.containsKey('/client/r0/keys/signatures/upload'), .containsKey('/client/v3/keys/signatures/upload'),
true); true);
expect(await client.encryption!.crossSigning.isCached(), true); expect(await client.encryption!.crossSigning.isCached(), true);
}); });
@ -99,7 +99,7 @@ void main() {
client.userDeviceKeys['@othertest:fakeServer.notExisting']!.masterKey! client.userDeviceKeys['@othertest:fakeServer.notExisting']!.masterKey!
]); ]);
final body = json.decode(FakeMatrixApi final body = json.decode(FakeMatrixApi
.calledEndpoints['/client/r0/keys/signatures/upload']!.first); .calledEndpoints['/client/v3/keys/signatures/upload']!.first);
expect(body['@test:fakeServer.notExisting']?.containsKey('OTHERDEVICE'), expect(body['@test:fakeServer.notExisting']?.containsKey('OTHERDEVICE'),
true); true);
expect( expect(

View File

@ -539,8 +539,8 @@ void main() {
.remove('JLAFKJWSCS'); .remove('JLAFKJWSCS');
// Alice adds her device with same device ID but different keys // Alice adds her device with same device ID but different keys
final oldResp = FakeMatrixApi.api['POST']?['/client/r0/keys/query'](null); final oldResp = FakeMatrixApi.api['POST']?['/client/v3/keys/query'](null);
FakeMatrixApi.api['POST']?['/client/r0/keys/query'] = (_) { FakeMatrixApi.api['POST']?['/client/v3/keys/query'] = (_) {
oldResp['device_keys']['@alice:example.com']['JLAFKJWSCS'] = { oldResp['device_keys']['@alice:example.com']['JLAFKJWSCS'] = {
'user_id': '@alice:example.com', 'user_id': '@alice:example.com',
'device_id': 'JLAFKJWSCS', 'device_id': 'JLAFKJWSCS',

View File

@ -65,7 +65,7 @@ void main() {
for (final entry in FakeMatrixApi.calledEndpoints.entries) { for (final entry in FakeMatrixApi.calledEndpoints.entries) {
final payload = jsonDecode(entry.value.first); final payload = jsonDecode(entry.value.first);
if (entry.key if (entry.key
.startsWith('/client/r0/sendToDevice/m.room_key_request') && .startsWith('/client/v3/sendToDevice/m.room_key_request') &&
(payload['messages'] is Map) && (payload['messages'] is Map) &&
(payload['messages']['@alice:example.com'] is Map) && (payload['messages']['@alice:example.com'] is Map) &&
(payload['messages']['@alice:example.com']['*'] is Map)) { (payload['messages']['@alice:example.com']['*'] is Map)) {
@ -115,7 +115,7 @@ void main() {
Logs().i(FakeMatrixApi.calledEndpoints.keys.toString()); Logs().i(FakeMatrixApi.calledEndpoints.keys.toString());
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
true); true);
// test a successful foreign share // test a successful foreign share
@ -142,7 +142,7 @@ void main() {
Logs().i(FakeMatrixApi.calledEndpoints.keys.toString()); Logs().i(FakeMatrixApi.calledEndpoints.keys.toString());
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
true); true);
session.allowedAtIndex.remove('@test:fakeServer.notExisting'); session.allowedAtIndex.remove('@test:fakeServer.notExisting');
@ -168,7 +168,7 @@ void main() {
Logs().i(FakeMatrixApi.calledEndpoints.keys.toString()); Logs().i(FakeMatrixApi.calledEndpoints.keys.toString());
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
// no body // no body
@ -184,7 +184,7 @@ void main() {
await matrix.encryption!.keyManager.handleToDeviceEvent(event); await matrix.encryption!.keyManager.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
// request by ourself // request by ourself
@ -206,7 +206,7 @@ void main() {
await matrix.encryption!.keyManager.handleToDeviceEvent(event); await matrix.encryption!.keyManager.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
// device not found // device not found
@ -228,7 +228,7 @@ void main() {
await matrix.encryption!.keyManager.handleToDeviceEvent(event); await matrix.encryption!.keyManager.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
// unknown room // unknown room
@ -250,7 +250,7 @@ void main() {
await matrix.encryption!.keyManager.handleToDeviceEvent(event); await matrix.encryption!.keyManager.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
// unknwon session // unknwon session
@ -272,7 +272,7 @@ void main() {
await matrix.encryption!.keyManager.handleToDeviceEvent(event); await matrix.encryption!.keyManager.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
FakeMatrixApi.calledEndpoints.clear(); FakeMatrixApi.calledEndpoints.clear();

View File

@ -66,7 +66,7 @@ void main() {
.uploadKeys(uploadDeviceKeys: true); .uploadKeys(uploadDeviceKeys: true);
expect(res, true); expect(res, true);
var sent = json.decode( var sent = json.decode(
FakeMatrixApi.calledEndpoints['/client/r0/keys/upload']!.first); FakeMatrixApi.calledEndpoints['/client/v3/keys/upload']!.first);
expect(sent['device_keys'] != null, true); expect(sent['device_keys'] != null, true);
expect(sent['one_time_keys'] != null, true); expect(sent['one_time_keys'] != null, true);
expect(sent['one_time_keys'].keys.length, 66); expect(sent['one_time_keys'].keys.length, 66);
@ -75,14 +75,14 @@ void main() {
FakeMatrixApi.calledEndpoints.clear(); FakeMatrixApi.calledEndpoints.clear();
await client.encryption!.olmManager.uploadKeys(); await client.encryption!.olmManager.uploadKeys();
sent = json.decode( sent = json.decode(
FakeMatrixApi.calledEndpoints['/client/r0/keys/upload']!.first); FakeMatrixApi.calledEndpoints['/client/v3/keys/upload']!.first);
expect(sent['device_keys'] != null, false); expect(sent['device_keys'] != null, false);
expect(sent['fallback_keys'].keys.length, 1); expect(sent['fallback_keys'].keys.length, 1);
FakeMatrixApi.calledEndpoints.clear(); FakeMatrixApi.calledEndpoints.clear();
await client.encryption!.olmManager await client.encryption!.olmManager
.uploadKeys(oldKeyCount: 20, unusedFallbackKey: true); .uploadKeys(oldKeyCount: 20, unusedFallbackKey: true);
sent = json.decode( sent = json.decode(
FakeMatrixApi.calledEndpoints['/client/r0/keys/upload']!.first); FakeMatrixApi.calledEndpoints['/client/v3/keys/upload']!.first);
expect(sent['one_time_keys'].keys.length, 46); expect(sent['one_time_keys'].keys.length, 46);
expect(sent['fallback_keys'].keys.length, 0); expect(sent['fallback_keys'].keys.length, 0);
}); });
@ -94,7 +94,7 @@ void main() {
.handleDeviceOneTimeKeysCount({'signed_curve25519': 20}, null); .handleDeviceOneTimeKeysCount({'signed_curve25519': 20}, null);
await Future.delayed(Duration(milliseconds: 50)); await Future.delayed(Duration(milliseconds: 50));
expect( expect(
FakeMatrixApi.calledEndpoints.containsKey('/client/r0/keys/upload'), FakeMatrixApi.calledEndpoints.containsKey('/client/v3/keys/upload'),
true); true);
FakeMatrixApi.calledEndpoints.clear(); FakeMatrixApi.calledEndpoints.clear();
@ -102,14 +102,14 @@ void main() {
.handleDeviceOneTimeKeysCount({'signed_curve25519': 70}, null); .handleDeviceOneTimeKeysCount({'signed_curve25519': 70}, null);
await Future.delayed(Duration(milliseconds: 50)); await Future.delayed(Duration(milliseconds: 50));
expect( expect(
FakeMatrixApi.calledEndpoints.containsKey('/client/r0/keys/upload'), FakeMatrixApi.calledEndpoints.containsKey('/client/v3/keys/upload'),
false); false);
FakeMatrixApi.calledEndpoints.clear(); FakeMatrixApi.calledEndpoints.clear();
client.encryption!.olmManager.handleDeviceOneTimeKeysCount(null, []); client.encryption!.olmManager.handleDeviceOneTimeKeysCount(null, []);
await Future.delayed(Duration(milliseconds: 50)); await Future.delayed(Duration(milliseconds: 50));
expect( expect(
FakeMatrixApi.calledEndpoints.containsKey('/client/r0/keys/upload'), FakeMatrixApi.calledEndpoints.containsKey('/client/v3/keys/upload'),
true); true);
// this will upload keys because we assume the key count is 0, if the server doesn't send one // this will upload keys because we assume the key count is 0, if the server doesn't send one
@ -118,7 +118,7 @@ void main() {
.handleDeviceOneTimeKeysCount(null, ['signed_curve25519']); .handleDeviceOneTimeKeysCount(null, ['signed_curve25519']);
await Future.delayed(Duration(milliseconds: 50)); await Future.delayed(Duration(milliseconds: 50));
expect( expect(
FakeMatrixApi.calledEndpoints.containsKey('/client/r0/keys/upload'), FakeMatrixApi.calledEndpoints.containsKey('/client/v3/keys/upload'),
true); true);
}); });
@ -179,7 +179,7 @@ void main() {
await client.encryption!.olmManager.handleToDeviceEvent(event); await client.encryption!.olmManager.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
true); true);
// fail scenarios // fail scenarios
@ -204,7 +204,7 @@ void main() {
await client.encryption!.olmManager.handleToDeviceEvent(event); await client.encryption!.olmManager.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
// device not found // device not found
@ -229,7 +229,7 @@ void main() {
await client.encryption!.olmManager.handleToDeviceEvent(event); await client.encryption!.olmManager.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
// don't replay if the last event is m.dummy itself // don't replay if the last event is m.dummy itself
@ -252,7 +252,7 @@ void main() {
await client.encryption!.olmManager.handleToDeviceEvent(event); await client.encryption!.olmManager.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
}); });

View File

@ -101,7 +101,7 @@ void main() {
expect(dbSessions.isNotEmpty, true); expect(dbSessions.isNotEmpty, true);
await client.encryption!.keyManager.backgroundTasks(); await client.encryption!.keyManager.backgroundTasks();
final payload = FakeMatrixApi final payload = FakeMatrixApi
.calledEndpoints['/client/unstable/room_keys/keys?version=5']!.first; .calledEndpoints['/client/v3/room_keys/keys?version=5']!.first;
dbSessions = await client.database!.getInboundGroupSessionsToUpload(); dbSessions = await client.database!.getInboundGroupSessionsToUpload();
expect(dbSessions.isEmpty, true); expect(dbSessions.isEmpty, true);

View File

@ -113,7 +113,7 @@ void main() {
// account_data for this test // account_data for this test
final content = FakeMatrixApi final content = FakeMatrixApi
.calledEndpoints[ .calledEndpoints[
'/client/r0/user/%40test%3AfakeServer.notExisting/account_data/best%20animal']! '/client/v3/user/%40test%3AfakeServer.notExisting/account_data/best%20animal']!
.first; .first;
client.accountData['best animal'] = BasicEvent.fromJson({ client.accountData['best animal'] = BasicEvent.fromJson({
'type': 'best animal', 'type': 'best animal',
@ -206,7 +206,7 @@ void main() {
await client.encryption!.ssss.request('some.type', [key]); await client.encryption!.ssss.request('some.type', [key]);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
true); true);
}); });
@ -226,7 +226,7 @@ void main() {
await client.encryption!.ssss.handleToDeviceEvent(event); await client.encryption!.ssss.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
true); true);
// now test some fail scenarios // now test some fail scenarios
@ -246,7 +246,7 @@ void main() {
await client.encryption!.ssss.handleToDeviceEvent(event); await client.encryption!.ssss.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
// secret not cached // secret not cached
@ -264,7 +264,7 @@ void main() {
await client.encryption!.ssss.handleToDeviceEvent(event); await client.encryption!.ssss.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
// is a cancelation // is a cancelation
@ -282,7 +282,7 @@ void main() {
await client.encryption!.ssss.handleToDeviceEvent(event); await client.encryption!.ssss.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
// device not verified // device not verified
@ -305,7 +305,7 @@ void main() {
await client.encryption!.ssss.handleToDeviceEvent(event); await client.encryption!.ssss.handleToDeviceEvent(event);
expect( expect(
FakeMatrixApi.calledEndpoints.keys.any( FakeMatrixApi.calledEndpoints.keys.any(
(k) => k.startsWith('/client/r0/sendToDevice/m.room.encrypted')), (k) => k.startsWith('/client/v3/sendToDevice/m.room.encrypted')),
false); false);
key.setDirectVerified(true); key.setDirectVerified(true);
}); });

View File

@ -1253,8 +1253,8 @@ void main() {
final THUMBNAIL_BUFF = Uint8List.fromList([2]); final THUMBNAIL_BUFF = Uint8List.fromList([2]);
final downloadCallback = (Uri uri) async { final downloadCallback = (Uri uri) async {
return { return {
'/_matrix/media/r0/download/example.org/file': FILE_BUFF, '/_matrix/media/v3/download/example.org/file': FILE_BUFF,
'/_matrix/media/r0/download/example.org/thumb': THUMBNAIL_BUFF, '/_matrix/media/v3/download/example.org/thumb': THUMBNAIL_BUFF,
}[uri.path]!; }[uri.path]!;
}; };
await client.checkHomeserver(Uri.parse('https://fakeserver.notexisting'), await client.checkHomeserver(Uri.parse('https://fakeserver.notexisting'),
@ -1309,21 +1309,21 @@ void main() {
expect(event.attachmentOrThumbnailMxcUrl(getThumbnail: true).toString(), expect(event.attachmentOrThumbnailMxcUrl(getThumbnail: true).toString(),
'mxc://example.org/thumb'); 'mxc://example.org/thumb');
expect(event.getAttachmentUrl().toString(), expect(event.getAttachmentUrl().toString(),
'https://fakeserver.notexisting/_matrix/media/r0/download/example.org/file'); 'https://fakeserver.notexisting/_matrix/media/v3/download/example.org/file');
expect(event.getAttachmentUrl(getThumbnail: true).toString(), expect(event.getAttachmentUrl(getThumbnail: true).toString(),
'https://fakeserver.notexisting/_matrix/media/r0/thumbnail/example.org/file?width=800&height=800&method=scale&animated=false'); 'https://fakeserver.notexisting/_matrix/media/v3/thumbnail/example.org/file?width=800&height=800&method=scale&animated=false');
expect(event.getAttachmentUrl(useThumbnailMxcUrl: true).toString(), expect(event.getAttachmentUrl(useThumbnailMxcUrl: true).toString(),
'https://fakeserver.notexisting/_matrix/media/r0/download/example.org/thumb'); 'https://fakeserver.notexisting/_matrix/media/v3/download/example.org/thumb');
expect( expect(
event event
.getAttachmentUrl(getThumbnail: true, useThumbnailMxcUrl: true) .getAttachmentUrl(getThumbnail: true, useThumbnailMxcUrl: true)
.toString(), .toString(),
'https://fakeserver.notexisting/_matrix/media/r0/thumbnail/example.org/thumb?width=800&height=800&method=scale&animated=false'); 'https://fakeserver.notexisting/_matrix/media/v3/thumbnail/example.org/thumb?width=800&height=800&method=scale&animated=false');
expect( expect(
event event
.getAttachmentUrl(getThumbnail: true, minNoThumbSize: 9000000) .getAttachmentUrl(getThumbnail: true, minNoThumbSize: 9000000)
.toString(), .toString(),
'https://fakeserver.notexisting/_matrix/media/r0/download/example.org/file'); 'https://fakeserver.notexisting/_matrix/media/v3/download/example.org/file');
buffer = await event.downloadAndDecryptAttachment( buffer = await event.downloadAndDecryptAttachment(
downloadCallback: downloadCallback); downloadCallback: downloadCallback);
@ -1344,8 +1344,8 @@ void main() {
Uint8List.fromList([0x74, 0x68, 0x75, 0x6D, 0x62, 0x0A]); Uint8List.fromList([0x74, 0x68, 0x75, 0x6D, 0x62, 0x0A]);
final downloadCallback = (Uri uri) async { final downloadCallback = (Uri uri) async {
return { return {
'/_matrix/media/r0/download/example.com/file': FILE_BUFF_ENC, '/_matrix/media/v3/download/example.com/file': FILE_BUFF_ENC,
'/_matrix/media/r0/download/example.com/thumb': THUMB_BUFF_ENC, '/_matrix/media/v3/download/example.com/thumb': THUMB_BUFF_ENC,
}[uri.path]!; }[uri.path]!;
}; };
final room = Room(id: '!localpart:server.abc', client: await getClient()); final room = Room(id: '!localpart:server.abc', client: await getClient());
@ -1441,7 +1441,7 @@ void main() {
final downloadCallback = (Uri uri) async { final downloadCallback = (Uri uri) async {
serverHits++; serverHits++;
return { return {
'/_matrix/media/r0/download/example.org/newfile': FILE_BUFF, '/_matrix/media/v3/download/example.org/newfile': FILE_BUFF,
}[uri.path]!; }[uri.path]!;
}; };
await client.checkHomeserver(Uri.parse('https://fakeserver.notexisting'), await client.checkHomeserver(Uri.parse('https://fakeserver.notexisting'),

View File

@ -96,25 +96,25 @@ class FakeMatrixApi extends MockClient {
} }
} }
} else if (method == 'PUT' && } else if (method == 'PUT' &&
action.contains('/client/r0/sendToDevice/')) { action.contains('/client/v3/sendToDevice/')) {
res = {}; res = {};
if (failToDevice) { if (failToDevice) {
statusCode = 500; statusCode = 500;
} }
} else if (method == 'GET' && } else if (method == 'GET' &&
action.contains('/client/r0/rooms/') && action.contains('/client/v3/rooms/') &&
action.contains('/state/m.room.member/') && action.contains('/state/m.room.member/') &&
!action.endsWith('%40alicyy%3Aexample.com')) { !action.endsWith('%40alicyy%3Aexample.com')) {
res = {'displayname': ''}; res = {'displayname': ''};
} else if (method == 'PUT' && } else if (method == 'PUT' &&
action.contains( action.contains(
'/client/r0/rooms/!1234%3AfakeServer.notExisting/send/')) { '/client/v3/rooms/!1234%3AfakeServer.notExisting/send/')) {
res = {'event_id': '\$event${FakeMatrixApi.eventCounter++}'}; res = {'event_id': '\$event${FakeMatrixApi.eventCounter++}'};
} else if (method == 'PUT' && } else if (method == 'PUT' &&
action.contains( action.contains(
'/client/r0/rooms/!1234%3AfakeServer.notExisting/state/')) { '/client/v3/rooms/!1234%3AfakeServer.notExisting/state/')) {
res = {'event_id': '\$event${FakeMatrixApi.eventCounter++}'}; res = {'event_id': '\$event${FakeMatrixApi.eventCounter++}'};
} else if (action.contains('/client/r0/sync')) { } else if (action.contains('/client/v3/sync')) {
res = { res = {
'next_batch': DateTime.now().millisecondsSinceEpoch.toString(), 'next_batch': DateTime.now().millisecondsSinceEpoch.toString(),
}; };
@ -862,7 +862,7 @@ class FakeMatrixApi extends MockClient {
'errcode': 'M_FORBIDDEN', 'errcode': 'M_FORBIDDEN',
'error': 'Blabla', 'error': 'Blabla',
}, },
'/media/r0/preview_url?url=https%3A%2F%2Fmatrix.org&ts=10': (var req) => { '/media/v3/preview_url?url=https%3A%2F%2Fmatrix.org&ts=10': (var req) => {
'og:title': 'Matrix Blog Post', 'og:title': 'Matrix Blog Post',
'og:description': 'This is a really cool blog post from matrix.org', 'og:description': 'This is a really cool blog post from matrix.org',
'og:image': 'mxc://example.com/ascERGshawAWawugaAcauga', 'og:image': 'mxc://example.com/ascERGshawAWawugaAcauga',
@ -871,7 +871,7 @@ class FakeMatrixApi extends MockClient {
'og:image:width': 48, 'og:image:width': 48,
'matrix:image:size': 102400 'matrix:image:size': 102400
}, },
'/media/r0/config': (var req) => {'m.upload.size': 50000000}, '/media/v3/config': (var req) => {'m.upload.size': 50000000},
'/.well-known/matrix/client': (var req) => { '/.well-known/matrix/client': (var req) => {
'm.homeserver': {'base_url': 'https://matrix.example.com'}, 'm.homeserver': {'base_url': 'https://matrix.example.com'},
'm.identity_server': {'base_url': 'https://identity.example.com'}, 'm.identity_server': {'base_url': 'https://identity.example.com'},
@ -879,7 +879,7 @@ class FakeMatrixApi extends MockClient {
'app_url': 'https://custom.app.example.org' 'app_url': 'https://custom.app.example.org'
} }
}, },
'/client/r0/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags': '/client/v3/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags':
(var req) => { (var req) => {
'tags': { 'tags': {
'm.favourite': {'order': 0.1}, 'm.favourite': {'order': 0.1},
@ -887,7 +887,7 @@ class FakeMatrixApi extends MockClient {
'u.Customers': {} 'u.Customers': {}
} }
}, },
'/client/r0/events?from=1234&timeout=10&roomId=%211234': (var req) => { '/client/v3/events?from=1234&timeout=10&roomId=%211234': (var req) => {
'start': 's3456_9_0', 'start': 's3456_9_0',
'end': 's3457_9_0', 'end': 's3457_9_0',
'chunk': [ 'chunk': [
@ -907,35 +907,35 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/thirdparty/location?alias=1234': (var req) => [ '/client/v3/thirdparty/location?alias=1234': (var req) => [
{ {
'alias': '#freenode_#matrix:matrix.org', 'alias': '#freenode_#matrix:matrix.org',
'protocol': 'irc', 'protocol': 'irc',
'fields': {'network': 'freenode', 'channel': '#matrix'} 'fields': {'network': 'freenode', 'channel': '#matrix'}
} }
], ],
'/client/r0/thirdparty/location/irc': (var req) => [ '/client/v3/thirdparty/location/irc': (var req) => [
{ {
'alias': '#freenode_#matrix:matrix.org', 'alias': '#freenode_#matrix:matrix.org',
'protocol': 'irc', 'protocol': 'irc',
'fields': {'network': 'freenode', 'channel': '#matrix'} 'fields': {'network': 'freenode', 'channel': '#matrix'}
} }
], ],
'/client/r0/thirdparty/user/irc': (var req) => [ '/client/v3/thirdparty/user/irc': (var req) => [
{ {
'userid': '@_gitter_jim:matrix.org', 'userid': '@_gitter_jim:matrix.org',
'protocol': 'gitter', 'protocol': 'gitter',
'fields': {'user': 'jim'} 'fields': {'user': 'jim'}
} }
], ],
'/client/r0/thirdparty/user?userid=1234': (var req) => [ '/client/v3/thirdparty/user?userid=1234': (var req) => [
{ {
'userid': '@_gitter_jim:matrix.org', 'userid': '@_gitter_jim:matrix.org',
'protocol': 'gitter', 'protocol': 'gitter',
'fields': {'user': 'jim'} 'fields': {'user': 'jim'}
} }
], ],
'/client/r0/thirdparty/protocol/irc': (var req) => { '/client/v3/thirdparty/protocol/irc': (var req) => {
'user_fields': ['network', 'nickname'], 'user_fields': ['network', 'nickname'],
'location_fields': ['network', 'channel'], 'location_fields': ['network', 'channel'],
'icon': 'mxc://example.org/aBcDeFgH', 'icon': 'mxc://example.org/aBcDeFgH',
@ -956,7 +956,7 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/thirdparty/protocols': (var req) => { '/client/v3/thirdparty/protocols': (var req) => {
'irc': { 'irc': {
'user_fields': ['network', 'nickname'], 'user_fields': ['network', 'nickname'],
'location_fields': ['network', 'channel'], 'location_fields': ['network', 'channel'],
@ -999,9 +999,9 @@ class FakeMatrixApi extends MockClient {
] ]
} }
}, },
'/client/r0/account/whoami': (var req) => '/client/v3/account/whoami': (var req) =>
{'user_id': 'alice@example.com'}, {'user_id': 'alice@example.com'},
'/client/r0/capabilities': (var req) => { '/client/v3/capabilities': (var req) => {
'capabilities': { 'capabilities': {
'm.change_password': {'enabled': false}, 'm.change_password': {'enabled': false},
'm.room_versions': { 'm.room_versions': {
@ -1016,7 +1016,7 @@ class FakeMatrixApi extends MockClient {
'com.example.custom.ratelimit': {'max_requests_per_hour': 600} 'com.example.custom.ratelimit': {'max_requests_per_hour': 600}
} }
}, },
'/client/r0/rooms/1234/context/1234?filter=%7B%7D&limit=10': (var req) => '/client/v3/rooms/1234/context/1234?filter=%7B%7D&limit=10': (var req) =>
{ {
'end': 't29-57_2_0_2', 'end': 't29-57_2_0_2',
'events_after': [ 'events_after': [
@ -1107,7 +1107,7 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/admin/whois/%40alice%3Aexample.com': (var req) => { '/client/v3/admin/whois/%40alice%3Aexample.com': (var req) => {
'user_id': '@peter:rabbit.rocks', 'user_id': '@peter:rabbit.rocks',
'devices': { 'devices': {
'teapot': { 'teapot': {
@ -1131,15 +1131,15 @@ class FakeMatrixApi extends MockClient {
} }
} }
}, },
'/client/r0/user/%40alice%3Aexample.com/account_data/test.account.data': '/client/v3/user/%40alice%3Aexample.com/account_data/test.account.data':
(var req) => {'foo': 'bar'}, (var req) => {'foo': 'bar'},
'/client/r0/user/%40alice%3Aexample.com/rooms/1234/account_data/test.account.data': '/client/v3/user/%40alice%3Aexample.com/rooms/1234/account_data/test.account.data':
(var req) => {'foo': 'bar'}, (var req) => {'foo': 'bar'},
'/client/r0/directory/room/%23testalias%3Aexample.com': (var reqI) => { '/client/v3/directory/room/%23testalias%3Aexample.com': (var reqI) => {
'room_id': '!abnjk1jdasj98:capuchins.com', 'room_id': '!abnjk1jdasj98:capuchins.com',
'servers': ['capuchins.com', 'matrix.org', 'another.com'] 'servers': ['capuchins.com', 'matrix.org', 'another.com']
}, },
'/client/r0/account/3pid': (var req) => { '/client/v3/account/3pid': (var req) => {
'threepids': [ 'threepids': [
{ {
'medium': 'email', 'medium': 'email',
@ -1149,7 +1149,7 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/devices': (var req) => { '/client/v3/devices': (var req) => {
'devices': [ 'devices': [
{ {
'device_id': 'QBUAZIFURK', 'device_id': 'QBUAZIFURK',
@ -1159,7 +1159,7 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/notifications?from=1234&limit=10&only=1234': (var req) => { '/client/v3/notifications?from=1234&limit=10&only=1234': (var req) => {
'next_token': 'abcdef', 'next_token': 'abcdef',
'notifications': [ 'notifications': [
{ {
@ -1185,21 +1185,21 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/devices/QBUAZIFURK': (var req) => { '/client/v3/devices/QBUAZIFURK': (var req) => {
'device_id': 'QBUAZIFURK', 'device_id': 'QBUAZIFURK',
'display_name': 'android', 'display_name': 'android',
'last_seen_ip': '1.2.3.4', 'last_seen_ip': '1.2.3.4',
'last_seen_ts': 1474491775024 'last_seen_ts': 1474491775024
}, },
'/client/r0/profile/%40alice%3Aexample.com/displayname': (var reqI) => '/client/v3/profile/%40alice%3Aexample.com/displayname': (var reqI) =>
{'displayname': 'Alice M'}, {'displayname': 'Alice M'},
'/client/r0/profile/%40alice%3Aexample.com/avatar_url': (var reqI) => '/client/v3/profile/%40alice%3Aexample.com/avatar_url': (var reqI) =>
{'avatar_url': 'mxc://test'}, {'avatar_url': 'mxc://test'},
'/client/r0/profile/%40alice%3Aexample.com': (var reqI) => { '/client/v3/profile/%40alice%3Aexample.com': (var reqI) => {
'avatar_url': 'mxc://test', 'avatar_url': 'mxc://test',
'displayname': 'Alice M', 'displayname': 'Alice M',
}, },
'/client/r0/voip/turnServer': (var req) => { '/client/v3/voip/turnServer': (var req) => {
'username': '1443779631:@user:example.com', 'username': '1443779631:@user:example.com',
'password': 'JlKfBy1QwLrO20385QyAtEyIv0=', 'password': 'JlKfBy1QwLrO20385QyAtEyIv0=',
'uris': [ 'uris': [
@ -1209,18 +1209,18 @@ class FakeMatrixApi extends MockClient {
], ],
'ttl': 86400 'ttl': 86400
}, },
'/client/r0/presence/${Uri.encodeComponent('@alice:example.com')}/status': '/client/v3/presence/${Uri.encodeComponent('@alice:example.com')}/status':
(var req) => { (var req) => {
'presence': 'unavailable', 'presence': 'unavailable',
'last_active_ago': 420845, 'last_active_ago': 420845,
'status_msg': 'test', 'status_msg': 'test',
'currently_active': false 'currently_active': false
}, },
'/client/r0/keys/changes?from=1234&to=1234': (var req) => { '/client/v3/keys/changes?from=1234&to=1234': (var req) => {
'changed': ['@alice:example.com', '@bob:example.org'], 'changed': ['@alice:example.com', '@bob:example.org'],
'left': ['@clara:example.com', '@doug:example.org'] 'left': ['@clara:example.com', '@doug:example.org']
}, },
'/client/r0/pushers': (var req) => { '/client/v3/pushers': (var req) => {
'pushers': [ 'pushers': [
{ {
'pushkey': 'Xp/MzCt8/9DcSNE9cuiaoT5Ac55job3TdLSSmtmYl4A=', 'pushkey': 'Xp/MzCt8/9DcSNE9cuiaoT5Ac55job3TdLSSmtmYl4A=',
@ -1237,7 +1237,7 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/publicRooms?limit=10&since=1234&server=example.com': '/client/v3/publicRooms?limit=10&since=1234&server=example.com':
(var req) => { (var req) => {
'chunk': [ 'chunk': [
{ {
@ -1256,30 +1256,30 @@ class FakeMatrixApi extends MockClient {
'prev_batch': 'p1902', 'prev_batch': 'p1902',
'total_room_count_estimate': 115 'total_room_count_estimate': 115
}, },
'/client/r0/room/!localpart%3Aexample.com/aliases': (var req) => { '/client/v3/room/!localpart%3Aexample.com/aliases': (var req) => {
'aliases': [ 'aliases': [
'#somewhere:example.com', '#somewhere:example.com',
'#another:example.com', '#another:example.com',
'#hat_trick:example.com' '#hat_trick:example.com'
] ]
}, },
'/client/r0/joined_rooms': (var req) => { '/client/v3/joined_rooms': (var req) => {
'joined_rooms': ['!foo:example.com'] 'joined_rooms': ['!foo:example.com']
}, },
'/client/r0/directory/list/room/!localpart%3Aexample.com': (var req) => '/client/v3/directory/list/room/!localpart%3Aexample.com': (var req) =>
{'visibility': 'public'}, {'visibility': 'public'},
'/client/r0/rooms/1/state/m.room.member/@alice:example.com': (var req) => '/client/v3/rooms/1/state/m.room.member/@alice:example.com': (var req) =>
{'displayname': 'Alice'}, {'displayname': 'Alice'},
'/client/r0/profile/%40getme%3Aexample.com': (var req) => { '/client/v3/profile/%40getme%3Aexample.com': (var req) => {
'avatar_url': 'mxc://test', 'avatar_url': 'mxc://test',
'displayname': 'You got me', 'displayname': 'You got me',
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.member/@getme%3Aexample.com': '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.member/@getme%3Aexample.com':
(var req) => { (var req) => {
'avatar_url': 'mxc://test', 'avatar_url': 'mxc://test',
'displayname': 'You got me', 'displayname': 'You got me',
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/state': (var req) => [ '/client/v3/rooms/!localpart%3Aserver.abc/state': (var req) => [
{ {
'content': {'join_rule': 'public'}, 'content': {'join_rule': 'public'},
'type': 'm.room.join_rules', 'type': 'm.room.join_rules',
@ -1344,12 +1344,12 @@ class FakeMatrixApi extends MockClient {
'state_key': '' 'state_key': ''
} }
], ],
'/client/r0/rooms/!localpart:server.abc/state/m.room.member/@getme:example.com': '/client/v3/rooms/!localpart:server.abc/state/m.room.member/@getme:example.com':
(var req) => { (var req) => {
'avatar_url': 'mxc://test', 'avatar_url': 'mxc://test',
'displayname': 'You got me', 'displayname': 'You got me',
}, },
'/client/r0/rooms/!localpart:server.abc/event/1234': (var req) => { '/client/v3/rooms/!localpart:server.abc/event/1234': (var req) => {
'content': { 'content': {
'body': 'This is an example text message', 'body': 'This is an example text message',
'msgtype': 'm.text', 'msgtype': 'm.text',
@ -1363,7 +1363,7 @@ class FakeMatrixApi extends MockClient {
'origin_server_ts': 1432735824653, 'origin_server_ts': 1432735824653,
'unsigned': {'age': 1234} 'unsigned': {'age': 1234}
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/event/1234': (var req) => { '/client/v3/rooms/!localpart%3Aserver.abc/event/1234': (var req) => {
'content': { 'content': {
'body': 'This is an example text message', 'body': 'This is an example text message',
'msgtype': 'm.text', 'msgtype': 'm.text',
@ -1377,11 +1377,11 @@ class FakeMatrixApi extends MockClient {
'origin_server_ts': 1432735824653, 'origin_server_ts': 1432735824653,
'unsigned': {'age': 1234} 'unsigned': {'age': 1234}
}, },
'/client/r0/rooms/!1234%3Aexample.com/event/not_found': (var req) => { '/client/v3/rooms/!1234%3Aexample.com/event/not_found': (var req) => {
'errcode': 'M_NOT_FOUND', 'errcode': 'M_NOT_FOUND',
'error': 'Event not found', 'error': 'Event not found',
}, },
'/client/r0/rooms/!1234%3Aexample.com/event/unencrypted_event': '/client/v3/rooms/!1234%3Aexample.com/event/unencrypted_event':
(var req) => { (var req) => {
'content': { 'content': {
'body': 'This is an example text message', 'body': 'This is an example text message',
@ -1396,7 +1396,7 @@ class FakeMatrixApi extends MockClient {
'origin_server_ts': 1432735824653, 'origin_server_ts': 1432735824653,
'unsigned': {'age': 1234} 'unsigned': {'age': 1234}
}, },
'/client/r0/rooms/!1234%3Aexample.com/event/encrypted_event': (var req) => '/client/v3/rooms/!1234%3Aexample.com/event/encrypted_event': (var req) =>
{ {
'content': { 'content': {
'algorithm': 'm.megolm.v1.aes-sha2', 'algorithm': 'm.megolm.v1.aes-sha2',
@ -1412,37 +1412,33 @@ class FakeMatrixApi extends MockClient {
'origin_server_ts': 1432735824653, 'origin_server_ts': 1432735824653,
'unsigned': {'age': 1234} 'unsigned': {'age': 1234}
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/messages?from=1234&dir=b&to=1234&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D': '/client/v3/rooms/!localpart%3Aserver.abc/messages?from=1234&dir=b&to=1234&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
(var req) => messagesResponsePast, (var req) => messagesResponsePast,
'/client/r0/rooms/!localpart%3Aserver.abc/messages?from=&dir=b&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D': '/client/v3/rooms/!localpart%3Aserver.abc/messages?from=&dir=b&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
(var req) => messagesResponsePast, (var req) => messagesResponsePast,
'/client/r0/rooms/!1234%3Aexample.com/messages?from=1234&dir=b&limit=30&filter=%7B%22lazy_load_members%22%3Atrue%7D': '/client/v3/rooms/!1234%3Aexample.com/messages?from=1234&dir=b&limit=30&filter=%7B%22lazy_load_members%22%3Atrue%7D':
(var req) => messagesResponsePast, (var req) => messagesResponsePast,
'/client/r0/rooms/!localpart%3Aserver.abc/messages?from=t456&dir=f&to=1234&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D': '/client/v3/rooms/!localpart%3Aserver.abc/messages?from=t456&dir=f&to=1234&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
(var req) => messagesResponseFuture, (var req) => messagesResponseFuture,
'/client/r0/rooms/!1234%3Aexample.com/messages?from=t456&dir=f&limit=30&filter=%7B%22lazy_load_members%22%3Atrue%7D': '/client/v3/rooms/!1234%3Aexample.com/messages?from=t456&dir=f&limit=30&filter=%7B%22lazy_load_members%22%3Atrue%7D':
(var req) => messagesResponseFuture, (var req) => messagesResponseFuture,
'/client/r0/rooms/!localpart%3Aserver.abc/messages?from=t789&dir=f&to=1234&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D': '/client/v3/rooms/!localpart%3Aserver.abc/messages?from=t789&dir=f&to=1234&limit=10&filter=%7B%22lazy_load_members%22%3Atrue%7D':
(var req) => messagesResponseFutureEnd, (var req) => messagesResponseFutureEnd,
'/client/r0/rooms/!1234%3Aexample.com/messages?from=t789&dir=f&limit=30&filter=%7B%22lazy_load_members%22%3Atrue%7D': '/client/v3/rooms/!1234%3Aexample.com/messages?from=t789&dir=f&limit=30&filter=%7B%22lazy_load_members%22%3Atrue%7D':
(var req) => messagesResponseFutureEnd, (var req) => messagesResponseFutureEnd,
'/client/versions': (var req) => { '/client/versions': (var req) => {
'versions': [ 'versions': [
'r0.0.1', 'v1.1',
'r0.1.0', 'v1.2',
'r0.2.0',
'r0.3.0',
'r0.4.0',
'r0.5.0'
], ],
'unstable_features': {'m.lazy_load_members': true}, 'unstable_features': {'m.lazy_load_members': true},
}, },
'/client/r0/login': (var req) => { '/client/v3/login': (var req) => {
'flows': [ 'flows': [
{'type': 'm.login.password'} {'type': 'm.login.password'}
] ]
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/joined_members': (var req) => { '/client/v3/rooms/!localpart%3Aserver.abc/joined_members': (var req) => {
'joined': { 'joined': {
'@bar:example.com': { '@bar:example.com': {
'display_name': 'Bar', 'display_name': 'Bar',
@ -1450,7 +1446,7 @@ class FakeMatrixApi extends MockClient {
} }
} }
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/members?at=1234&membership=join&not_membership=leave': '/client/v3/rooms/!localpart%3Aserver.abc/members?at=1234&membership=join&not_membership=leave':
(var req) => { (var req) => {
'chunk': [ 'chunk': [
{ {
@ -1469,7 +1465,7 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/rooms/!696r7674:example.com/members': (var req) => { '/client/v3/rooms/!696r7674:example.com/members': (var req) => {
'chunk': [ 'chunk': [
{ {
'content': { 'content': {
@ -1487,7 +1483,7 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/rooms/!726s6s6q:example.com/members': (var req) => { '/client/v3/rooms/!726s6s6q:example.com/members': (var req) => {
'chunk': [ 'chunk': [
{ {
'content': { 'content': {
@ -1505,7 +1501,7 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/members': (var req) => { '/client/v3/rooms/!localpart%3Aserver.abc/members': (var req) => {
'chunk': [ 'chunk': [
{ {
'content': { 'content': {
@ -1523,20 +1519,20 @@ class FakeMatrixApi extends MockClient {
} }
] ]
}, },
'/client/r0/pushrules/global/content/nocake': (var req) => { '/client/v3/pushrules/global/content/nocake': (var req) => {
'actions': ['dont_notify'], 'actions': ['dont_notify'],
'pattern': 'cake*lie', 'pattern': 'cake*lie',
'rule_id': 'nocake', 'rule_id': 'nocake',
'enabled': true, 'enabled': true,
'default': false 'default': false
}, },
'/client/r0/pushrules/global/content/nocake/enabled': (var req) => { '/client/v3/pushrules/global/content/nocake/enabled': (var req) => {
'enabled': true, 'enabled': true,
}, },
'/client/r0/pushrules/global/content/nocake/actions': (var req) => { '/client/v3/pushrules/global/content/nocake/actions': (var req) => {
'actions': ['notify'] 'actions': ['notify']
}, },
'/client/r0/pushrules': (var req) => { '/client/v3/pushrules': (var req) => {
'global': { 'global': {
'content': [ 'content': [
{ {
@ -1681,14 +1677,14 @@ class FakeMatrixApi extends MockClient {
] ]
} }
}, },
'/client/r0/sync?filter=%7B%22room%22%3A%7B%22include_leave%22%3Atrue%2C%22timeline%22%3A%7B%22limit%22%3A10%7D%7D%7D&timeout=0': '/client/v3/sync?filter=%7B%22room%22%3A%7B%22include_leave%22%3Atrue%2C%22timeline%22%3A%7B%22limit%22%3A10%7D%7D%7D&timeout=0':
(var req) => archiveSyncResponse, (var req) => archiveSyncResponse,
'/client/r0/sync?filter=1234': (var req) => syncResponse, '/client/v3/sync?filter=1234': (var req) => syncResponse,
'/client/r0/sync?filter=1234&since=1234&full_state=false&set_presence=unavailable&timeout=15': '/client/v3/sync?filter=1234&since=1234&full_state=false&set_presence=unavailable&timeout=15':
(var req) => syncResponse, (var req) => syncResponse,
'/client/r0/register/available?username=testuser': (var req) => '/client/v3/register/available?username=testuser': (var req) =>
{'available': true}, {'available': true},
'/client/r0/user/${Uri.encodeComponent('@test:fakeServer.notExisting')}/filter/1234': '/client/v3/user/${Uri.encodeComponent('@test:fakeServer.notExisting')}/filter/1234':
(var req) => { (var req) => {
'room': { 'room': {
'state': { 'state': {
@ -1719,7 +1715,7 @@ class FakeMatrixApi extends MockClient {
'event_format': 'client', 'event_format': 'client',
'event_fields': ['type', 'content', 'sender'] 'event_fields': ['type', 'content', 'sender']
}, },
'/client/unstable/room_keys/version': (var req) => { '/client/v3/room_keys/version': (var req) => {
'algorithm': AlgorithmTypes.megolmBackupV1Curve25519AesSha2, 'algorithm': AlgorithmTypes.megolmBackupV1Curve25519AesSha2,
'auth_data': { 'auth_data': {
'public_key': 'GXYaxqhNhUK28zUdxOmEsFRguz+PzBsDlTLlF0O0RkM', 'public_key': 'GXYaxqhNhUK28zUdxOmEsFRguz+PzBsDlTLlF0O0RkM',
@ -1729,7 +1725,7 @@ class FakeMatrixApi extends MockClient {
'etag': '0', 'etag': '0',
'version': '5', 'version': '5',
}, },
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5': '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
(var req) => { (var req) => {
'first_message_index': 0, 'first_message_index': 0,
'forwarded_count': 0, 'forwarded_count': 0,
@ -1741,7 +1737,7 @@ class FakeMatrixApi extends MockClient {
'mac': 'QzKV/fgAs4U', 'mac': 'QzKV/fgAs4U',
}, },
}, },
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5': '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
(var req) => { (var req) => {
'sessions': { 'sessions': {
'ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU': { 'ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU': {
@ -1758,7 +1754,7 @@ class FakeMatrixApi extends MockClient {
}, },
}, },
}, },
'/client/unstable/room_keys/keys?version=5': (var req) => { '/client/v3/room_keys/keys?version=5': (var req) => {
'rooms': { 'rooms': {
'!726s6s6q:example.com': { '!726s6s6q:example.com': {
'sessions': { 'sessions': {
@ -1780,16 +1776,16 @@ class FakeMatrixApi extends MockClient {
}, },
}, },
'POST': { 'POST': {
'/client/r0/delete_devices': (var req) => {}, '/client/v3/delete_devices': (var req) => {},
'/client/r0/account/3pid/add': (var req) => {}, '/client/v3/account/3pid/add': (var req) => {},
'/client/r0/account/3pid/bind': (var req) => {}, '/client/v3/account/3pid/bind': (var req) => {},
'/client/r0/account/3pid/delete': (var req) => '/client/v3/account/3pid/delete': (var req) =>
{'id_server_unbind_result': 'success'}, {'id_server_unbind_result': 'success'},
'/client/r0/account/3pid/unbind': (var req) => '/client/v3/account/3pid/unbind': (var req) =>
{'id_server_unbind_result': 'success'}, {'id_server_unbind_result': 'success'},
'/client/r0/account/password': (var req) => {}, '/client/v3/account/password': (var req) => {},
'/client/r0/rooms/1234/report/1234': (var req) => {}, '/client/v3/rooms/1234/report/1234': (var req) => {},
'/client/r0/search': (var req) => { '/client/v3/search': (var req) => {
'search_categories': { 'search_categories': {
'room_events': { 'room_events': {
'groups': { 'groups': {
@ -1827,9 +1823,9 @@ class FakeMatrixApi extends MockClient {
} }
} }
}, },
'/client/r0/account/deactivate': (var req) => '/client/v3/account/deactivate': (var req) =>
{'id_server_unbind_result': 'success'}, {'id_server_unbind_result': 'success'},
'/client/r0/user_directory/search': (var req) => { '/client/v3/user_directory/search': (var req) => {
'results': [ 'results': [
{ {
'user_id': '@foo:bar.com', 'user_id': '@foo:bar.com',
@ -1839,39 +1835,39 @@ class FakeMatrixApi extends MockClient {
], ],
'limited': false 'limited': false
}, },
'/client/r0/register/email/requestToken': (var req) => { '/client/v3/register/email/requestToken': (var req) => {
'sid': '123abc', 'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken' 'submit_url': 'https://example.org/path/to/submitToken'
}, },
'/client/r0/register/msisdn/requestToken': (var req) => { '/client/v3/register/msisdn/requestToken': (var req) => {
'sid': '123abc', 'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken' 'submit_url': 'https://example.org/path/to/submitToken'
}, },
'/client/r0/account/password/email/requestToken': (var req) => { '/client/v3/account/password/email/requestToken': (var req) => {
'sid': '123abc', 'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken' 'submit_url': 'https://example.org/path/to/submitToken'
}, },
'/client/r0/account/password/msisdn/requestToken': (var req) => { '/client/v3/account/password/msisdn/requestToken': (var req) => {
'sid': '123abc', 'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken' 'submit_url': 'https://example.org/path/to/submitToken'
}, },
'/client/r0/account/3pid/email/requestToken': (var req) => { '/client/v3/account/3pid/email/requestToken': (var req) => {
'sid': '123abc', 'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken' 'submit_url': 'https://example.org/path/to/submitToken'
}, },
'/client/r0/account/3pid/msisdn/requestToken': (var req) => { '/client/v3/account/3pid/msisdn/requestToken': (var req) => {
'sid': '123abc', 'sid': '123abc',
'submit_url': 'https://example.org/path/to/submitToken' 'submit_url': 'https://example.org/path/to/submitToken'
}, },
'/client/r0/rooms/!localpart%3Aexample.com/receipt/m.read/%241234%3Aexample.com': '/client/v3/rooms/!localpart%3Aexample.com/receipt/m.read/%241234%3Aexample.com':
(var req) => {}, (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/read_markers': (var req) => {}, '/client/v3/rooms/!localpart%3Aexample.com/read_markers': (var req) => {},
'/client/r0/rooms/!1234%3Aexample.com/read_markers': (var req) => {}, '/client/v3/rooms/!1234%3Aexample.com/read_markers': (var req) => {},
'/client/r0/user/${Uri.encodeComponent('@othertest:fakeServer.notExisting')}/filter': '/client/v3/user/${Uri.encodeComponent('@othertest:fakeServer.notExisting')}/filter':
(var req) => {'filter_id': '1234'}, (var req) => {'filter_id': '1234'},
'/client/r0/user/${Uri.encodeComponent('@test:fakeServer.notExisting')}/filter': '/client/v3/user/${Uri.encodeComponent('@test:fakeServer.notExisting')}/filter':
(var req) => {'filter_id': '1234'}, (var req) => {'filter_id': '1234'},
'/client/r0/publicRooms?server=example.com': (var req) => { '/client/v3/publicRooms?server=example.com': (var req) => {
'chunk': [ 'chunk': [
{ {
'aliases': ['#murrays:cheese.bar'], 'aliases': ['#murrays:cheese.bar'],
@ -1889,7 +1885,7 @@ class FakeMatrixApi extends MockClient {
'prev_batch': 'p1902', 'prev_batch': 'p1902',
'total_room_count_estimate': 115 'total_room_count_estimate': 115
}, },
'/client/r0/keys/claim': (var req) => { '/client/v3/keys/claim': (var req) => {
'failures': {}, 'failures': {},
'one_time_keys': { 'one_time_keys': {
if (decodeJson(req)['one_time_keys']['@alice:example.com'] != if (decodeJson(req)['one_time_keys']['@alice:example.com'] !=
@ -1925,32 +1921,32 @@ class FakeMatrixApi extends MockClient {
}, },
} }
}, },
'/client/r0/rooms/!localpart%3Aexample.com/invite': (var req) => {}, '/client/v3/rooms/!localpart%3Aexample.com/invite': (var req) => {},
'/client/r0/rooms/!1234%3AfakeServer.notExisting/invite': (var req) => {}, '/client/v3/rooms/!1234%3AfakeServer.notExisting/invite': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/leave': (var req) => {}, '/client/v3/rooms/!localpart%3Aexample.com/leave': (var req) => {},
'/client/r0/rooms/!1234%3AfakeServer.notExisting/leave': (var req) => {}, '/client/v3/rooms/!1234%3AfakeServer.notExisting/leave': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/forget': (var req) => {}, '/client/v3/rooms/!localpart%3Aexample.com/forget': (var req) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/kick': (var req) => {}, '/client/v3/rooms/!localpart%3Aserver.abc/kick': (var req) => {},
'/client/r0/rooms/!1234%3AfakeServer.notExisting/kick': (var req) => {}, '/client/v3/rooms/!1234%3AfakeServer.notExisting/kick': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/kick': (var req) => {}, '/client/v3/rooms/!localpart%3Aexample.com/kick': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/ban': (var req) => {}, '/client/v3/rooms/!localpart%3Aexample.com/ban': (var req) => {},
'/client/r0/rooms/!1234%3AfakeServer.notExisting/ban': (var req) => {}, '/client/v3/rooms/!1234%3AfakeServer.notExisting/ban': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/unban': (var req) => {}, '/client/v3/rooms/!localpart%3Aexample.com/unban': (var req) => {},
'/client/r0/rooms/!1234%3AfakeServer.notExisting/unban': (var req) => {}, '/client/v3/rooms/!1234%3AfakeServer.notExisting/unban': (var req) => {},
'/client/r0/rooms/!localpart%3Aexample.com/join': (var req) => '/client/v3/rooms/!localpart%3Aexample.com/join': (var req) =>
{'room_id': '!localpart:example.com'}, {'room_id': '!localpart:example.com'},
'/client/r0/join/!localpart%3Aexample.com?server_name=example.com&server_name=example.abc': '/client/v3/join/!localpart%3Aexample.com?server_name=example.com&server_name=example.abc':
(var req) => {'room_id': '!localpart:example.com'}, (var req) => {'room_id': '!localpart:example.com'},
'/client/r0/join/!newroom%3Aexample.com': (var req) => '/client/v3/join/!newroom%3Aexample.com': (var req) =>
{'room_id': '!newroom%3A:example.com'}, {'room_id': '!newroom%3A:example.com'},
'/client/r0/keys/upload': (var req) => { '/client/v3/keys/upload': (var req) => {
'one_time_key_counts': { 'one_time_key_counts': {
'curve25519': 10, 'curve25519': 10,
'signed_curve25519': 'signed_curve25519':
decodeJson(req)['one_time_keys']?.keys?.length ?? 0, decodeJson(req)['one_time_keys']?.keys?.length ?? 0,
} }
}, },
'/client/r0/keys/query': (var req) => { '/client/v3/keys/query': (var req) => {
'failures': {}, 'failures': {},
'device_keys': { 'device_keys': {
'@alice:example.com': { '@alice:example.com': {
@ -2133,30 +2129,30 @@ class FakeMatrixApi extends MockClient {
}, },
}, },
}, },
'/client/r0/register': (var req) => { '/client/v3/register': (var req) => {
'user_id': '@testuser:example.com', 'user_id': '@testuser:example.com',
'access_token': '1234', 'access_token': '1234',
'device_id': 'ABCD', 'device_id': 'ABCD',
}, },
'/client/r0/register?kind=user': (var req) => '/client/v3/register?kind=user': (var req) =>
{'user_id': '@testuser:example.com'}, {'user_id': '@testuser:example.com'},
'/client/r0/register?kind=guest': (var req) => '/client/v3/register?kind=guest': (var req) =>
{'user_id': '@testuser:example.com'}, {'user_id': '@testuser:example.com'},
'/client/r0/rooms/1234/upgrade': (var req) => {}, '/client/v3/rooms/1234/upgrade': (var req) => {},
'/client/r0/user/1234/openid/request_token': (var req) => { '/client/v3/user/1234/openid/request_token': (var req) => {
'access_token': 'SomeT0kenHere', 'access_token': 'SomeT0kenHere',
'token_type': 'Bearer', 'token_type': 'Bearer',
'matrix_server_name': 'example.com', 'matrix_server_name': 'example.com',
'expires_in': 3600.0 'expires_in': 3600.0
}, },
'/client/r0/user/@test:fakeServer.notExisting/openid/request_token': '/client/v3/user/@test:fakeServer.notExisting/openid/request_token':
(var req) => { (var req) => {
'access_token': 'SomeT0kenHere', 'access_token': 'SomeT0kenHere',
'token_type': 'Bearer', 'token_type': 'Bearer',
'matrix_server_name': 'example.com', 'matrix_server_name': 'example.com',
'expires_in': 3600 'expires_in': 3600
}, },
'/client/r0/login': (var req) => { '/client/v3/login': (var req) => {
'user_id': '@test:fakeServer.notExisting', 'user_id': '@test:fakeServer.notExisting',
'access_token': 'abc123', 'access_token': 'abc123',
'device_id': 'GHTYAJCE', 'device_id': 'GHTYAJCE',
@ -2165,21 +2161,21 @@ class FakeMatrixApi extends MockClient {
'm.identity_server': {'base_url': 'https://id.example.org'} 'm.identity_server': {'base_url': 'https://id.example.org'}
} }
}, },
'/media/r0/upload?filename=file.jpeg': (var req) => '/media/v3/upload?filename=file.jpeg': (var req) =>
{'content_uri': 'mxc://example.com/AQwafuaFswefuhsfAFAgsw'}, {'content_uri': 'mxc://example.com/AQwafuaFswefuhsfAFAgsw'},
'/client/r0/logout': (var reqI) => {}, '/client/v3/logout': (var reqI) => {},
'/client/r0/pushers/set': (var reqI) => {}, '/client/v3/pushers/set': (var reqI) => {},
'/client/r0/join/1234': (var reqI) => {'room_id': '1234'}, '/client/v3/join/1234': (var reqI) => {'room_id': '1234'},
'/client/r0/logout/all': (var reqI) => {}, '/client/v3/logout/all': (var reqI) => {},
'/client/r0/createRoom': (var reqI) => { '/client/v3/createRoom': (var reqI) => {
'room_id': '!1234:fakeServer.notExisting', 'room_id': '!1234:fakeServer.notExisting',
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/read_markers': (var reqI) => {}, '/client/v3/rooms/!localpart%3Aserver.abc/read_markers': (var reqI) => {},
'/client/r0/rooms/!localpart:server.abc/kick': (var reqI) => {}, '/client/v3/rooms/!localpart:server.abc/kick': (var reqI) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/ban': (var reqI) => {}, '/client/v3/rooms/!localpart%3Aserver.abc/ban': (var reqI) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/unban': (var reqI) => {}, '/client/v3/rooms/!localpart%3Aserver.abc/unban': (var reqI) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/invite': (var reqI) => {}, '/client/v3/rooms/!localpart%3Aserver.abc/invite': (var reqI) => {},
'/client/unstable/keys/device_signing/upload': (var reqI) { '/client/v3/keys/device_signing/upload': (var reqI) {
if (client != null) { if (client != null) {
final jsonBody = decodeJson(reqI); final jsonBody = decodeJson(reqI);
for (final keyType in { for (final keyType in {
@ -2201,163 +2197,163 @@ class FakeMatrixApi extends MockClient {
} }
return {}; return {};
}, },
'/client/r0/keys/signatures/upload': (var reqI) => {'failures': {}}, '/client/v3/keys/signatures/upload': (var reqI) => {'failures': {}},
'/client/unstable/room_keys/version': (var reqI) => {'version': '5'}, '/client/v3/room_keys/version': (var reqI) => {'version': '5'},
}, },
'PUT': { 'PUT': {
'/client/r0/user/${Uri.encodeComponent('@alice:example.com')}/account_data/io.element.recent_emoji}': '/client/v3/user/${Uri.encodeComponent('@alice:example.com')}/account_data/io.element.recent_emoji}':
(var req) => {}, (var req) => {},
'/client/r0/user/%40test%3AfakeServer.notExisting/account_data/io.element.recent_emoji': '/client/v3/user/%40test%3AfakeServer.notExisting/account_data/io.element.recent_emoji':
(var req) => {}, (var req) => {},
'/client/r0/user/%40test%3AfakeServer.notExisting/account_data/m.ignored_user_list': '/client/v3/user/%40test%3AfakeServer.notExisting/account_data/m.ignored_user_list':
(var req) => {}, (var req) => {},
'/client/r0/presence/${Uri.encodeComponent('@alice:example.com')}/status': '/client/v3/presence/${Uri.encodeComponent('@alice:example.com')}/status':
(var req) => {}, (var req) => {},
'/client/r0/pushrules/global/content/nocake/enabled': (var req) => {}, '/client/v3/pushrules/global/content/nocake/enabled': (var req) => {},
'/client/r0/pushrules/global/content/nocake/actions': (var req) => {}, '/client/v3/pushrules/global/content/nocake/actions': (var req) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.history_visibility': '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.history_visibility':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.join_rules': '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.join_rules':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.guest_access': '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.guest_access':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.invite/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.invite/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.answer/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.answer/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.select_answer/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.select_answer/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.reject/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.reject/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.negotiate/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.negotiate/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.candidates/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.candidates/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.hangup/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.hangup/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.replaces/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.replaces/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.asserted_identity/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.asserted_identity/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.call.sdp_stream_metadata_changed/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.call.sdp_stream_metadata_changed/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/org.matrix.call.sdp_stream_metadata_changed/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/org.matrix.call.sdp_stream_metadata_changed/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/org.matrix.call.asserted_identity/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/org.matrix.call.asserted_identity/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/rooms/!1234%3Aexample.com/redact/1143273582443PhrSn%3Aexample.org/1234': '/client/v3/rooms/!1234%3Aexample.com/redact/1143273582443PhrSn%3Aexample.org/1234':
(var req) => {'event_id': '1234'}, (var req) => {'event_id': '1234'},
'/client/r0/pushrules/global/room/!localpart%3Aserver.abc': (var req) => '/client/v3/pushrules/global/room/!localpart%3Aserver.abc': (var req) =>
{}, {},
'/client/r0/pushrules/global/override/.m.rule.master/enabled': '/client/v3/pushrules/global/override/.m.rule.master/enabled':
(var req) => {}, (var req) => {},
'/client/r0/pushrules/global/content/nocake?before=1&after=2': '/client/v3/pushrules/global/content/nocake?before=1&after=2':
(var req) => {}, (var req) => {},
'/client/r0/devices/QBUAZIFURK': (var req) => {}, '/client/v3/devices/QBUAZIFURK': (var req) => {},
'/client/r0/directory/room/%23testalias%3Aexample.com': (var reqI) => {}, '/client/v3/directory/room/%23testalias%3Aexample.com': (var reqI) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.room.message/testtxid': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.room.message/testtxid':
(var reqI) => { (var reqI) => {
'event_id': '\$event${FakeMatrixApi.eventCounter++}', 'event_id': '\$event${FakeMatrixApi.eventCounter++}',
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.reaction/testtxid': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.reaction/testtxid':
(var reqI) => { (var reqI) => {
'event_id': '\$event${FakeMatrixApi.eventCounter++}', 'event_id': '\$event${FakeMatrixApi.eventCounter++}',
}, },
'/client/r0/rooms/!localpart%3Aexample.com/typing/%40alice%3Aexample.com': '/client/v3/rooms/!localpart%3Aexample.com/typing/%40alice%3Aexample.com':
(var req) => {}, (var req) => {},
'/client/r0/rooms/!1234%3Aexample.com/send/m.room.message/1234': '/client/v3/rooms/!1234%3Aexample.com/send/m.room.message/1234':
(var reqI) => { (var reqI) => {
'event_id': '\$event${FakeMatrixApi.eventCounter++}', 'event_id': '\$event${FakeMatrixApi.eventCounter++}',
}, },
'/client/r0/rooms/!1234%3Aexample.com/send/m.room.message/newresend': '/client/v3/rooms/!1234%3Aexample.com/send/m.room.message/newresend':
(var reqI) => { (var reqI) => {
'event_id': '\$event${FakeMatrixApi.eventCounter++}', 'event_id': '\$event${FakeMatrixApi.eventCounter++}',
}, },
'/client/r0/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/tags/m.favourite': '/client/v3/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/tags/m.favourite':
(var req) => {}, (var req) => {},
'/client/r0/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags/testtag': '/client/v3/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags/testtag':
(var req) => {}, (var req) => {},
'/client/r0/user/%40alice%3Aexample.com/account_data/test.account.data': '/client/v3/user/%40alice%3Aexample.com/account_data/test.account.data':
(var req) => {}, (var req) => {},
'/client/r0/user/%40test%3AfakeServer.notExisting/account_data/best%20animal': '/client/v3/user/%40test%3AfakeServer.notExisting/account_data/best%20animal':
(var req) => {}, (var req) => {},
'/client/r0/user/%40alice%3Aexample.com/rooms/1234/account_data/test.account.data': '/client/v3/user/%40alice%3Aexample.com/rooms/1234/account_data/test.account.data':
(var req) => {}, (var req) => {},
'/client/r0/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/account_data/com.famedly.marked_unread': '/client/v3/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/account_data/com.famedly.marked_unread':
(var req) => {}, (var req) => {},
'/client/r0/user/%40test%3AfakeServer.notExisting/account_data/m.direct': '/client/v3/user/%40test%3AfakeServer.notExisting/account_data/m.direct':
(var req) => {}, (var req) => {},
'/client/r0/user/%40othertest%3AfakeServer.notExisting/account_data/m.direct': '/client/v3/user/%40othertest%3AfakeServer.notExisting/account_data/m.direct':
(var req) => {}, (var req) => {},
'/client/r0/profile/%40alice%3Aexample.com/displayname': (var reqI) => {}, '/client/v3/profile/%40alice%3Aexample.com/displayname': (var reqI) => {},
'/client/r0/profile/%40alice%3Aexample.com/avatar_url': (var reqI) => {}, '/client/v3/profile/%40alice%3Aexample.com/avatar_url': (var reqI) => {},
'/client/r0/profile/%40test%3AfakeServer.notExisting/avatar_url': '/client/v3/profile/%40test%3AfakeServer.notExisting/avatar_url':
(var reqI) => {}, (var reqI) => {},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.encryption': '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.encryption':
(var reqI) => {'event_id': 'YUwRidLecu:example.com'}, (var reqI) => {'event_id': 'YUwRidLecu:example.com'},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.avatar': '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.avatar':
(var reqI) => {'event_id': 'YUwRidLecu:example.com'}, (var reqI) => {'event_id': 'YUwRidLecu:example.com'},
'/client/r0/rooms/!localpart%3Aserver.abc/send/m.room.message/1234': '/client/v3/rooms/!localpart%3Aserver.abc/send/m.room.message/1234':
(var reqI) => {'event_id': 'YUwRidLecu:example.com'}, (var reqI) => {'event_id': 'YUwRidLecu:example.com'},
'/client/r0/rooms/!localpart%3Aserver.abc/redact/1234/1234': (var reqI) => '/client/v3/rooms/!localpart%3Aserver.abc/redact/1234/1234': (var reqI) =>
{'event_id': 'YUwRidLecu:example.com'}, {'event_id': 'YUwRidLecu:example.com'},
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.name': '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.name':
(var reqI) => { (var reqI) => {
'event_id': '42', 'event_id': '42',
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.topic': '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.topic':
(var reqI) => { (var reqI) => {
'event_id': '42', 'event_id': '42',
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.pinned_events': '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.pinned_events':
(var reqI) => { (var reqI) => {
'event_id': '42', 'event_id': '42',
}, },
'/client/r0/rooms/!localpart%3Aserver.abc/state/m.room.power_levels': '/client/v3/rooms/!localpart%3Aserver.abc/state/m.room.power_levels':
(var reqI) => { (var reqI) => {
'event_id': '42', 'event_id': '42',
}, },
'/client/r0/directory/list/room/!localpart%3Aexample.com': (var req) => '/client/v3/directory/list/room/!localpart%3Aexample.com': (var req) =>
{}, {},
'/client/unstable/room_keys/version/5': (var req) => {}, '/client/v3/room_keys/version/5': (var req) => {},
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5': '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
(var req) => { (var req) => {
'etag': 'asdf', 'etag': 'asdf',
'count': 1, 'count': 1,
}, },
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5': '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
(var req) => { (var req) => {
'etag': 'asdf', 'etag': 'asdf',
'count': 1, 'count': 1,
}, },
'/client/unstable/room_keys/keys?version=5': (var req) => { '/client/v3/room_keys/keys?version=5': (var req) => {
'etag': 'asdf', 'etag': 'asdf',
'count': 1, 'count': 1,
}, },
}, },
'DELETE': { 'DELETE': {
'/unknown/token': (var req) => {'errcode': 'M_UNKNOWN_TOKEN'}, '/unknown/token': (var req) => {'errcode': 'M_UNKNOWN_TOKEN'},
'/client/r0/devices/QBUAZIFURK': (var req) => {}, '/client/v3/devices/QBUAZIFURK': (var req) => {},
'/client/r0/directory/room/%23testalias%3Aexample.com': (var reqI) => {}, '/client/v3/directory/room/%23testalias%3Aexample.com': (var reqI) => {},
'/client/r0/pushrules/global/content/nocake': (var req) => {}, '/client/v3/pushrules/global/content/nocake': (var req) => {},
'/client/r0/pushrules/global/override/!localpart%3Aserver.abc': '/client/v3/pushrules/global/override/!localpart%3Aserver.abc':
(var req) => {}, (var req) => {},
'/client/r0/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/tags/m.favourite': '/client/v3/user/%40test%3AfakeServer.notExisting/rooms/!localpart%3Aserver.abc/tags/m.favourite':
(var req) => {}, (var req) => {},
'/client/r0/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags/testtag': '/client/v3/user/%40alice%3Aexample.com/rooms/!localpart%3Aexample.com/tags/testtag':
(var req) => {}, (var req) => {},
'/client/unstable/room_keys/version/5': (var req) => {}, '/client/v3/room_keys/version/5': (var req) => {},
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5': '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}/${Uri.encodeComponent('ciM/JWTPrmiWPPZNkRLDPQYf9AW/I46bxyLSr+Bx5oU')}?version=5':
(var req) => { (var req) => {
'etag': 'asdf', 'etag': 'asdf',
'count': 1, 'count': 1,
}, },
'/client/unstable/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5': '/client/v3/room_keys/keys/${Uri.encodeComponent('!726s6s6q:example.com')}?version=5':
(var req) => { (var req) => {
'etag': 'asdf', 'etag': 'asdf',
'count': 1, 'count': 1,
}, },
'/client/unstable/room_keys/keys?version=5': (var req) => { '/client/v3/room_keys/keys?version=5': (var req) => {
'etag': 'asdf', 'etag': 'asdf',
'count': 1, 'count': 1,
}, },

View File

@ -35,9 +35,9 @@ void main() {
expect(content.isScheme('mxc'), true); expect(content.isScheme('mxc'), true);
expect(content.getDownloadLink(client).toString(), expect(content.getDownloadLink(client).toString(),
'${client.homeserver.toString()}/_matrix/media/r0/download/exampleserver.abc/abcdefghijklmn'); '${client.homeserver.toString()}/_matrix/media/v3/download/exampleserver.abc/abcdefghijklmn');
expect(content.getThumbnail(client, width: 50, height: 50).toString(), expect(content.getThumbnail(client, width: 50, height: 50).toString(),
'${client.homeserver.toString()}/_matrix/media/r0/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=crop&animated=false'); '${client.homeserver.toString()}/_matrix/media/v3/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=crop&animated=false');
expect( expect(
content content
.getThumbnail(client, .getThumbnail(client,
@ -46,7 +46,7 @@ void main() {
method: ThumbnailMethod.scale, method: ThumbnailMethod.scale,
animated: true) animated: true)
.toString(), .toString(),
'${client.homeserver.toString()}/_matrix/media/r0/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=scale&animated=true'); '${client.homeserver.toString()}/_matrix/media/v3/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=scale&animated=true');
}); });
test('other port', () async { test('other port', () async {
final client = Client('testclient', httpClient: FakeMatrixApi()); final client = Client('testclient', httpClient: FakeMatrixApi());
@ -58,9 +58,9 @@ void main() {
expect(content.isScheme('mxc'), true); expect(content.isScheme('mxc'), true);
expect(content.getDownloadLink(client).toString(), expect(content.getDownloadLink(client).toString(),
'${client.homeserver.toString()}/_matrix/media/r0/download/exampleserver.abc/abcdefghijklmn'); '${client.homeserver.toString()}/_matrix/media/v3/download/exampleserver.abc/abcdefghijklmn');
expect(content.getThumbnail(client, width: 50, height: 50).toString(), expect(content.getThumbnail(client, width: 50, height: 50).toString(),
'${client.homeserver.toString()}/_matrix/media/r0/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=crop&animated=false'); '${client.homeserver.toString()}/_matrix/media/v3/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=crop&animated=false');
expect( expect(
content content
.getThumbnail(client, .getThumbnail(client,
@ -69,7 +69,7 @@ void main() {
method: ThumbnailMethod.scale, method: ThumbnailMethod.scale,
animated: true) animated: true)
.toString(), .toString(),
'https://fakeserver.notexisting:1337/_matrix/media/r0/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=scale&animated=true'); 'https://fakeserver.notexisting:1337/_matrix/media/v3/thumbnail/exampleserver.abc/abcdefghijklmn?width=50&height=50&method=scale&animated=true');
}); });
test('other remote port', () async { test('other remote port', () async {
final client = Client('testclient', httpClient: FakeMatrixApi()); final client = Client('testclient', httpClient: FakeMatrixApi());
@ -80,9 +80,9 @@ void main() {
expect(content.isScheme('mxc'), true); expect(content.isScheme('mxc'), true);
expect(content.getDownloadLink(client).toString(), expect(content.getDownloadLink(client).toString(),
'${client.homeserver.toString()}/_matrix/media/r0/download/exampleserver.abc:1234/abcdefghijklmn'); '${client.homeserver.toString()}/_matrix/media/v3/download/exampleserver.abc:1234/abcdefghijklmn');
expect(content.getThumbnail(client, width: 50, height: 50).toString(), expect(content.getThumbnail(client, width: 50, height: 50).toString(),
'${client.homeserver.toString()}/_matrix/media/r0/thumbnail/exampleserver.abc:1234/abcdefghijklmn?width=50&height=50&method=crop&animated=false'); '${client.homeserver.toString()}/_matrix/media/v3/thumbnail/exampleserver.abc:1234/abcdefghijklmn?width=50&height=50&method=crop&animated=false');
}); });
}); });
} }