ref(getter): change NewHTTPGetter and NewPluginGetter to return type Getter

Signed-off-by: Matthew Fisher <matt.fisher@microsoft.com>
pull/5922/head
Matthew Fisher 5 years ago
parent 2800c56f9d
commit 6e60242a18
No known key found for this signature in database
GPG Key ID: 92AA783CBAAE8E3B

@ -124,7 +124,7 @@ func All(settings cli.EnvSettings) Providers {
result := Providers{ result := Providers{
{ {
Schemes: []string{"http", "https"}, Schemes: []string{"http", "https"},
New: newHTTPGetter, New: NewHTTPGetter,
}, },
} }
pluginDownloaders, _ := collectPlugins(settings) pluginDownloaders, _ := collectPlugins(settings)

@ -32,17 +32,6 @@ type HTTPGetter struct {
opts options opts options
} }
// SetBasicAuth sets the request's Authorization header to use the provided credentials.
func (g *HTTPGetter) SetBasicAuth(username, password string) {
g.opts.username = username
g.opts.password = password
}
// SetUserAgent sets the request's User-Agent header to use the provided agent name.
func (g *HTTPGetter) SetUserAgent(userAgent string) {
g.opts.userAgent = userAgent
}
//Get performs a Get from repo.Getter and returns the body. //Get performs a Get from repo.Getter and returns the body.
func (g *HTTPGetter) Get(href string) (*bytes.Buffer, error) { func (g *HTTPGetter) Get(href string) (*bytes.Buffer, error) {
return g.get(href) return g.get(href)
@ -79,13 +68,8 @@ func (g *HTTPGetter) get(href string) (*bytes.Buffer, error) {
return buf, err return buf, err
} }
// newHTTPGetter constructs a valid http/https client as Getter // NewHTTPGetter constructs a valid http/https client as a Getter
func newHTTPGetter(options ...Option) (Getter, error) { func NewHTTPGetter(options ...Option) (Getter, error) {
return NewHTTPGetter(options...)
}
// NewHTTPGetter constructs a valid http/https client as HTTPGetter
func NewHTTPGetter(options ...Option) (*HTTPGetter, error) {
var client HTTPGetter var client HTTPGetter
for _, opt := range options { for _, opt := range options {

@ -28,22 +28,22 @@ import (
) )
func TestHTTPGetter(t *testing.T) { func TestHTTPGetter(t *testing.T) {
g, err := newHTTPGetter(WithURL("http://example.com")) g, err := NewHTTPGetter(WithURL("http://example.com"))
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if hg, ok := g.(*HTTPGetter); !ok { if hg, ok := g.(*HTTPGetter); !ok {
t.Fatal("Expected newHTTPGetter to produce an httpGetter") t.Fatal("Expected NewHTTPGetter to produce an *HTTPGetter")
} else if hg.client != http.DefaultClient { } else if hg.client != http.DefaultClient {
t.Fatal("Expected newHTTPGetter to return a default HTTP client.") t.Fatal("Expected NewHTTPGetter to return a default HTTP client.")
} }
// Test with SSL: // Test with SSL:
cd := "../../testdata" cd := "../../testdata"
join := filepath.Join join := filepath.Join
ca, pub, priv := join(cd, "ca.pem"), join(cd, "crt.pem"), join(cd, "key.pem") ca, pub, priv := join(cd, "ca.pem"), join(cd, "crt.pem"), join(cd, "key.pem")
g, err = newHTTPGetter( g, err = NewHTTPGetter(
WithURL("http://example.com"), WithURL("http://example.com"),
WithTLSClientConfig(pub, priv, ca), WithTLSClientConfig(pub, priv, ca),
) )
@ -53,18 +53,18 @@ func TestHTTPGetter(t *testing.T) {
hg, ok := g.(*HTTPGetter) hg, ok := g.(*HTTPGetter)
if !ok { if !ok {
t.Fatal("Expected newHTTPGetter to produce an httpGetter") t.Fatal("Expected NewHTTPGetter to produce an *HTTPGetter")
} }
transport, ok := hg.client.Transport.(*http.Transport) transport, ok := hg.client.Transport.(*http.Transport)
if !ok { if !ok {
t.Errorf("Expected newHTTPGetter to set up an HTTP transport") t.Errorf("Expected NewHTTPGetter to set up an HTTP transport")
} }
test.AssertGoldenString(t, transport.TLSClientConfig.ServerName, "output/httpgetter-servername.txt") test.AssertGoldenString(t, transport.TLSClientConfig.ServerName, "output/httpgetter-servername.txt")
// Test other options // Test other options
hg, err = NewHTTPGetter( g, err = NewHTTPGetter(
WithBasicAuth("I", "Am"), WithBasicAuth("I", "Am"),
WithUserAgent("Groot"), WithUserAgent("Groot"),
) )
@ -72,6 +72,11 @@ func TestHTTPGetter(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
hg, ok = g.(*HTTPGetter)
if !ok {
t.Fatal("expected NewHTTPGetter to produce an *HTTPGetter")
}
if hg.opts.username != "I" { if hg.opts.username != "I" {
t.Errorf("Expected NewHTTPGetter to contain %q as the username, got %q", "I", hg.opts.username) t.Errorf("Expected NewHTTPGetter to contain %q as the username, got %q", "I", hg.opts.username)
} }

@ -40,7 +40,7 @@ func collectPlugins(settings cli.EnvSettings) (Providers, error) {
for _, downloader := range plugin.Metadata.Downloaders { for _, downloader := range plugin.Metadata.Downloaders {
result = append(result, Provider{ result = append(result, Provider{
Schemes: downloader.Protocols, Schemes: downloader.Protocols,
New: newPluginGetter( New: NewPluginGetter(
downloader.Command, downloader.Command,
settings, settings,
plugin.Metadata.Name, plugin.Metadata.Name,
@ -82,8 +82,8 @@ func (p *pluginGetter) Get(href string) (*bytes.Buffer, error) {
return buf, nil return buf, nil
} }
// newPluginGetter constructs a valid plugin getter // NewPluginGetter constructs a valid plugin getter
func newPluginGetter(command string, settings cli.EnvSettings, name, base string) Constructor { func NewPluginGetter(command string, settings cli.EnvSettings, name, base string) Constructor {
return func(options ...Option) (Getter, error) { return func(options ...Option) (Getter, error) {
result := &pluginGetter{ result := &pluginGetter{
command: command, command: command,

@ -77,7 +77,7 @@ func TestPluginGetter(t *testing.T) {
os.Setenv("HELM_HOME", "") os.Setenv("HELM_HOME", "")
env := hh(false) env := hh(false)
pg := newPluginGetter("echo", env, "test", ".") pg := NewPluginGetter("echo", env, "test", ".")
g, err := pg() g, err := pg()
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -105,7 +105,7 @@ func TestPluginSubCommands(t *testing.T) {
os.Setenv("HELM_HOME", "") os.Setenv("HELM_HOME", "")
env := hh(false) env := hh(false)
pg := newPluginGetter("echo -n", env, "test", ".") pg := NewPluginGetter("echo -n", env, "test", ".")
g, err := pg() g, err := pg()
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)

Loading…
Cancel
Save