You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
7.5 KiB
177 lines
7.5 KiB
diff --git a/test/rtcpeerconnection.js b/test/rtcpeerconnection.js
|
|
index acab159..acd6065 100644
|
|
--- a/test/rtcpeerconnection.js
|
|
+++ b/test/rtcpeerconnection.js
|
|
@@ -699,7 +699,7 @@ describe('Edge shim', () => {
|
|
'a=ice-pwd:' + ICEPWD + '\r\n' +
|
|
'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
|
|
'a=setup:actpass\r\n' +
|
|
- 'a=mid:audio1\r\n' +
|
|
+ 'a=mid:audio2\r\n' +
|
|
'a=sendonly\r\n' +
|
|
'a=rtcp-mux\r\n' +
|
|
'a=rtcp-rsize\r\n' +
|
|
@@ -738,18 +738,22 @@ describe('Edge shim', () => {
|
|
'a=group:BUNDLE audio1 video1\r\n' +
|
|
MINIMAL_AUDIO_MLINE +
|
|
'a=ssrc:1001 msid:stream1 track1\r\n' +
|
|
- 'm=audio 9 UDP/TLS/RTP/SAVPF 111\r\n' +
|
|
+ 'm=video 1 UDP/TLS/RTP/SAVPF 100\r\n' +
|
|
'c=IN IP4 0.0.0.0\r\n' +
|
|
- 'a=rtcp:9 IN IP4 0.0.0.0\r\n' +
|
|
'a=ice-ufrag:' + ICEUFRAG + '\r\n' +
|
|
'a=ice-pwd:' + ICEPWD + '\r\n' +
|
|
'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
|
|
'a=setup:actpass\r\n' +
|
|
- 'a=mid:audio1\r\n' +
|
|
+ 'a=mid:video1\r\n' +
|
|
'a=sendonly\r\n' +
|
|
'a=rtcp-mux\r\n' +
|
|
'a=rtcp-rsize\r\n' +
|
|
- 'a=rtpmap:111 opus/48000/2\r\n' +
|
|
+ 'a=rtpmap:100 VP8/90000\r\n' +
|
|
+ 'a=rtcp:1 IN IP4 0.0.0.0\r\n' +
|
|
+ 'a=rtcp-fb:100 nack\r\n' +
|
|
+ 'a=rtcp-fb:100 nack pli\r\n' +
|
|
+ 'a=rtcp-fb:100 goog-remb\r\n' +
|
|
+ 'a=extmap:1 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\n' +
|
|
'a=ssrc:2002 msid:stream2 track2\r\n' +
|
|
'a=ssrc:2002 cname:some\r\n';
|
|
it('disposes the second ice transport', () => {
|
|
@@ -783,7 +787,7 @@ describe('Edge shim', () => {
|
|
'a=ice-pwd:' + ICEPWD + '\r\n' +
|
|
'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
|
|
'a=setup:actpass\r\n' +
|
|
- 'a=mid:audio1\r\n' +
|
|
+ 'a=mid:audio2\r\n' +
|
|
'a=sendonly\r\n' +
|
|
'a=rtcp-mux\r\n' +
|
|
'a=rtcp-rsize\r\n' +
|
|
@@ -1182,30 +1186,36 @@ describe('Edge shim', () => {
|
|
});
|
|
|
|
it('ignores extra candidates in a bundle answer', () => {
|
|
- const sdp = SDP_BOILERPLATE +
|
|
- 'a=group:BUNDLE audio1 video1\r\n' +
|
|
- MINIMAL_AUDIO_MLINE +
|
|
- 'a=candidate:702786350 1 udp 41819902 8.8.8.8 60769 typ host\r\n' +
|
|
- 'a=end-of-candidates\r\n' +
|
|
- 'm=video 9 UDP/TLS/RTP/SAVPF 102\r\n' +
|
|
- 'c=IN IP4 0.0.0.0\r\n' +
|
|
- 'a=rtcp:9 IN IP4 0.0.0.0\r\n' +
|
|
- 'a=ice-ufrag:' + ICEUFRAG + '\r\n' +
|
|
- 'a=ice-pwd:' + ICEPWD + '\r\n' +
|
|
- 'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
|
|
- 'a=setup:actpass\r\n' +
|
|
- 'a=mid:video1\r\n' +
|
|
- 'a=sendrecv\r\n' +
|
|
- 'a=rtcp-mux\r\n' +
|
|
- 'a=rtcp-rsize\r\n' +
|
|
- 'a=rtpmap:102 vp8/90000\r\n' +
|
|
- 'a=ssrc:1002 cname:some\r\n' +
|
|
- 'a=candidate:702786350 1 udp 41819902 8.8.8.8 60769 typ host\r\n' +
|
|
- 'a=end-of-candidates\r\n';
|
|
return pc.createOffer({offerToReceiveAudio: true,
|
|
offerToReceiveVideo: true})
|
|
.then(offer => pc.setLocalDescription(offer))
|
|
- .then(() => pc.setRemoteDescription({type: 'answer', sdp}))
|
|
+ .then(() => {
|
|
+ const mids = SDPUtils.getMediaSections(pc.localDescription.sdp)
|
|
+ .map(mediaSection => SDPUtils.getMid(mediaSection));
|
|
+ const sdp = SDP_BOILERPLATE +
|
|
+ 'a=group:BUNDLE ' + mids.join(' ') + '\r\n' +
|
|
+ MINIMAL_AUDIO_MLINE.replace('audio1', mids[0]) +
|
|
+ 'a=candidate:702786350 1 udp 41819902 8.8.8.8 60769 ' +
|
|
+ 'typ host\r\n' +
|
|
+ 'a=end-of-candidates\r\n' +
|
|
+ 'm=video 9 UDP/TLS/RTP/SAVPF 102\r\n' +
|
|
+ 'c=IN IP4 0.0.0.0\r\n' +
|
|
+ 'a=rtcp:9 IN IP4 0.0.0.0\r\n' +
|
|
+ 'a=ice-ufrag:' + ICEUFRAG + '\r\n' +
|
|
+ 'a=ice-pwd:' + ICEPWD + '\r\n' +
|
|
+ 'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
|
|
+ 'a=setup:actpass\r\n' +
|
|
+ 'a=mid:' + mids[1] + '\r\n' +
|
|
+ 'a=sendrecv\r\n' +
|
|
+ 'a=rtcp-mux\r\n' +
|
|
+ 'a=rtcp-rsize\r\n' +
|
|
+ 'a=rtpmap:102 vp8/90000\r\n' +
|
|
+ 'a=ssrc:1002 cname:some\r\n' +
|
|
+ 'a=candidate:702786350 1 udp 41819902 8.8.8.8 60769 ' +
|
|
+ 'typ host\r\n' +
|
|
+ 'a=end-of-candidates\r\n';
|
|
+ return pc.setRemoteDescription({type: 'answer', sdp});
|
|
+ })
|
|
.then(() => {
|
|
const receiver = pc.getReceivers()[0];
|
|
const iceTransport = receiver.transport.transport;
|
|
@@ -1310,6 +1320,51 @@ describe('Edge shim', () => {
|
|
expect(e.name).to.equal('InvalidAccessError');
|
|
});
|
|
});
|
|
+
|
|
+ /*
|
|
+ it.only('does not do the wrong thing', (done) => {
|
|
+ const sdp = SDP_BOILERPLATE + MINIMAL_AUDIO_MLINE;
|
|
+ return navigator.mediaDevices.getUserMedia({video: true})
|
|
+ .then((stream => pc.addTrack(stream.getTracks()[0], stream)))
|
|
+ .then(() => pc.setRemoteDescription({type: 'offer', sdp}))
|
|
+ .then(() => {
|
|
+ console.log(pc._transceivers);
|
|
+ })
|
|
+ .then(() => pc.createAnswer())
|
|
+ .then((answer) => {
|
|
+ console.log(answer.sdp);
|
|
+ });
|
|
+ });
|
|
+
|
|
+ it.only('keeps the order from the remote offer', () => {
|
|
+ const sdp = SDP_BOILERPLATE + MINIMAL_AUDIO_MLINE +
|
|
+ 'm=video 9 UDP/TLS/RTP/SAVPF 102\r\n' +
|
|
+ 'c=IN IP4 0.0.0.0\r\n' +
|
|
+ 'a=rtcp:9 IN IP4 0.0.0.0\r\n' +
|
|
+ 'a=ice-ufrag:' + ICEUFRAG + '\r\n' +
|
|
+ 'a=ice-pwd:' + ICEPWD + '\r\n' +
|
|
+ 'a=fingerprint:sha-256 ' + FINGERPRINT_SHA256 + '\r\n' +
|
|
+ 'a=setup:actpass\r\n' +
|
|
+ 'a=mid:video1\r\n' +
|
|
+ 'a=sendrecv\r\n' +
|
|
+ 'a=rtcp-mux\r\n' +
|
|
+ 'a=rtcp-rsize\r\n' +
|
|
+ 'a=rtpmap:102 vp8/90000\r\n';
|
|
+ return navigator.mediaDevices.getUserMedia({audio: true, video: true})
|
|
+ .then((stream) => {
|
|
+ pc.addTrack(stream.getVideoTracks()[0], stream);
|
|
+ pc.addTrack(stream.getAudioTracks()[0], stream);
|
|
+ })
|
|
+ .then(() => pc.setRemoteDescription({type: 'offer', sdp}))
|
|
+ .then(() => pc.createAnswer())
|
|
+ .then((answer) => {
|
|
+ console.log(answer.sdp);
|
|
+ const sections = SDPUtils.getMediaSections(answer.sdp);
|
|
+ expect(SDPUtils.getKind(sections[0])).to.equal('audio');
|
|
+ expect(SDPUtils.getKind(sections[1])).to.equal('video');
|
|
+ });
|
|
+ });
|
|
+ */
|
|
});
|
|
|
|
describe('createOffer', () => {
|
|
@@ -3320,7 +3375,7 @@ describe('Edge shim', () => {
|
|
const sdp = SDP_BOILERPLATE + MINIMAL_AUDIO_MLINE +
|
|
'a=ssrc:1001 msid:stream1 track1\r\n' +
|
|
'a=ssrc:1001 cname:some\r\n' +
|
|
- MINIMAL_AUDIO_MLINE +
|
|
+ MINIMAL_AUDIO_MLINE.replace('audio1', 'audio2') +
|
|
'a=ssrc:1001 msid:stream1 track2\r\n' +
|
|
'a=ssrc:1001 cname:some\r\n';
|
|
pc.setRemoteDescription({type: 'offer', sdp: sdp})
|
|
@@ -3337,7 +3392,7 @@ describe('Edge shim', () => {
|
|
const sdp = SDP_BOILERPLATE + MINIMAL_AUDIO_MLINE +
|
|
'a=ssrc:1001 msid:stream1 track1\r\n' +
|
|
'a=ssrc:1001 cname:some\r\n' +
|
|
- MINIMAL_AUDIO_MLINE +
|
|
+ MINIMAL_AUDIO_MLINE.replace('audio1', 'audio2') +
|
|
'a=ssrc:1001 msid:stream2 track1\r\n' +
|
|
'a=ssrc:1001 cname:some\r\n';
|
|
pc.setRemoteDescription({type: 'offer', sdp: sdp})
|
|
|