github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/api/agent/proxyupdater/proxyupdater_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package proxyupdater_test 5 6 import ( 7 "github.com/juju/names/v5" 8 "github.com/juju/proxy" 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/api/agent/proxyupdater" 13 "github.com/juju/juju/api/base" 14 apitesting "github.com/juju/juju/api/base/testing" 15 "github.com/juju/juju/core/watcher" 16 "github.com/juju/juju/rpc/params" 17 coretesting "github.com/juju/juju/testing" 18 ) 19 20 type ProxyUpdaterSuite struct { 21 coretesting.BaseSuite 22 } 23 24 var _ = gc.Suite(&ProxyUpdaterSuite{}) 25 26 func newAPI(c *gc.C, args ...apitesting.APICall) (*int, *proxyupdater.API) { 27 apiCaller := apitesting.APICallChecker(c, args...) 28 api, err := proxyupdater.NewAPI(apiCaller.APICallerFunc, names.NewUnitTag("u/0")) 29 c.Assert(err, gc.IsNil) 30 c.Assert(api, gc.NotNil) 31 c.Assert(apiCaller.CallCount, gc.Equals, 0) 32 33 return &apiCaller.CallCount, api 34 } 35 36 func (s *ProxyUpdaterSuite) TestNewAPISuccess(c *gc.C) { 37 newAPI(c) 38 } 39 40 func (s *ProxyUpdaterSuite) TestNilAPICallerFails(c *gc.C) { 41 api, err := proxyupdater.NewAPI(nil, names.NewUnitTag("u/0")) 42 c.Check(api, gc.IsNil) 43 c.Check(err, gc.ErrorMatches, "caller is nil") 44 } 45 46 func (s *ProxyUpdaterSuite) TestNilTagFails(c *gc.C) { 47 apiCaller := apitesting.APICallChecker(c) 48 api, err := proxyupdater.NewAPI(apiCaller, nil) 49 c.Check(api, gc.IsNil) 50 c.Check(err, gc.ErrorMatches, "tag is nil") 51 } 52 53 func (s *ProxyUpdaterSuite) TestWatchForProxyConfigAndAPIHostPortChanges(c *gc.C) { 54 res := params.NotifyWatchResults{ 55 Results: []params.NotifyWatchResult{{ 56 NotifyWatcherId: "4242", 57 }}, 58 } 59 60 fake := &struct { 61 watcher.NotifyWatcher 62 }{} 63 s.PatchValue(proxyupdater.NewNotifyWatcher, func(caller base.APICaller, result params.NotifyWatchResult) watcher.NotifyWatcher { 64 c.Assert(result, gc.DeepEquals, res.Results[0]) 65 return fake 66 }) 67 68 called, api := newAPI(c, apitesting.APICall{ 69 Facade: "ProxyUpdater", 70 Method: "WatchForProxyConfigAndAPIHostPortChanges", 71 Results: res, 72 }) 73 74 watcher, err := api.WatchForProxyConfigAndAPIHostPortChanges() 75 c.Check(*called, jc.GreaterThan, 0) 76 c.Check(err, jc.ErrorIsNil) 77 c.Check(watcher, gc.Equals, fake) 78 } 79 80 func (s *ProxyUpdaterSuite) TestProxyConfig(c *gc.C) { 81 conf := params.ProxyConfigResult{ 82 LegacyProxySettings: params.ProxyConfig{ 83 HTTP: "http-legacy", 84 HTTPS: "https-legacy", 85 FTP: "ftp-legacy", 86 NoProxy: "no-proxy-legacy", 87 }, 88 JujuProxySettings: params.ProxyConfig{ 89 HTTP: "http-juju", 90 HTTPS: "https-juju", 91 FTP: "ftp-juju", 92 NoProxy: "no-proxy-juju", 93 }, 94 APTProxySettings: params.ProxyConfig{ 95 HTTP: "http-apt", 96 HTTPS: "https-apt", 97 FTP: "ftp-apt", 98 }, 99 SnapProxySettings: params.ProxyConfig{ 100 HTTP: "http-snap", 101 HTTPS: "https-snap", 102 }, 103 AptMirror: "http://mirror", 104 } 105 106 called, api := newAPI(c, apitesting.APICall{ 107 Facade: "ProxyUpdater", 108 Method: "ProxyConfig", 109 Results: params.ProxyConfigResults{ 110 Results: []params.ProxyConfigResult{conf}, 111 }, 112 }) 113 114 config, err := api.ProxyConfig() 115 c.Assert(*called, gc.Equals, 1) 116 c.Assert(err, jc.ErrorIsNil) 117 c.Check(config.LegacyProxy, jc.DeepEquals, proxy.Settings{ 118 Http: "http-legacy", 119 Https: "https-legacy", 120 Ftp: "ftp-legacy", 121 NoProxy: "no-proxy-legacy", 122 }) 123 c.Check(config.JujuProxy, jc.DeepEquals, proxy.Settings{ 124 Http: "http-juju", 125 Https: "https-juju", 126 Ftp: "ftp-juju", 127 NoProxy: "no-proxy-juju", 128 }) 129 c.Check(config.APTProxy, jc.DeepEquals, proxy.Settings{ 130 Http: "http-apt", 131 Https: "https-apt", 132 Ftp: "ftp-apt", 133 }) 134 c.Check(config.SnapProxy, jc.DeepEquals, proxy.Settings{ 135 Http: "http-snap", 136 Https: "https-snap", 137 }) 138 c.Check(config.AptMirror, gc.Equals, "http://mirror") 139 }