You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-08-07 23:02:56 +03:00
Add group call tests for muting (#2590)
This commit is contained in:
@@ -16,7 +16,7 @@ limitations under the License.
|
||||
|
||||
import { TestClient } from '../../TestClient';
|
||||
import { MatrixCall, CallErrorCode, CallEvent, supportsMatrixCall, CallType } from '../../../src/webrtc/call';
|
||||
import { SDPStreamMetadataKey, SDPStreamMetadataPurpose } from '../../../src/webrtc/callEventTypes';
|
||||
import { SDPStreamMetadata, SDPStreamMetadataKey, SDPStreamMetadataPurpose } from '../../../src/webrtc/callEventTypes';
|
||||
import {
|
||||
DUMMY_SDP,
|
||||
MockMediaHandler,
|
||||
@@ -25,6 +25,7 @@ import {
|
||||
installWebRTCMocks,
|
||||
} from "../../test-utils/webrtc";
|
||||
import { CallFeed } from "../../../src/webrtc/callFeed";
|
||||
import { EventType } from "../../../src";
|
||||
|
||||
const startVoiceCall = async (client: TestClient, call: MatrixCall): Promise<void> => {
|
||||
const callPromise = call.placeVoiceCall();
|
||||
@@ -34,6 +35,14 @@ const startVoiceCall = async (client: TestClient, call: MatrixCall): Promise<voi
|
||||
call.getOpponentMember = jest.fn().mockReturnValue({ userId: "@bob:bar.uk" });
|
||||
};
|
||||
|
||||
const startVideoCall = async (client: TestClient, call: MatrixCall): Promise<void> => {
|
||||
const callPromise = call.placeVideoCall();
|
||||
await client.httpBackend.flush("");
|
||||
await callPromise;
|
||||
|
||||
call.getOpponentMember = jest.fn().mockReturnValue({ userId: "@bob:bar.uk" });
|
||||
};
|
||||
|
||||
describe('Call', function() {
|
||||
let client;
|
||||
let call;
|
||||
@@ -765,4 +774,75 @@ describe('Call', function() {
|
||||
expect(call.pushLocalFeed).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe("muting", () => {
|
||||
beforeEach(async () => {
|
||||
call.sendVoipEvent = jest.fn();
|
||||
await startVideoCall(client, call);
|
||||
});
|
||||
|
||||
describe("sending sdp_stream_metadata_changed events", () => {
|
||||
it("should send sdp_stream_metadata_changed when muting audio", async () => {
|
||||
await call.setMicrophoneMuted(true);
|
||||
expect(call.sendVoipEvent).toHaveBeenCalledWith(EventType.CallSDPStreamMetadataChangedPrefix, {
|
||||
[SDPStreamMetadataKey]: {
|
||||
mock_stream_from_media_handler: {
|
||||
purpose: SDPStreamMetadataPurpose.Usermedia,
|
||||
audio_muted: true,
|
||||
video_muted: false,
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("should send sdp_stream_metadata_changed when muting video", async () => {
|
||||
await call.setLocalVideoMuted(true);
|
||||
expect(call.sendVoipEvent).toHaveBeenCalledWith(EventType.CallSDPStreamMetadataChangedPrefix, {
|
||||
[SDPStreamMetadataKey]: {
|
||||
mock_stream_from_media_handler: {
|
||||
purpose: SDPStreamMetadataPurpose.Usermedia,
|
||||
audio_muted: false,
|
||||
video_muted: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("receiving sdp_stream_metadata_changed events", () => {
|
||||
const setupCall = (audio: boolean, video: boolean): SDPStreamMetadata => {
|
||||
const metadata = {
|
||||
stream: {
|
||||
purpose: SDPStreamMetadataPurpose.Usermedia,
|
||||
audio_muted: audio,
|
||||
video_muted: video,
|
||||
},
|
||||
};
|
||||
call.pushRemoteFeed(new MockMediaStream("stream", [
|
||||
new MockMediaStreamTrack("track1", "audio"),
|
||||
new MockMediaStreamTrack("track1", "video"),
|
||||
]));
|
||||
call.onSDPStreamMetadataChangedReceived({
|
||||
getContent: () => ({
|
||||
[SDPStreamMetadataKey]: metadata,
|
||||
}),
|
||||
});
|
||||
return metadata;
|
||||
};
|
||||
|
||||
it("should handle incoming sdp_stream_metadata_changed with audio muted", async () => {
|
||||
const metadata = setupCall(true, false);
|
||||
expect(call.remoteSDPStreamMetadata).toStrictEqual(metadata);
|
||||
expect(call.getRemoteFeeds()[0].isAudioMuted()).toBe(true);
|
||||
expect(call.getRemoteFeeds()[0].isVideoMuted()).toBe(false);
|
||||
});
|
||||
|
||||
it("should handle incoming sdp_stream_metadata_changed with video muted", async () => {
|
||||
const metadata = setupCall(false, true);
|
||||
expect(call.remoteSDPStreamMetadata).toStrictEqual(metadata);
|
||||
expect(call.getRemoteFeeds()[0].isAudioMuted()).toBe(false);
|
||||
expect(call.getRemoteFeeds()[0].isVideoMuted()).toBe(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user