1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-08-09 10:22:46 +03:00

Fix missing return when receiving an invitation without shared history (#2710)

This commit is contained in:
Faye Duxovni
2022-09-28 12:36:09 -04:00
committed by GitHub
parent 83fca5b57d
commit f410e71bfa
2 changed files with 72 additions and 0 deletions

View File

@@ -14,6 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import 'fake-indexeddb/auto';
import { Optional } from "matrix-events-sdk/lib/types";
import HttpBackend from "matrix-mock-request";
@@ -25,6 +27,8 @@ import {
RoomMemberEvent,
UNSTABLE_MSC2716_MARKER,
MatrixClient,
ClientEvent,
IndexedDBCryptoStore,
} from "../../src";
import * as utils from "../test-utils/test-utils";
import { TestClient } from "../TestClient";
@@ -1428,3 +1432,70 @@ describe("MatrixClient syncing", () => {
return utils.syncPromise(client, numSyncs);
}
});
describe("MatrixClient syncing (IndexedDB version)", () => {
const selfUserId = "@alice:localhost";
const selfAccessToken = "aseukfgwef";
const syncData = {
next_batch: "batch_token",
rooms: {},
presence: {},
};
it("should emit ClientEvent.Room when invited while using indexeddb crypto store", async () => {
const idbTestClient = new TestClient(
selfUserId,
"DEVICE",
selfAccessToken,
undefined,
{ cryptoStore: new IndexedDBCryptoStore(global.indexedDB, "tests") },
);
const idbHttpBackend = idbTestClient.httpBackend;
const idbClient = idbTestClient.client;
idbHttpBackend.when("GET", "/versions").respond(200, {});
idbHttpBackend.when("GET", "/pushrules").respond(200, {});
idbHttpBackend.when("POST", "/filter").respond(200, { filter_id: "a filter id" });
await idbClient.initCrypto();
const roomId = "!invite:example.org";
// First sync: an invite
const inviteSyncRoomSection = {
invite: {
[roomId]: {
invite_state: {
events: [{
type: "m.room.member",
state_key: selfUserId,
content: {
membership: "invite",
},
}],
},
},
},
};
idbHttpBackend.when("GET", "/sync").respond(200, {
...syncData,
rooms: inviteSyncRoomSection,
});
// First fire: an initial invite
let fires = 0;
idbClient.once(ClientEvent.Room, (room) => {
fires++;
expect(room.roomId).toBe(roomId);
});
// noinspection ES6MissingAwait
idbClient.startClient();
await idbHttpBackend.flushAllExpected();
expect(fires).toBe(1);
idbHttpBackend.verifyNoOutstandingExpectation();
idbClient.stopClient();
idbHttpBackend.stop();
});
});