mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-06-02 18:41:37 +03:00
Much of this transformation has been done automatically: * add expect import to each file * replace `not.to` with `toNot` * replace `to[Not]Be{Undefined,Null}` with equivalents * replace `jasmine.createSpy(...)` with `except.createSpy`, and `andCallFake` with `andCall` Also: * replace `jasmine.createSpyObj` with manual alternatives * replace `jasmine.Clock` with `lolex`
188 lines
6.7 KiB
JavaScript
188 lines
6.7 KiB
JavaScript
"use strict";
|
|
import 'source-map-support/register';
|
|
const sdk = require("../..");
|
|
const MatrixClient = sdk.MatrixClient;
|
|
const HttpBackend = require("../mock-request");
|
|
const utils = require("../test-utils");
|
|
|
|
import expect from 'expect';
|
|
|
|
describe("MatrixClient opts", function() {
|
|
const baseUrl = "http://localhost.or.something";
|
|
let client = null;
|
|
let httpBackend = null;
|
|
const userId = "@alice:localhost";
|
|
const userB = "@bob:localhost";
|
|
const accessToken = "aseukfgwef";
|
|
const roomId = "!foo:bar";
|
|
const syncData = {
|
|
next_batch: "s_5_3",
|
|
presence: {},
|
|
rooms: {
|
|
join: {
|
|
"!foo:bar": { // roomId
|
|
timeline: {
|
|
events: [
|
|
utils.mkMessage({
|
|
room: roomId, user: userB, msg: "hello",
|
|
}),
|
|
],
|
|
prev_batch: "f_1_1",
|
|
},
|
|
state: {
|
|
events: [
|
|
utils.mkEvent({
|
|
type: "m.room.name", room: roomId, user: userB,
|
|
content: {
|
|
name: "Old room name",
|
|
},
|
|
}),
|
|
utils.mkMembership({
|
|
room: roomId, mship: "join", user: userB, name: "Bob",
|
|
}),
|
|
utils.mkMembership({
|
|
room: roomId, mship: "join", user: userId, name: "Alice",
|
|
}),
|
|
utils.mkEvent({
|
|
type: "m.room.create", room: roomId, user: userId,
|
|
content: {
|
|
creator: userId,
|
|
},
|
|
}),
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
beforeEach(function() {
|
|
utils.beforeEach(this); // eslint-disable-line no-invalid-this
|
|
httpBackend = new HttpBackend();
|
|
});
|
|
|
|
afterEach(function() {
|
|
httpBackend.verifyNoOutstandingExpectation();
|
|
});
|
|
|
|
describe("without opts.store", function() {
|
|
beforeEach(function() {
|
|
client = new MatrixClient({
|
|
request: httpBackend.requestFn,
|
|
store: undefined,
|
|
baseUrl: baseUrl,
|
|
userId: userId,
|
|
accessToken: accessToken,
|
|
scheduler: new sdk.MatrixScheduler(),
|
|
});
|
|
});
|
|
|
|
afterEach(function() {
|
|
client.stopClient();
|
|
});
|
|
|
|
it("should be able to send messages", function(done) {
|
|
const eventId = "$flibble:wibble";
|
|
httpBackend.when("PUT", "/txn1").respond(200, {
|
|
event_id: eventId,
|
|
});
|
|
client.sendTextMessage("!foo:bar", "a body", "txn1").done(function(res) {
|
|
expect(res.event_id).toEqual(eventId);
|
|
done();
|
|
});
|
|
httpBackend.flush("/txn1", 1);
|
|
});
|
|
|
|
it("should be able to sync / get new events", function(done) {
|
|
const expectedEventTypes = [ // from /initialSync
|
|
"m.room.message", "m.room.name", "m.room.member", "m.room.member",
|
|
"m.room.create",
|
|
];
|
|
client.on("event", function(event) {
|
|
expect(expectedEventTypes.indexOf(event.getType())).toNotEqual(
|
|
-1, "Recv unexpected event type: " + event.getType(),
|
|
);
|
|
expectedEventTypes.splice(
|
|
expectedEventTypes.indexOf(event.getType()), 1,
|
|
);
|
|
});
|
|
httpBackend.when("GET", "/pushrules").respond(200, {});
|
|
httpBackend.when("POST", "/filter").respond(200, { filter_id: "foo" });
|
|
httpBackend.when("GET", "/sync").respond(200, syncData);
|
|
client.startClient();
|
|
httpBackend.flush("/pushrules", 1).then(function() {
|
|
return httpBackend.flush("/filter", 1);
|
|
}).then(function() {
|
|
return httpBackend.flush("/sync", 1);
|
|
}).done(function() {
|
|
expect(expectedEventTypes.length).toEqual(
|
|
0, "Expected to see event types: " + expectedEventTypes,
|
|
);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("without opts.scheduler", function() {
|
|
beforeEach(function() {
|
|
client = new MatrixClient({
|
|
request: httpBackend.requestFn,
|
|
store: new sdk.MatrixInMemoryStore(),
|
|
baseUrl: baseUrl,
|
|
userId: userId,
|
|
accessToken: accessToken,
|
|
scheduler: undefined,
|
|
});
|
|
});
|
|
|
|
it("shouldn't retry sending events", function(done) {
|
|
httpBackend.when("PUT", "/txn1").fail(500, {
|
|
errcode: "M_SOMETHING",
|
|
error: "Ruh roh",
|
|
});
|
|
client.sendTextMessage("!foo:bar", "a body", "txn1").done(function(res) {
|
|
expect(false).toBe(true, "sendTextMessage resolved but shouldn't");
|
|
}, function(err) {
|
|
expect(err.errcode).toEqual("M_SOMETHING");
|
|
done();
|
|
});
|
|
httpBackend.flush("/txn1", 1);
|
|
});
|
|
|
|
it("shouldn't queue events", function(done) {
|
|
httpBackend.when("PUT", "/txn1").respond(200, {
|
|
event_id: "AAA",
|
|
});
|
|
httpBackend.when("PUT", "/txn2").respond(200, {
|
|
event_id: "BBB",
|
|
});
|
|
let sentA = false;
|
|
let sentB = false;
|
|
client.sendTextMessage("!foo:bar", "a body", "txn1").done(function(res) {
|
|
sentA = true;
|
|
expect(sentB).toBe(true);
|
|
});
|
|
client.sendTextMessage("!foo:bar", "b body", "txn2").done(function(res) {
|
|
sentB = true;
|
|
expect(sentA).toBe(false);
|
|
});
|
|
httpBackend.flush("/txn2", 1).done(function() {
|
|
httpBackend.flush("/txn1", 1).done(function() {
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it("should be able to send messages", function(done) {
|
|
httpBackend.when("PUT", "/txn1").respond(200, {
|
|
event_id: "foo",
|
|
});
|
|
client.sendTextMessage("!foo:bar", "a body", "txn1").done(function(res) {
|
|
expect(res.event_id).toEqual("foo");
|
|
done();
|
|
});
|
|
httpBackend.flush("/txn1", 1);
|
|
});
|
|
});
|
|
});
|