~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/Azure/azure-sdk-for-go/core/http/proxy_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2009 The Go Authors. All rights reserved.
 
2
// Use of this source code is governed by a BSD-style
 
3
// license that can be found in the LICENSE file.
 
4
 
 
5
package http
 
6
 
 
7
import (
 
8
        "net/url"
 
9
        "os"
 
10
        "testing"
 
11
)
 
12
 
 
13
// TODO(mattn):
 
14
//      test ProxyAuth
 
15
 
 
16
var UseProxyTests = []struct {
 
17
        host  string
 
18
        match bool
 
19
}{
 
20
        // Never proxy localhost:
 
21
        {"localhost:80", false},
 
22
        {"127.0.0.1", false},
 
23
        {"127.0.0.2", false},
 
24
        {"[::1]", false},
 
25
        {"[::2]", true}, // not a loopback address
 
26
 
 
27
        {"barbaz.net", false},     // match as .barbaz.net
 
28
        {"foobar.com", false},     // have a port but match
 
29
        {"foofoobar.com", true},   // not match as a part of foobar.com
 
30
        {"baz.com", true},         // not match as a part of barbaz.com
 
31
        {"localhost.net", true},   // not match as suffix of address
 
32
        {"local.localhost", true}, // not match as prefix as address
 
33
        {"barbarbaz.net", true},   // not match because NO_PROXY have a '.'
 
34
        {"www.foobar.com", false}, // match because NO_PROXY includes "foobar.com"
 
35
}
 
36
 
 
37
func TestUseProxy(t *testing.T) {
 
38
        ResetProxyEnv()
 
39
        os.Setenv("NO_PROXY", "foobar.com, .barbaz.net")
 
40
        for _, test := range UseProxyTests {
 
41
                if useProxy(test.host+":80") != test.match {
 
42
                        t.Errorf("useProxy(%v) = %v, want %v", test.host, !test.match, test.match)
 
43
                }
 
44
        }
 
45
}
 
46
 
 
47
var cacheKeysTests = []struct {
 
48
        proxy  string
 
49
        scheme string
 
50
        addr   string
 
51
        key    string
 
52
}{
 
53
        {"", "http", "foo.com", "|http|foo.com"},
 
54
        {"", "https", "foo.com", "|https|foo.com"},
 
55
        {"http://foo.com", "http", "foo.com", "http://foo.com|http|"},
 
56
        {"http://foo.com", "https", "foo.com", "http://foo.com|https|foo.com"},
 
57
}
 
58
 
 
59
func TestCacheKeys(t *testing.T) {
 
60
        for _, tt := range cacheKeysTests {
 
61
                var proxy *url.URL
 
62
                if tt.proxy != "" {
 
63
                        u, err := url.Parse(tt.proxy)
 
64
                        if err != nil {
 
65
                                t.Fatal(err)
 
66
                        }
 
67
                        proxy = u
 
68
                }
 
69
                cm := connectMethod{proxy, tt.scheme, tt.addr}
 
70
                if got := cm.key().String(); got != tt.key {
 
71
                        t.Fatalf("{%q, %q, %q} cache key = %q; want %q", tt.proxy, tt.scheme, tt.addr, got, tt.key)
 
72
                }
 
73
        }
 
74
}
 
75
 
 
76
func ResetProxyEnv() {
 
77
        for _, v := range []string{"HTTP_PROXY", "http_proxy", "NO_PROXY", "no_proxy"} {
 
78
                os.Setenv(v, "")
 
79
        }
 
80
        ResetCachedEnvironment()
 
81
}