github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/network/utils_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package network_test
     5  
     6  import (
     7  	"errors"
     8  	"net"
     9  
    10  	"github.com/juju/testing"
    11  	jc "github.com/juju/testing/checkers"
    12  	gc "gopkg.in/check.v1"
    13  
    14  	"github.com/juju/juju/network"
    15  )
    16  
    17  type UtilsSuite struct {
    18  	testing.IsolationSuite
    19  }
    20  
    21  var _ = gc.Suite(&UtilsSuite{})
    22  
    23  func (s *UtilsSuite) TestSupportsIPv6Error(c *gc.C) {
    24  	s.PatchValue(network.NetListen, func(netFamily, bindAddress string) (net.Listener, error) {
    25  		c.Check(netFamily, gc.Equals, "tcp6")
    26  		c.Check(bindAddress, gc.Equals, "[::1]:0")
    27  		return nil, errors.New("boom!")
    28  	})
    29  	c.Check(network.SupportsIPv6(), jc.IsFalse)
    30  }
    31  
    32  func (s *UtilsSuite) TestSupportsIPv6OK(c *gc.C) {
    33  	s.PatchValue(network.NetListen, func(_, _ string) (net.Listener, error) {
    34  		return &mockListener{}, nil
    35  	})
    36  	c.Check(network.SupportsIPv6(), jc.IsTrue)
    37  }
    38  
    39  type mockListener struct {
    40  	net.Listener
    41  }
    42  
    43  func (*mockListener) Close() error {
    44  	return nil
    45  }