1// +build !js 2 3package webrtc 4 5import ( 6 "testing" 7 8 "github.com/pion/ice" 9 "github.com/pion/webrtc/v2/pkg/rtcerr" 10 "github.com/stretchr/testify/assert" 11) 12 13func TestICEServer_validate(t *testing.T) { 14 t.Run("Success", func(t *testing.T) { 15 testCases := []struct { 16 iceServer ICEServer 17 expectedValidate bool 18 }{ 19 {ICEServer{ 20 URLs: []string{"turn:192.158.29.39?transport=udp"}, 21 Username: "unittest", 22 Credential: "placeholder", 23 CredentialType: ICECredentialTypePassword, 24 }, true}, 25 {ICEServer{ 26 URLs: []string{"turn:192.158.29.39?transport=udp"}, 27 Username: "unittest", 28 Credential: OAuthCredential{ 29 MACKey: "WmtzanB3ZW9peFhtdm42NzUzNG0=", 30 AccessToken: "AAwg3kPHWPfvk9bDFL936wYvkoctMADzQ5VhNDgeMR3+ZlZ35byg972fW8QjpEl7bx91YLBPFsIhsxloWcXPhA==", 31 }, 32 CredentialType: ICECredentialTypeOauth, 33 }, true}, 34 } 35 36 for i, testCase := range testCases { 37 _, err := testCase.iceServer.urls() 38 assert.Nil(t, err, "testCase: %d %v", i, testCase) 39 } 40 }) 41 t.Run("Failure", func(t *testing.T) { 42 testCases := []struct { 43 iceServer ICEServer 44 expectedErr error 45 }{ 46 {ICEServer{ 47 URLs: []string{"turn:192.158.29.39?transport=udp"}, 48 }, &rtcerr.InvalidAccessError{Err: ErrNoTurnCredentials}}, 49 {ICEServer{ 50 URLs: []string{"turn:192.158.29.39?transport=udp"}, 51 Username: "unittest", 52 Credential: false, 53 CredentialType: ICECredentialTypePassword, 54 }, &rtcerr.InvalidAccessError{Err: ErrTurnCredentials}}, 55 {ICEServer{ 56 URLs: []string{"turn:192.158.29.39?transport=udp"}, 57 Username: "unittest", 58 Credential: false, 59 CredentialType: ICECredentialTypeOauth, 60 }, &rtcerr.InvalidAccessError{Err: ErrTurnCredentials}}, 61 {ICEServer{ 62 URLs: []string{"turn:192.158.29.39?transport=udp"}, 63 Username: "unittest", 64 Credential: false, 65 CredentialType: Unknown, 66 }, &rtcerr.InvalidAccessError{Err: ErrTurnCredentials}}, 67 {ICEServer{ 68 URLs: []string{"stun:google.de?transport=udp"}, 69 Username: "unittest", 70 Credential: false, 71 CredentialType: ICECredentialTypeOauth, 72 }, ice.ErrSTUNQuery}, 73 } 74 75 for i, testCase := range testCases { 76 _, err := testCase.iceServer.urls() 77 assert.EqualError(t, 78 err, 79 testCase.expectedErr.Error(), 80 "testCase: %d %v", i, testCase, 81 ) 82 } 83 }) 84} 85