github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/api/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 jc "github.com/juju/testing/checkers" 8 "github.com/juju/utils/proxy" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/api/base" 12 apitesting "github.com/juju/juju/api/base/testing" 13 "github.com/juju/juju/api/proxyupdater" 14 "github.com/juju/juju/apiserver/params" 15 coretesting "github.com/juju/juju/testing" 16 "github.com/juju/juju/watcher" 17 "github.com/juju/names" 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.CheckArgs) (*int, *proxyupdater.API) { 27 var called int 28 apiCaller := apitesting.CheckingAPICallerMultiArgs(c, args, &called, nil) 29 api, err := proxyupdater.NewAPI(apiCaller, names.NewUnitTag("u/0")) 30 c.Assert(err, gc.IsNil) 31 c.Assert(api, gc.NotNil) 32 c.Assert(called, gc.Equals, 0) 33 34 return &called, api 35 } 36 37 func (s *ProxyUpdaterSuite) TestNewAPISuccess(c *gc.C) { 38 newAPI(c, nil) 39 } 40 41 func (s *ProxyUpdaterSuite) TestNilAPICallerFails(c *gc.C) { 42 api, err := proxyupdater.NewAPI(nil, names.NewUnitTag("u/0")) 43 c.Check(api, gc.IsNil) 44 c.Check(err, gc.ErrorMatches, "caller is nil") 45 } 46 47 func (s *ProxyUpdaterSuite) TestNilTagFails(c *gc.C) { 48 var args []apitesting.CheckArgs 49 var calls int 50 apiCaller := apitesting.CheckingAPICallerMultiArgs(c, args, &calls, nil) 51 api, err := proxyupdater.NewAPI(apiCaller, nil) 52 c.Check(api, gc.IsNil) 53 c.Check(err, gc.ErrorMatches, "tag is nil") 54 } 55 56 func (s *ProxyUpdaterSuite) TestWatchForProxyConfigAndAPIHostPortChanges(c *gc.C) { 57 res := params.NotifyWatchResults{ 58 Results: []params.NotifyWatchResult{params.NotifyWatchResult{ 59 NotifyWatcherId: "4242", 60 }}, 61 } 62 63 fake := &struct { 64 watcher.NotifyWatcher 65 }{} 66 s.PatchValue(proxyupdater.NewNotifyWatcher, func(caller base.APICaller, result params.NotifyWatchResult) watcher.NotifyWatcher { 67 c.Assert(result, gc.DeepEquals, res.Results[0]) 68 return fake 69 }) 70 71 args := []apitesting.CheckArgs{{ 72 Facade: "ProxyUpdater", 73 Method: "WatchForProxyConfigAndAPIHostPortChanges", 74 Results: res, 75 }} 76 called, api := newAPI(c, args) 77 78 watcher, err := api.WatchForProxyConfigAndAPIHostPortChanges() 79 c.Check(*called, jc.GreaterThan, 0) 80 c.Check(err, jc.ErrorIsNil) 81 c.Check(watcher, gc.Equals, fake) 82 } 83 84 func (s *ProxyUpdaterSuite) TestProxyConfig(c *gc.C) { 85 conf := params.ProxyConfigResult{ 86 ProxySettings: params.ProxyConfig{ 87 HTTP: "http", 88 HTTPS: "https", 89 FTP: "ftp", 90 NoProxy: "NoProxy", 91 }, 92 APTProxySettings: params.ProxyConfig{ 93 HTTP: "http-apt", 94 HTTPS: "https-apt", 95 FTP: "ftp-apt", 96 NoProxy: "NoProxy-apt", 97 }, 98 } 99 expected := params.ProxyConfigResults{ 100 Results: []params.ProxyConfigResult{conf}, 101 } 102 103 args := []apitesting.CheckArgs{{ 104 Facade: "ProxyUpdater", 105 Method: "ProxyConfig", 106 Results: expected, 107 }} 108 called, api := newAPI(c, args) 109 110 proxySettings, APTProxySettings, err := api.ProxyConfig() 111 c.Assert(*called, gc.Equals, 1) 112 c.Assert(err, jc.ErrorIsNil) 113 c.Check(proxySettings, jc.DeepEquals, proxy.Settings{ 114 Http: "http", 115 Https: "https", 116 Ftp: "ftp", 117 NoProxy: "NoProxy", 118 }) 119 c.Check(APTProxySettings, jc.DeepEquals, proxy.Settings{ 120 Http: "http-apt", 121 Https: "https-apt", 122 Ftp: "ftp-apt", 123 NoProxy: "NoProxy-apt", 124 }) 125 }