some tests around getRequestCreds()

This commit is contained in:
Rick Olson 2015-02-17 12:16:59 -07:00
parent 88acbc3ee8
commit 466bca7841
3 changed files with 98 additions and 18 deletions

@ -453,12 +453,12 @@ func request(method, oid string) (*http.Request, Creds, error) {
u := Config.ObjectUrl(oid)
req, err := http.NewRequest(method, u.String(), nil)
req.Header.Set("User-Agent", UserAgent)
if err == nil {
creds, err := getRequestCreds(req)
return req, creds, err
if err != nil {
return req, nil, err
}
return req, nil, err
creds, err := getRequestCreds(req)
return req, creds, err
}
func getRequestCreds(req *http.Request) (Creds, error) {

@ -206,12 +206,6 @@ func TestPost(t *testing.T) {
}
}
func init() {
execCreds = func(input Creds, subCommand string) (credentialFetcher, error) {
return &testCredentialFetcher{input}, nil
}
}
func tempdir(t *testing.T) string {
dir, err := ioutil.TempDir("", "hawser-test-hawser")
if err != nil {
@ -219,11 +213,3 @@ func tempdir(t *testing.T) string {
}
return dir
}
type testCredentialFetcher struct {
Creds Creds
}
func (c *testCredentialFetcher) Credentials() Creds {
return c.Creds
}

@ -0,0 +1,94 @@
package hawser
import (
"encoding/base64"
"net/http"
"testing"
)
func TestGetCredentials(t *testing.T) {
req, err := http.NewRequest("GET", "http://example.com", nil)
if err != nil {
t.Fatal(err)
}
creds, err := getRequestCreds(req)
if err != nil {
t.Fatal(err)
}
if value := creds["username"]; value != "example.com" {
t.Errorf("bad username: %s", value)
}
if value := creds["password"]; value != "monkey" {
t.Errorf("bad username: %s", value)
}
expected := "Basic " + base64.URLEncoding.EncodeToString([]byte("example.com:monkey"))
if value := req.Header.Get("Authorization"); value != expected {
t.Errorf("Bad Authorization. Expected '%s', got '%s'", expected, value)
}
}
func TestGetCredentialsWithPort(t *testing.T) {
req, err := http.NewRequest("GET", "http://example.com:123", nil)
if err != nil {
t.Fatal(err)
}
creds, err := getRequestCreds(req)
if err != nil {
t.Fatal(err)
}
if value := creds["username"]; value != "example.com:123" {
t.Errorf("bad username: %s", value)
}
if value := creds["password"]; value != "monkey" {
t.Errorf("bad username: %s", value)
}
expected := "Basic " + base64.URLEncoding.EncodeToString([]byte("example.com:123:monkey"))
if value := req.Header.Get("Authorization"); value != expected {
t.Errorf("Bad Authorization. Expected '%s', got '%s'", expected, value)
}
}
func TestGetCredentialsWithAuthorization(t *testing.T) {
req, err := http.NewRequest("GET", "http://example.com", nil)
if err != nil {
t.Fatal(err)
}
req.Header.Set("Authorization", "")
creds, err := getRequestCreds(req)
if err != nil {
t.Fatal(err)
}
if creds != nil {
t.Errorf("Unexpected credentials: %v", creds)
}
if value := req.Header.Get("Authorization"); value != "" {
t.Errorf("Unexpected authorization: %s", value)
}
}
func init() {
execCreds = func(input Creds, subCommand string) (credentialFetcher, error) {
return &testCredentialFetcher{input}, nil
}
}
type testCredentialFetcher struct {
Creds Creds
}
func (c *testCredentialFetcher) Credentials() Creds {
c.Creds["username"] = c.Creds["host"]
c.Creds["password"] = "monkey"
return c.Creds
}