github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/environs/manual/addresses_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Copyright 2016 Cloudbase Solutions SRL
     3  // Licensed under the AGPLv3, see LICENCE file for details.
     4  
     5  package manual_test
     6  
     7  import (
     8  	"errors"
     9  
    10  	jc "github.com/juju/testing/checkers"
    11  	gc "gopkg.in/check.v1"
    12  
    13  	"github.com/juju/juju/core/network"
    14  	"github.com/juju/juju/environs/manual"
    15  	"github.com/juju/juju/testing"
    16  )
    17  
    18  const (
    19  	invalidHost = "testing.invalid"
    20  	validHost   = "testing.valid"
    21  )
    22  
    23  type addressesSuite struct {
    24  	testing.BaseSuite
    25  	netLookupHostCalled int
    26  }
    27  
    28  var _ = gc.Suite(&addressesSuite{})
    29  
    30  func (s *addressesSuite) SetUpTest(c *gc.C) {
    31  	s.netLookupHostCalled = 0
    32  	s.PatchValue(manual.NetLookupHost, func(host string) ([]string, error) {
    33  		s.netLookupHostCalled++
    34  		if host == invalidHost {
    35  			return nil, errors.New("invalid host: " + invalidHost)
    36  		}
    37  		return []string{"127.0.0.1"}, nil
    38  	})
    39  }
    40  
    41  func (s *addressesSuite) TestHostAddress(c *gc.C) {
    42  	addr, err := manual.HostAddress(validHost)
    43  	c.Assert(s.netLookupHostCalled, gc.Equals, 1)
    44  	c.Assert(err, jc.ErrorIsNil)
    45  	c.Assert(addr, gc.Equals, network.NewMachineAddress(validHost, network.WithScope(network.ScopePublic)).AsProviderAddress())
    46  }
    47  
    48  func (s *addressesSuite) TestHostAddressError(c *gc.C) {
    49  	addr, err := manual.HostAddress(invalidHost)
    50  	c.Assert(s.netLookupHostCalled, gc.Equals, 1)
    51  	c.Assert(err, gc.ErrorMatches, "invalid host: "+invalidHost)
    52  	c.Assert(addr, gc.Equals, network.ProviderAddress{})
    53  }
    54  
    55  func (s *addressesSuite) TestHostAddressIPv4(c *gc.C) {
    56  	addr, err := manual.HostAddress("127.0.0.1")
    57  	c.Assert(s.netLookupHostCalled, gc.Equals, 0)
    58  	c.Assert(err, jc.ErrorIsNil)
    59  	c.Assert(addr, gc.Equals, network.NewMachineAddress("127.0.0.1", network.WithScope(network.ScopePublic)).AsProviderAddress())
    60  }
    61  
    62  func (s *addressesSuite) TestHostAddressIPv6(c *gc.C) {
    63  	addr, err := manual.HostAddress("::1")
    64  	c.Assert(s.netLookupHostCalled, gc.Equals, 0)
    65  	c.Assert(err, jc.ErrorIsNil)
    66  	c.Assert(addr, gc.Equals, network.NewMachineAddress("::1", network.WithScope(network.ScopePublic)).AsProviderAddress())
    67  }