add test that redaction for non-sending event aborts it
This commit is contained in:
parent
0e750db9ae
commit
616d701ebb
1 changed files with 31 additions and 2 deletions
|
@ -39,7 +39,7 @@ export class SendQueue {
|
||||||
const pendingEvent = new PendingEvent({
|
const pendingEvent = new PendingEvent({
|
||||||
data,
|
data,
|
||||||
remove: () => this._removeEvent(pendingEvent),
|
remove: () => this._removeEvent(pendingEvent),
|
||||||
emitUpdate: () => this._pendingEvents.update(pendingEvent),
|
emitUpdate: params => this._pendingEvents.update(pendingEvent, params),
|
||||||
attachments
|
attachments
|
||||||
});
|
});
|
||||||
return pendingEvent;
|
return pendingEvent;
|
||||||
|
@ -326,7 +326,8 @@ export class SendQueue {
|
||||||
|
|
||||||
import {HomeServer as MockHomeServer} from "../../../mocks/HomeServer.js";
|
import {HomeServer as MockHomeServer} from "../../../mocks/HomeServer.js";
|
||||||
import {createMockStorage} from "../../../mocks/Storage.js";
|
import {createMockStorage} from "../../../mocks/Storage.js";
|
||||||
import {NullLogger} from "../../../logging/NullLogger.js";
|
import {ListObserver} from "../../../mocks/ListObserver.js";
|
||||||
|
import {NullLogger, NullLogItem} from "../../../logging/NullLogger.js";
|
||||||
import {createEvent, withTextBody, withTxnId} from "../../../mocks/event.js";
|
import {createEvent, withTextBody, withTxnId} from "../../../mocks/event.js";
|
||||||
import {poll} from "../../../mocks/poll.js";
|
import {poll} from "../../../mocks/poll.js";
|
||||||
|
|
||||||
|
@ -362,6 +363,34 @@ export function tests() {
|
||||||
const sendRequest2 = await poll(() => hs.requests.send[1]);
|
const sendRequest2 = await poll(() => hs.requests.send[1]);
|
||||||
sendRequest2.respond({event_id: event2.event_id});
|
sendRequest2.respond({event_id: event2.event_id});
|
||||||
await poll(() => !queue._isSending);
|
await poll(() => !queue._isSending);
|
||||||
|
},
|
||||||
|
"redaction of pending event that hasn't started sending yet aborts it": async assert => {
|
||||||
|
const queue = new SendQueue({
|
||||||
|
roomId: "!abc",
|
||||||
|
storage: await createMockStorage(),
|
||||||
|
hsApi: new MockHomeServer().api
|
||||||
|
});
|
||||||
|
// first, enqueue a message that will be attempted to send, but we don't respond
|
||||||
|
await queue.enqueueEvent("m.room.message", {body: "hello!"}, null, new NullLogItem());
|
||||||
|
|
||||||
|
const observer = new ListObserver();
|
||||||
|
queue.pendingEvents.subscribe(observer);
|
||||||
|
await queue.enqueueEvent("m.room.message", {body: "...world"}, null, new NullLogItem());
|
||||||
|
let txnId;
|
||||||
|
{
|
||||||
|
const {type, index, value} = await observer.next();
|
||||||
|
assert.equal(type, "add");
|
||||||
|
assert.equal(index, 1);
|
||||||
|
assert.equal(typeof value.txnId, "string");
|
||||||
|
txnId = value.txnId;
|
||||||
|
}
|
||||||
|
await queue.enqueueRedaction(txnId, null, new NullLogItem());
|
||||||
|
{
|
||||||
|
const {type, value, index} = await observer.next();
|
||||||
|
assert.equal(type, "remove");
|
||||||
|
assert.equal(index, 1);
|
||||||
|
assert.equal(txnId, value.txnId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue