Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(519)

Side by Side Diff: utils/proxy/proxy_test.go

Issue 92610045: New utils/proxy package.
Patch Set: New utils/proxy package. Created 10 years, 10 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « utils/proxy/proxy.go ('k') | worker/machineenvironmentworker/machineenvironmentworker.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 }
OLDNEW
« no previous file with comments | « utils/proxy/proxy.go ('k') | worker/machineenvironmentworker/machineenvironmentworker.go » ('j') | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b