mirror of
https://github.com/pion/webrtc.git
synced 2025-09-27 11:32:19 +08:00

The parser included in the ice package strictly adheres to RFC 7064, however, this can be problematic when attempting to use ICE server URLs that were automatically generated by a third party. Twilio, for example, has been seen to send the following in its list of ICE servers: stun:global.stun.twilio.com:3478?transport=udp which would require user intervention to sanitise before passing to Pion. This patch side-steps this aspect of ice.ParseURL by pre-stripping any queries that may be present so that we can allow URLs of this form.
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
package webrtc
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestConfiguration_getICEServers(t *testing.T) {
|
|
t.Run("Success", func(t *testing.T) {
|
|
expectedServerStr := "stun:stun.l.google.com:19302"
|
|
cfg := Configuration{
|
|
ICEServers: []ICEServer{
|
|
{
|
|
URLs: []string{expectedServerStr},
|
|
},
|
|
},
|
|
}
|
|
|
|
parsedURLs, err := cfg.getICEServers()
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, expectedServerStr, (*parsedURLs)[0].String())
|
|
})
|
|
|
|
t.Run("Failure", func(t *testing.T) {
|
|
expectedServerStr := "stun.l.google.com:19302"
|
|
cfg := Configuration{
|
|
ICEServers: []ICEServer{
|
|
{
|
|
URLs: []string{expectedServerStr},
|
|
},
|
|
},
|
|
}
|
|
|
|
_, err := cfg.getICEServers()
|
|
assert.NotNil(t, err)
|
|
})
|
|
|
|
t.Run("Success", func(t *testing.T) {
|
|
// ignore the fact that stun URLs shouldn't have a query
|
|
serverStr := "stun:global.stun.twilio.com:3478?transport=udp"
|
|
expectedServerStr := "stun:global.stun.twilio.com:3478"
|
|
cfg := Configuration{
|
|
ICEServers: []ICEServer{
|
|
{
|
|
URLs: []string{serverStr},
|
|
},
|
|
},
|
|
}
|
|
|
|
parsedURLs, err := cfg.getICEServers()
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, expectedServerStr, (*parsedURLs)[0].String())
|
|
})
|
|
}
|