mirror of
https://github.com/pion/webrtc.git
synced 2025-10-13 02:43:48 +08:00

Instead of having logic in pion/webrtc and pion/sdp move all logic to pion/ice. Users of pion/ice don't want to import these packages to use basic pion/ice functionality.
72 lines
2.2 KiB
Go
72 lines
2.2 KiB
Go
package webrtc
|
|
|
|
import (
|
|
"encoding/json"
|
|
"syscall/js"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestValueToICECandidate(t *testing.T) {
|
|
testCases := []struct {
|
|
jsonCandidate string
|
|
expect ICECandidate
|
|
}{
|
|
{
|
|
// Firefox-style ICECandidateInit:
|
|
`{"candidate":"1966762133 1 udp 2122260222 192.168.20.128 47298 typ srflx raddr 203.0.113.1 rport 5000"}`,
|
|
ICECandidate{
|
|
Foundation: "1966762133",
|
|
Priority: 2122260222,
|
|
Address: "192.168.20.128",
|
|
Protocol: ICEProtocolUDP,
|
|
Port: 47298,
|
|
Typ: ICECandidateTypeSrflx,
|
|
Component: 1,
|
|
RelatedAddress: "203.0.113.1",
|
|
RelatedPort: 5000,
|
|
},
|
|
}, {
|
|
// Chrome/Webkit-style ICECandidate:
|
|
`{"foundation":"1966762134", "component":"rtp", "protocol":"udp", "priority":2122260223, "address":"192.168.20.129", "port":47299, "type":"host", "relatedAddress":null}`,
|
|
ICECandidate{
|
|
Foundation: "1966762134",
|
|
Priority: 2122260223,
|
|
Address: "192.168.20.129",
|
|
Protocol: ICEProtocolUDP,
|
|
Port: 47299,
|
|
Typ: ICECandidateTypeHost,
|
|
Component: 1,
|
|
RelatedAddress: "<null>",
|
|
RelatedPort: 0,
|
|
},
|
|
}, {
|
|
// Both are present, Chrome/Webkit-style takes precedent:
|
|
`{"candidate":"1966762133 1 udp 2122260222 192.168.20.128 47298 typ srflx raddr 203.0.113.1 rport 5000", "foundation":"1966762134", "component":"rtp", "protocol":"udp", "priority":2122260223, "address":"192.168.20.129", "port":47299, "type":"host", "relatedAddress":null}`,
|
|
ICECandidate{
|
|
Foundation: "1966762134",
|
|
Priority: 2122260223,
|
|
Address: "192.168.20.129",
|
|
Protocol: ICEProtocolUDP,
|
|
Port: 47299,
|
|
Typ: ICECandidateTypeHost,
|
|
Component: 1,
|
|
RelatedAddress: "<null>",
|
|
RelatedPort: 0,
|
|
},
|
|
},
|
|
}
|
|
|
|
for i, testCase := range testCases {
|
|
v := map[string]interface{}{}
|
|
err := json.Unmarshal([]byte(testCase.jsonCandidate), &v)
|
|
if err != nil {
|
|
t.Errorf("Case %d: bad test, got error: %v", i, err)
|
|
}
|
|
val := *valueToICECandidate(js.ValueOf(v))
|
|
val.statsID = ""
|
|
assert.Equal(t, testCase.expect, val)
|
|
}
|
|
}
|