From 52b8cab92cd005e25cae48380b37226dba8dd4d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Thu, 8 Dec 2022 22:18:25 +0100 Subject: [PATCH] Test candidate WriteTo function to return error When connection is closed --- AUTHORS.txt | 1 + candidate_test.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index f2896a8..f46e293 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -38,6 +38,7 @@ Meelap Shah Michael MacDonald Michael MacDonald Mikhail Bragin +Miroslav Šedivý Nevio Vesic Ori Bernstein Robert Eperjesi diff --git a/candidate_test.go b/candidate_test.go index f2591b9..6ba7321 100644 --- a/candidate_test.go +++ b/candidate_test.go @@ -1,10 +1,13 @@ package ice import ( + "net" "testing" "time" + "github.com/pion/logging" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCandidatePriority(t *testing.T) { @@ -337,3 +340,43 @@ func TestCandidateMarshal(t *testing.T) { assert.Equal(t, test.marshaled, actualCandidate.Marshal()) } } + +func TestCandidateWriteTo(t *testing.T) { + listener, err := net.ListenTCP("tcp", &net.TCPAddr{ + IP: net.IP{127, 0, 0, 1}, + Port: 0, + }) + require.NoError(t, err, "error creating test tcp listener") + + conn, err := net.DialTCP("tcp", nil, listener.Addr().(*net.TCPAddr)) + require.NoError(t, err, "error dialing test tcp conn") + + loggerFactory := logging.NewDefaultLoggerFactory() + packetConn := newTCPPacketConn(tcpPacketParams{ + ReadBuffer: 2048, + Logger: loggerFactory.NewLogger("tcp-packet-conn"), + }) + + err = packetConn.AddConn(conn, nil) + require.NoError(t, err, "error adding test tcp conn to packet conn") + + c1 := &candidateBase{ + conn: packetConn, + currAgent: &Agent{ + log: loggerFactory.NewLogger("agent"), + }, + } + + c2 := &candidateBase{ + resolvedAddr: listener.Addr(), + } + + _, err = c1.writeTo([]byte("test"), c2) + assert.NoError(t, err, "writing to open conn") + + err = packetConn.Close() + require.NoError(t, err, "error closing test tcp conn") + + _, err = c1.writeTo([]byte("test"), c2) + assert.Error(t, err, "writing to closed conn") +}