OLD | NEW |
1 // Copyright 2013 Canonical Ltd. | 1 // Copyright 2013 Canonical Ltd. |
2 // Licensed under the AGPLv3, see LICENCE file for details. | 2 // Licensed under the AGPLv3, see LICENCE file for details. |
3 | 3 |
4 package osenv_test | 4 package proxy_test |
5 | 5 |
6 import ( | 6 import ( |
7 "os" | 7 "os" |
8 | 8 |
9 gc "launchpad.net/gocheck" | 9 gc "launchpad.net/gocheck" |
10 | 10 |
11 "launchpad.net/juju-core/juju/osenv" | |
12 "launchpad.net/juju-core/testing" | 11 "launchpad.net/juju-core/testing" |
| 12 "launchpad.net/juju-core/utils/proxy" |
13 ) | 13 ) |
14 | 14 |
15 type proxySuite struct { | 15 type proxySuite struct { |
16 testing.BaseSuite | 16 testing.BaseSuite |
17 } | 17 } |
18 | 18 |
19 var _ = gc.Suite(&proxySuite{}) | 19 var _ = gc.Suite(&proxySuite{}) |
20 | 20 |
21 func (s *proxySuite) TestDetectNoSettings(c *gc.C) { | 21 func (s *proxySuite) TestDetectNoSettings(c *gc.C) { |
22 // Patch all of the environment variables we check out just in case the | 22 // Patch all of the environment variables we check out just in case the |
23 // user has one set. | 23 // user has one set. |
24 s.PatchEnvironment("http_proxy", "") | 24 s.PatchEnvironment("http_proxy", "") |
25 s.PatchEnvironment("HTTP_PROXY", "") | 25 s.PatchEnvironment("HTTP_PROXY", "") |
26 s.PatchEnvironment("https_proxy", "") | 26 s.PatchEnvironment("https_proxy", "") |
27 s.PatchEnvironment("HTTPS_PROXY", "") | 27 s.PatchEnvironment("HTTPS_PROXY", "") |
28 s.PatchEnvironment("ftp_proxy", "") | 28 s.PatchEnvironment("ftp_proxy", "") |
29 s.PatchEnvironment("FTP_PROXY", "") | 29 s.PatchEnvironment("FTP_PROXY", "") |
30 s.PatchEnvironment("no_proxy", "") | 30 s.PatchEnvironment("no_proxy", "") |
31 s.PatchEnvironment("NO_PROXY", "") | 31 s.PatchEnvironment("NO_PROXY", "") |
32 | 32 |
33 » proxies := osenv.DetectProxies() | 33 » proxies := proxy.DetectProxies() |
34 | 34 |
35 » c.Assert(proxies, gc.DeepEquals, osenv.ProxySettings{}) | 35 » c.Assert(proxies, gc.DeepEquals, proxy.Settings{}) |
36 } | 36 } |
37 | 37 |
38 func (s *proxySuite) TestDetectPrimary(c *gc.C) { | 38 func (s *proxySuite) TestDetectPrimary(c *gc.C) { |
39 // Patch all of the environment variables we check out just in case the | 39 // Patch all of the environment variables we check out just in case the |
40 // user has one set. | 40 // user has one set. |
41 s.PatchEnvironment("http_proxy", "http://user@10.0.0.1") | 41 s.PatchEnvironment("http_proxy", "http://user@10.0.0.1") |
42 s.PatchEnvironment("HTTP_PROXY", "") | 42 s.PatchEnvironment("HTTP_PROXY", "") |
43 s.PatchEnvironment("https_proxy", "https://user@10.0.0.1") | 43 s.PatchEnvironment("https_proxy", "https://user@10.0.0.1") |
44 s.PatchEnvironment("HTTPS_PROXY", "") | 44 s.PatchEnvironment("HTTPS_PROXY", "") |
45 s.PatchEnvironment("ftp_proxy", "ftp://user@10.0.0.1") | 45 s.PatchEnvironment("ftp_proxy", "ftp://user@10.0.0.1") |
46 s.PatchEnvironment("FTP_PROXY", "") | 46 s.PatchEnvironment("FTP_PROXY", "") |
47 s.PatchEnvironment("no_proxy", "10.0.3.1,localhost") | 47 s.PatchEnvironment("no_proxy", "10.0.3.1,localhost") |
48 s.PatchEnvironment("NO_PROXY", "") | 48 s.PatchEnvironment("NO_PROXY", "") |
49 | 49 |
50 » proxies := osenv.DetectProxies() | 50 » proxies := proxy.DetectProxies() |
51 | 51 |
52 » c.Assert(proxies, gc.DeepEquals, osenv.ProxySettings{ | 52 » c.Assert(proxies, gc.DeepEquals, proxy.Settings{ |
53 Http: "http://user@10.0.0.1", | 53 Http: "http://user@10.0.0.1", |
54 Https: "https://user@10.0.0.1", | 54 Https: "https://user@10.0.0.1", |
55 Ftp: "ftp://user@10.0.0.1", | 55 Ftp: "ftp://user@10.0.0.1", |
56 NoProxy: "10.0.3.1,localhost", | 56 NoProxy: "10.0.3.1,localhost", |
57 }) | 57 }) |
58 } | 58 } |
59 | 59 |
60 func (s *proxySuite) TestDetectFallback(c *gc.C) { | 60 func (s *proxySuite) TestDetectFallback(c *gc.C) { |
61 // Patch all of the environment variables we check out just in case the | 61 // Patch all of the environment variables we check out just in case the |
62 // user has one set. | 62 // user has one set. |
63 s.PatchEnvironment("http_proxy", "") | 63 s.PatchEnvironment("http_proxy", "") |
64 s.PatchEnvironment("HTTP_PROXY", "http://user@10.0.0.2") | 64 s.PatchEnvironment("HTTP_PROXY", "http://user@10.0.0.2") |
65 s.PatchEnvironment("https_proxy", "") | 65 s.PatchEnvironment("https_proxy", "") |
66 s.PatchEnvironment("HTTPS_PROXY", "https://user@10.0.0.2") | 66 s.PatchEnvironment("HTTPS_PROXY", "https://user@10.0.0.2") |
67 s.PatchEnvironment("ftp_proxy", "") | 67 s.PatchEnvironment("ftp_proxy", "") |
68 s.PatchEnvironment("FTP_PROXY", "ftp://user@10.0.0.2") | 68 s.PatchEnvironment("FTP_PROXY", "ftp://user@10.0.0.2") |
69 s.PatchEnvironment("no_proxy", "") | 69 s.PatchEnvironment("no_proxy", "") |
70 s.PatchEnvironment("NO_PROXY", "10.0.3.1,localhost") | 70 s.PatchEnvironment("NO_PROXY", "10.0.3.1,localhost") |
71 | 71 |
72 » proxies := osenv.DetectProxies() | 72 » proxies := proxy.DetectProxies() |
73 | 73 |
74 » c.Assert(proxies, gc.DeepEquals, osenv.ProxySettings{ | 74 » c.Assert(proxies, gc.DeepEquals, proxy.Settings{ |
75 Http: "http://user@10.0.0.2", | 75 Http: "http://user@10.0.0.2", |
76 Https: "https://user@10.0.0.2", | 76 Https: "https://user@10.0.0.2", |
77 Ftp: "ftp://user@10.0.0.2", | 77 Ftp: "ftp://user@10.0.0.2", |
78 NoProxy: "10.0.3.1,localhost", | 78 NoProxy: "10.0.3.1,localhost", |
79 }) | 79 }) |
80 } | 80 } |
81 | 81 |
82 func (s *proxySuite) TestDetectPrimaryPreference(c *gc.C) { | 82 func (s *proxySuite) TestDetectPrimaryPreference(c *gc.C) { |
83 // Patch all of the environment variables we check out just in case the | 83 // Patch all of the environment variables we check out just in case the |
84 // user has one set. | 84 // user has one set. |
85 s.PatchEnvironment("http_proxy", "http://user@10.0.0.1") | 85 s.PatchEnvironment("http_proxy", "http://user@10.0.0.1") |
86 s.PatchEnvironment("https_proxy", "https://user@10.0.0.1") | 86 s.PatchEnvironment("https_proxy", "https://user@10.0.0.1") |
87 s.PatchEnvironment("ftp_proxy", "ftp://user@10.0.0.1") | 87 s.PatchEnvironment("ftp_proxy", "ftp://user@10.0.0.1") |
88 s.PatchEnvironment("no_proxy", "10.0.3.1,localhost") | 88 s.PatchEnvironment("no_proxy", "10.0.3.1,localhost") |
89 s.PatchEnvironment("HTTP_PROXY", "http://user@10.0.0.2") | 89 s.PatchEnvironment("HTTP_PROXY", "http://user@10.0.0.2") |
90 s.PatchEnvironment("HTTPS_PROXY", "https://user@10.0.0.2") | 90 s.PatchEnvironment("HTTPS_PROXY", "https://user@10.0.0.2") |
91 s.PatchEnvironment("FTP_PROXY", "ftp://user@10.0.0.2") | 91 s.PatchEnvironment("FTP_PROXY", "ftp://user@10.0.0.2") |
92 s.PatchEnvironment("NO_PROXY", "localhost") | 92 s.PatchEnvironment("NO_PROXY", "localhost") |
93 | 93 |
94 » proxies := osenv.DetectProxies() | 94 » proxies := proxy.DetectProxies() |
95 | 95 |
96 » c.Assert(proxies, gc.DeepEquals, osenv.ProxySettings{ | 96 » c.Assert(proxies, gc.DeepEquals, proxy.Settings{ |
97 Http: "http://user@10.0.0.1", | 97 Http: "http://user@10.0.0.1", |
98 Https: "https://user@10.0.0.1", | 98 Https: "https://user@10.0.0.1", |
99 Ftp: "ftp://user@10.0.0.1", | 99 Ftp: "ftp://user@10.0.0.1", |
100 NoProxy: "10.0.3.1,localhost", | 100 NoProxy: "10.0.3.1,localhost", |
101 }) | 101 }) |
102 } | 102 } |
103 | 103 |
104 func (s *proxySuite) TestAsScriptEnvironmentEmpty(c *gc.C) { | 104 func (s *proxySuite) TestAsScriptEnvironmentEmpty(c *gc.C) { |
105 » proxies := osenv.ProxySettings{} | 105 » proxies := proxy.Settings{} |
106 c.Assert(proxies.AsScriptEnvironment(), gc.Equals, "") | 106 c.Assert(proxies.AsScriptEnvironment(), gc.Equals, "") |
107 } | 107 } |
108 | 108 |
109 func (s *proxySuite) TestAsScriptEnvironmentOneValue(c *gc.C) { | 109 func (s *proxySuite) TestAsScriptEnvironmentOneValue(c *gc.C) { |
110 » proxies := osenv.ProxySettings{ | 110 » proxies := proxy.Settings{ |
111 Http: "some-value", | 111 Http: "some-value", |
112 } | 112 } |
113 expected := ` | 113 expected := ` |
114 export http_proxy=some-value | 114 export http_proxy=some-value |
115 export HTTP_PROXY=some-value`[1:] | 115 export HTTP_PROXY=some-value`[1:] |
116 c.Assert(proxies.AsScriptEnvironment(), gc.Equals, expected) | 116 c.Assert(proxies.AsScriptEnvironment(), gc.Equals, expected) |
117 } | 117 } |
118 | 118 |
119 func (s *proxySuite) TestAsScriptEnvironmentAllValue(c *gc.C) { | 119 func (s *proxySuite) TestAsScriptEnvironmentAllValue(c *gc.C) { |
120 » proxies := osenv.ProxySettings{ | 120 » proxies := proxy.Settings{ |
121 Http: "some-value", | 121 Http: "some-value", |
122 Https: "special", | 122 Https: "special", |
123 Ftp: "who uses this?", | 123 Ftp: "who uses this?", |
124 NoProxy: "10.0.3.1,localhost", | 124 NoProxy: "10.0.3.1,localhost", |
125 } | 125 } |
126 expected := ` | 126 expected := ` |
127 export http_proxy=some-value | 127 export http_proxy=some-value |
128 export HTTP_PROXY=some-value | 128 export HTTP_PROXY=some-value |
129 export https_proxy=special | 129 export https_proxy=special |
130 export HTTPS_PROXY=special | 130 export HTTPS_PROXY=special |
131 export ftp_proxy=who uses this? | 131 export ftp_proxy=who uses this? |
132 export FTP_PROXY=who uses this? | 132 export FTP_PROXY=who uses this? |
133 export no_proxy=10.0.3.1,localhost | 133 export no_proxy=10.0.3.1,localhost |
134 export NO_PROXY=10.0.3.1,localhost`[1:] | 134 export NO_PROXY=10.0.3.1,localhost`[1:] |
135 c.Assert(proxies.AsScriptEnvironment(), gc.Equals, expected) | 135 c.Assert(proxies.AsScriptEnvironment(), gc.Equals, expected) |
136 } | 136 } |
137 | 137 |
138 func (s *proxySuite) TestAsEnvironmentValuesEmpty(c *gc.C) { | 138 func (s *proxySuite) TestAsEnvironmentValuesEmpty(c *gc.C) { |
139 » proxies := osenv.ProxySettings{} | 139 » proxies := proxy.Settings{} |
140 c.Assert(proxies.AsEnvironmentValues(), gc.HasLen, 0) | 140 c.Assert(proxies.AsEnvironmentValues(), gc.HasLen, 0) |
141 } | 141 } |
142 | 142 |
143 func (s *proxySuite) TestAsEnvironmentValuesOneValue(c *gc.C) { | 143 func (s *proxySuite) TestAsEnvironmentValuesOneValue(c *gc.C) { |
144 » proxies := osenv.ProxySettings{ | 144 » proxies := proxy.Settings{ |
145 Http: "some-value", | 145 Http: "some-value", |
146 } | 146 } |
147 expected := []string{ | 147 expected := []string{ |
148 "http_proxy=some-value", | 148 "http_proxy=some-value", |
149 "HTTP_PROXY=some-value", | 149 "HTTP_PROXY=some-value", |
150 } | 150 } |
151 c.Assert(proxies.AsEnvironmentValues(), gc.DeepEquals, expected) | 151 c.Assert(proxies.AsEnvironmentValues(), gc.DeepEquals, expected) |
152 } | 152 } |
153 | 153 |
154 func (s *proxySuite) TestAsEnvironmentValuesAllValue(c *gc.C) { | 154 func (s *proxySuite) TestAsEnvironmentValuesAllValue(c *gc.C) { |
155 » proxies := osenv.ProxySettings{ | 155 » proxies := proxy.Settings{ |
156 Http: "some-value", | 156 Http: "some-value", |
157 Https: "special", | 157 Https: "special", |
158 Ftp: "who uses this?", | 158 Ftp: "who uses this?", |
159 NoProxy: "10.0.3.1,localhost", | 159 NoProxy: "10.0.3.1,localhost", |
160 } | 160 } |
161 expected := []string{ | 161 expected := []string{ |
162 "http_proxy=some-value", | 162 "http_proxy=some-value", |
163 "HTTP_PROXY=some-value", | 163 "HTTP_PROXY=some-value", |
164 "https_proxy=special", | 164 "https_proxy=special", |
165 "HTTPS_PROXY=special", | 165 "HTTPS_PROXY=special", |
166 "ftp_proxy=who uses this?", | 166 "ftp_proxy=who uses this?", |
167 "FTP_PROXY=who uses this?", | 167 "FTP_PROXY=who uses this?", |
168 "no_proxy=10.0.3.1,localhost", | 168 "no_proxy=10.0.3.1,localhost", |
169 "NO_PROXY=10.0.3.1,localhost", | 169 "NO_PROXY=10.0.3.1,localhost", |
170 } | 170 } |
171 c.Assert(proxies.AsEnvironmentValues(), gc.DeepEquals, expected) | 171 c.Assert(proxies.AsEnvironmentValues(), gc.DeepEquals, expected) |
172 } | 172 } |
173 | 173 |
174 func (s *proxySuite) TestSetEnvironmentValues(c *gc.C) { | 174 func (s *proxySuite) TestSetEnvironmentValues(c *gc.C) { |
175 s.PatchEnvironment("http_proxy", "initial") | 175 s.PatchEnvironment("http_proxy", "initial") |
176 s.PatchEnvironment("HTTP_PROXY", "initial") | 176 s.PatchEnvironment("HTTP_PROXY", "initial") |
177 s.PatchEnvironment("https_proxy", "initial") | 177 s.PatchEnvironment("https_proxy", "initial") |
178 s.PatchEnvironment("HTTPS_PROXY", "initial") | 178 s.PatchEnvironment("HTTPS_PROXY", "initial") |
179 s.PatchEnvironment("ftp_proxy", "initial") | 179 s.PatchEnvironment("ftp_proxy", "initial") |
180 s.PatchEnvironment("FTP_PROXY", "initial") | 180 s.PatchEnvironment("FTP_PROXY", "initial") |
181 s.PatchEnvironment("no_proxy", "initial") | 181 s.PatchEnvironment("no_proxy", "initial") |
182 s.PatchEnvironment("NO_PROXY", "initial") | 182 s.PatchEnvironment("NO_PROXY", "initial") |
183 | 183 |
184 » proxy := osenv.ProxySettings{ | 184 » proxySettings := proxy.Settings{ |
185 Http: "http proxy", | 185 Http: "http proxy", |
186 Https: "https proxy", | 186 Https: "https proxy", |
187 // Ftp left blank to show clearing env. | 187 // Ftp left blank to show clearing env. |
188 NoProxy: "10.0.3.1,localhost", | 188 NoProxy: "10.0.3.1,localhost", |
189 } | 189 } |
190 » proxy.SetEnvironmentValues() | 190 » proxySettings.SetEnvironmentValues() |
191 | 191 |
192 » obtained := osenv.DetectProxies() | 192 » obtained := proxy.DetectProxies() |
193 | 193 |
194 » c.Assert(obtained, gc.DeepEquals, proxy) | 194 » c.Assert(obtained, gc.DeepEquals, proxySettings) |
195 | 195 |
196 c.Assert(os.Getenv("http_proxy"), gc.Equals, "http proxy") | 196 c.Assert(os.Getenv("http_proxy"), gc.Equals, "http proxy") |
197 c.Assert(os.Getenv("HTTP_PROXY"), gc.Equals, "http proxy") | 197 c.Assert(os.Getenv("HTTP_PROXY"), gc.Equals, "http proxy") |
198 c.Assert(os.Getenv("https_proxy"), gc.Equals, "https proxy") | 198 c.Assert(os.Getenv("https_proxy"), gc.Equals, "https proxy") |
199 c.Assert(os.Getenv("HTTPS_PROXY"), gc.Equals, "https proxy") | 199 c.Assert(os.Getenv("HTTPS_PROXY"), gc.Equals, "https proxy") |
200 c.Assert(os.Getenv("ftp_proxy"), gc.Equals, "") | 200 c.Assert(os.Getenv("ftp_proxy"), gc.Equals, "") |
201 c.Assert(os.Getenv("FTP_PROXY"), gc.Equals, "") | 201 c.Assert(os.Getenv("FTP_PROXY"), gc.Equals, "") |
202 c.Assert(os.Getenv("no_proxy"), gc.Equals, "10.0.3.1,localhost") | 202 c.Assert(os.Getenv("no_proxy"), gc.Equals, "10.0.3.1,localhost") |
203 c.Assert(os.Getenv("NO_PROXY"), gc.Equals, "10.0.3.1,localhost") | 203 c.Assert(os.Getenv("NO_PROXY"), gc.Equals, "10.0.3.1,localhost") |
204 } | 204 } |
OLD | NEW |