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 }