github.com/pion/webrtc/v4@v4.0.1/dtlsrole_test.go (about) 1 // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly> 2 // SPDX-License-Identifier: MIT 3 4 package webrtc 5 6 import ( 7 "fmt" 8 "testing" 9 10 "github.com/pion/sdp/v3" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestDTLSRole_String(t *testing.T) { 15 testCases := []struct { 16 role DTLSRole 17 expectedString string 18 }{ 19 {DTLSRoleUnknown, ErrUnknownType.Error()}, 20 {DTLSRoleAuto, "auto"}, 21 {DTLSRoleClient, "client"}, 22 {DTLSRoleServer, "server"}, 23 } 24 25 for i, testCase := range testCases { 26 assert.Equal(t, 27 testCase.expectedString, 28 testCase.role.String(), 29 "testCase: %d %v", i, testCase, 30 ) 31 } 32 } 33 34 func TestDTLSRoleFromRemoteSDP(t *testing.T) { 35 parseSDP := func(raw string) *sdp.SessionDescription { 36 parsed := &sdp.SessionDescription{} 37 if err := parsed.Unmarshal([]byte(raw)); err != nil { 38 panic(err) 39 } 40 return parsed 41 } 42 43 const noMedia = `v=0 44 o=- 4596489990601351948 2 IN IP4 127.0.0.1 45 s=- 46 t=0 0 47 ` 48 49 const mediaNoSetup = `v=0 50 o=- 4596489990601351948 2 IN IP4 127.0.0.1 51 s=- 52 t=0 0 53 m=application 47299 DTLS/SCTP 5000 54 c=IN IP4 192.168.20.129 55 ` 56 57 const mediaSetupDeclared = `v=0 58 o=- 4596489990601351948 2 IN IP4 127.0.0.1 59 s=- 60 t=0 0 61 m=application 47299 DTLS/SCTP 5000 62 c=IN IP4 192.168.20.129 63 a=setup:%s 64 ` 65 66 testCases := []struct { 67 test string 68 sessionDescription *sdp.SessionDescription 69 expectedRole DTLSRole 70 }{ 71 {"nil SessionDescription", nil, DTLSRoleAuto}, 72 {"No MediaDescriptions", parseSDP(noMedia), DTLSRoleAuto}, 73 {"MediaDescription, no setup", parseSDP(mediaNoSetup), DTLSRoleAuto}, 74 {"MediaDescription, setup:actpass", parseSDP(fmt.Sprintf(mediaSetupDeclared, "actpass")), DTLSRoleAuto}, 75 {"MediaDescription, setup:passive", parseSDP(fmt.Sprintf(mediaSetupDeclared, "passive")), DTLSRoleServer}, 76 {"MediaDescription, setup:active", parseSDP(fmt.Sprintf(mediaSetupDeclared, "active")), DTLSRoleClient}, 77 } 78 for _, testCase := range testCases { 79 assert.Equal(t, 80 testCase.expectedRole, 81 dtlsRoleFromRemoteSDP(testCase.sessionDescription), 82 "TestDTLSRoleFromSDP (%s)", testCase.test, 83 ) 84 } 85 }