Index: content/test/data/media/peerconnection-setAndGetConfiguration.html |
diff --git a/content/test/data/media/peerconnection-setConfiguration.html b/content/test/data/media/peerconnection-setAndGetConfiguration.html |
similarity index 62% |
rename from content/test/data/media/peerconnection-setConfiguration.html |
rename to content/test/data/media/peerconnection-setAndGetConfiguration.html |
index 8a896c15db4863d6b0d5800d8fcbe47ddc49ddac..e659f297c5a759e8b93772990f56d8f0762ea826 100644 |
--- a/content/test/data/media/peerconnection-setConfiguration.html |
+++ b/content/test/data/media/peerconnection-setAndGetConfiguration.html |
@@ -15,36 +15,46 @@ |
var gPeerConnection = null; |
var gCertificate = null; |
+ var retrievedCertificate = null; |
+ var gRtcConfig = null; |
// This test creates and sets three offers, calling setConfiguration in |
// between each offer, expecting an ICE restart to be triggered by the next |
// offer. |
- function testSetConfiguration() { |
- gPeerConnection = new RTCPeerConnection( |
- {iceServers:[], iceTransportPolicy:'all', bundlePolicy:'balanced', |
- rtcpMuxPolicy:'require', certificates:[], iceCandidatePoolSize:0}); |
- // Change ICE candidate pool size, which will succeed before |
- // setLocalDescription is called. |
- gPeerConnection.setConfiguration( |
- {iceServers:[], iceTransportPolicy:'all', bundlePolicy:'balanced', |
- rtcpMuxPolicy:'require', certificates:[], iceCandidatePoolSize:1}); |
- // Now test successful cases of setConfiguration. Changes should trigger an |
- // ICE restart in the next offer. To do this, first we need to trigger an |
- // initial ICE gathering phase and wait until it completes. |
- // TODO(deadbeef): Once onicegatheringstatechange is implemented, use that |
- // instead of a "null" candidate. |
- gPeerConnection.onicecandidate = iceCandidateCallback1; |
- createOfferAndSetLocalDescription(); |
+ function testSetAndGetConfiguration() { |
foolip
2017/03/21 08:37:14
It looks like much of this could be tested in web-
|
+ RTCPeerConnection.generateCertificate({ name:'ECDSA', namedCurve:'P-256' }) |
+ .then(function(cert) { |
+ gRtcConfig = |
+ {iceServers:[], iceTransportPolicy:'all', bundlePolicy:'balanced', |
+ rtcpMuxPolicy:'require', certificates:[cert]}; |
+ gPeerConnection = new RTCPeerConnection(gRtcConfig); |
+ // Now test successful cases of setConfiguration. Changes should trigger an |
+ // ICE restart in the next offer. To do this, first we need to trigger an |
+ // initial ICE gathering phase and wait until it completes. |
+ // TODO(deadbeef): Once onicegatheringstatechange is implemented, use that |
+ // instead of a "null" candidate. |
+ gPeerConnection.onicecandidate = iceCandidateCallback1; |
+ createOfferAndSetLocalDescription(); |
+ var retrievedRtcConfig = gPeerConnection.getConfiguration(); |
+ assertRtcConfigEquals(gRtcConfig, retrievedRtcConfig); |
+ // Tests that the certificates can be successfully retrieved using |
+ // getConfiguration() by re-applying the retrieved certification to the |
+ // peerconnection. |
+ assertEquals(1, retrievedRtcConfig['certificates'].length) |
+ retrievedCertificate = gPeerConnection.getConfiguration()['certificates'][0]; |
+ }); |
} |
function iceCandidateCallback1(candidate) { |
if (gPeerConnection.iceGatheringState === 'complete') { |
gPeerConnection.onicecandidate = iceCandidateCallback2; |
// Policy changed. |
- gPeerConnection.setConfiguration( |
+ gRtcConfig = |
{iceServers:[], iceTransportPolicy:'relay', bundlePolicy:'balanced', |
- rtcpMuxPolicy:'require', certificates:[], iceCandidatePoolSize:1}); |
+ rtcpMuxPolicy:'require', certificates:[retrievedCertificate]}; |
+ gPeerConnection.setConfiguration(gRtcConfig); |
createOfferAndSetLocalDescription(); |
+ assertRtcConfigEquals(gRtcConfig, gPeerConnection.getConfiguration()); |
} |
} |
@@ -52,11 +62,31 @@ |
if (gPeerConnection.iceGatheringState === 'complete') { |
gPeerConnection.onicecandidate = iceCandidateCallback3; |
// Servers changed. |
- gPeerConnection.setConfiguration( |
- {iceServers:[{urls:'stun:foo.invalid'}], iceTransportPolicy:'all', |
- bundlePolicy:'balanced', rtcpMuxPolicy:'require', certificates:[], |
- iceCandidatePoolSize:1}); |
+ gRtcConfig = { |
+ iceServers:[ |
+ { |
+ 'urls': ['stun:stun.invalid.scom:19302', |
+ 'stun:stun.invalid2.scom:19302'] |
+ }, |
+ { |
+ 'urls': ['turn:turn.invalid.udp?transport=udp'], |
+ 'credential': 'JZEOEt2V3Qb0y27GRntt2u2PAYA=', |
+ 'username': '28224511:1379330808' |
+ }, |
+ { |
+ 'urls': ['turn:turn.invalid.tcp?transport=tcp'], |
+ 'credential': 'JZEOEt2V3Qb0y27GRntt2u2PAYA=', |
+ 'username': '28224511:1379330808' |
+ } |
+ ], |
+ iceTransportPolicy:'all', |
+ bundlePolicy:'balanced', |
+ rtcpMuxPolicy:'require', |
+ certificates:[retrievedCertificate] |
+ }; |
+ gPeerConnection.setConfiguration(gRtcConfig); |
createOfferAndSetLocalDescription(); |
+ assertRtcConfigEquals(gRtcConfig, gPeerConnection.getConfiguration()); |
} |
} |
@@ -150,6 +180,38 @@ |
} |
} |
+ function assertRtcConfigEquals(config1, config2) { |
+ assertEquals(config1['iceTransportPolicy'], config2['iceTransportPolicy']); |
+ assertEquals(config1['bundlePolicy'], config2['bundlePolicy']); |
+ assertEquals(config1['rtcpMuxPolicy'], config2['rtcpMuxPolicy']); |
+ assertEquals(config1['iceServers'].length, config2['iceServers'].length); |
+ for (var i in config1['iceServers']) { |
+ var server1 = config1['iceServers'][i]; |
+ var server2 = config2['iceServers'][i]; |
+ |
+ if (!('username' in server1)) { |
+ assertEquals("", server2['username']); |
+ } else { |
+ assertEquals(server1['username'], server2['username']); |
+ } |
+ |
+ if (!('credential' in server1)) { |
+ assertEquals("", server2['credential']); |
+ } else { |
+ assertEquals(server1['credential'], server2['credential']); |
+ } |
+ |
+ if (!('urls' in server1)) { |
+ assertEquals(0, server2['urls'].length); |
+ } else { |
+ assertEquals(server1['urls'].length, server2['urls'].length); |
foolip
2017/03/21 08:37:14
I think this will fail due to normalization if the
|
+ for (var j in server1['urls']) { |
+ assertEquals(server1['urls'][j], server2['urls'][j]); |
+ } |
+ } |
+ } |
+ } |
+ |
// Helper function to create and apply offer. |
function createOfferAndSetLocalDescription() { |
gPeerConnection.createOffer({offerToReceiveAudio:1}) |