From 3f4a42eefd25ccfdf097b5cc0c19e3c13c09ff2c Mon Sep 17 00:00:00 2001 From: Eric Chiang Date: Mon, 29 Feb 2016 11:29:36 -0800 Subject: [PATCH] *: remove unused code This change has no functional changes, it only removes dead code. --- pkg/http/http.go | 83 --------------- pkg/http/http_test.go | 231 ------------------------------------------ pkg/net/url.go | 20 ---- pkg/net/url_test.go | 30 ------ server/password.go | 6 -- test | 2 +- 6 files changed, 1 insertion(+), 371 deletions(-) delete mode 100644 pkg/net/url.go delete mode 100644 pkg/net/url_test.go diff --git a/pkg/http/http.go b/pkg/http/http.go index 90450062..d1a82d1d 100644 --- a/pkg/http/http.go +++ b/pkg/http/http.go @@ -2,13 +2,9 @@ package http import ( "encoding/json" - "errors" "net/http" "net/url" "path" - "strconv" - "strings" - "time" "github.com/coreos/dex/pkg/log" ) @@ -28,73 +24,6 @@ func WriteError(w http.ResponseWriter, code int, msg string) { w.Write(b) } -func cacheControlMaxAge(hdr string) (time.Duration, bool, error) { - for _, field := range strings.Split(hdr, ",") { - parts := strings.SplitN(strings.TrimSpace(field), "=", 2) - k := strings.ToLower(strings.TrimSpace(parts[0])) - if k != "max-age" { - continue - } - - if len(parts) == 1 { - return 0, false, errors.New("max-age has no value") - } - - v := strings.TrimSpace(parts[1]) - if v == "" { - return 0, false, errors.New("max-age has empty value") - } - - age, err := strconv.Atoi(v) - if err != nil { - return 0, false, err - } - - if age <= 0 { - return 0, false, nil - } - - return time.Duration(age) * time.Second, true, nil - } - - return 0, false, nil -} - -func expires(date, expires string) (time.Duration, bool, error) { - if date == "" || expires == "" { - return 0, false, nil - } - - te, err := time.Parse(time.RFC1123, expires) - if err != nil { - return 0, false, err - } - - td, err := time.Parse(time.RFC1123, date) - if err != nil { - return 0, false, err - } - - ttl := te.Sub(td) - - // headers indicate data already expired, caller should not - // have to care about this case - if ttl <= 0 { - return 0, false, nil - } - - return ttl, true, nil -} - -func Cacheable(hdr http.Header) (time.Duration, bool, error) { - ttl, ok, err := cacheControlMaxAge(hdr.Get("Cache-Control")) - if err != nil || ok { - return ttl, ok, err - } - - return expires(hdr.Get("Date"), hdr.Get("Expires")) -} - // MergeQuery appends additional query values to an existing URL. func MergeQuery(u url.URL, q url.Values) url.URL { uv := u.Query() @@ -116,15 +45,3 @@ func NewResourceLocation(reqURL *url.URL, id string) string { u.Fragment = "" return u.String() } - -// CopyRequest returns a clone of the provided *http.Request. -// The returned object is a shallow copy of the struct and a -// deep copy of its Header field. -func CopyRequest(r *http.Request) *http.Request { - r2 := *r - r2.Header = make(http.Header) - for k, s := range r.Header { - r2.Header[k] = s - } - return &r2 -} diff --git a/pkg/http/http_test.go b/pkg/http/http_test.go index 8ec76a24..69b278f2 100644 --- a/pkg/http/http_test.go +++ b/pkg/http/http_test.go @@ -1,60 +1,11 @@ package http import ( - "net/http" "net/url" "reflect" - "strings" "testing" - "time" ) -func TestCacheControlMaxAgeSuccess(t *testing.T) { - tests := []struct { - hdr string - wantAge time.Duration - wantOK bool - }{ - {"max-age=12", 12 * time.Second, true}, - {"max-age=-12", 0, false}, - {"max-age=0", 0, false}, - {"public, max-age=12", 12 * time.Second, true}, - {"public, max-age=40192, must-revalidate", 40192 * time.Second, true}, - {"public, not-max-age=12, must-revalidate", time.Duration(0), false}, - } - - for i, tt := range tests { - maxAge, ok, err := cacheControlMaxAge(tt.hdr) - if err != nil { - t.Errorf("case %d: err=%v", i, err) - } - if tt.wantAge != maxAge { - t.Errorf("case %d: want=%d got=%d", i, tt.wantAge, maxAge) - } - if tt.wantOK != ok { - t.Errorf("case %d: incorrect ok value: want=%t got=%t", i, tt.wantOK, ok) - } - } -} - -func TestCacheControlMaxAgeFail(t *testing.T) { - tests := []string{ - "max-age=aasdf", - "max-age=", - "max-age", - } - - for i, tt := range tests { - _, ok, err := cacheControlMaxAge(tt) - if ok { - t.Errorf("case %d: want ok=false, got true", i) - } - if err == nil { - t.Errorf("case %d: want non-nil err", i) - } - } -} - func TestMergeQuery(t *testing.T) { tests := []struct { u string @@ -134,176 +85,6 @@ func TestMergeQuery(t *testing.T) { } } -func TestExpiresPass(t *testing.T) { - tests := []struct { - date string - exp string - wantTTL time.Duration - wantOK bool - }{ - // Expires and Date properly set - { - date: "Thu, 01 Dec 1983 22:00:00 GMT", - exp: "Fri, 02 Dec 1983 01:00:00 GMT", - wantTTL: 10800 * time.Second, - wantOK: true, - }, - // empty headers - { - date: "", - exp: "", - wantOK: false, - }, - // lack of Expirs short-ciruits Date parsing - { - date: "foo", - exp: "", - wantOK: false, - }, - // lack of Date short-ciruits Expires parsing - { - date: "", - exp: "foo", - wantOK: false, - }, - // no Date - { - exp: "Thu, 01 Dec 1983 22:00:00 GMT", - wantTTL: 0, - wantOK: false, - }, - // no Expires - { - date: "Thu, 01 Dec 1983 22:00:00 GMT", - wantTTL: 0, - wantOK: false, - }, - // Expires < Date - { - date: "Fri, 02 Dec 1983 01:00:00 GMT", - exp: "Thu, 01 Dec 1983 22:00:00 GMT", - wantTTL: 0, - wantOK: false, - }, - } - - for i, tt := range tests { - ttl, ok, err := expires(tt.date, tt.exp) - if err != nil { - t.Errorf("case %d: err=%v", i, err) - } - if tt.wantTTL != ttl { - t.Errorf("case %d: want=%d got=%d", i, tt.wantTTL, ttl) - } - if tt.wantOK != ok { - t.Errorf("case %d: incorrect ok value: want=%t got=%t", i, tt.wantOK, ok) - } - } -} - -func TestExpiresFail(t *testing.T) { - tests := []struct { - date string - exp string - }{ - // malformed Date header - { - date: "foo", - exp: "Fri, 02 Dec 1983 01:00:00 GMT", - }, - // malformed exp header - { - date: "Fri, 02 Dec 1983 01:00:00 GMT", - exp: "bar", - }, - } - - for i, tt := range tests { - _, _, err := expires(tt.date, tt.exp) - if err == nil { - t.Errorf("case %d: expected non-nil error", i) - } - } -} - -func TestCacheablePass(t *testing.T) { - tests := []struct { - headers http.Header - wantTTL time.Duration - wantOK bool - }{ - // valid Cache-Control - { - headers: http.Header{ - "Cache-Control": []string{"max-age=100"}, - }, - wantTTL: 100 * time.Second, - wantOK: true, - }, - // valid Date/Expires - { - headers: http.Header{ - "Date": []string{"Thu, 01 Dec 1983 22:00:00 GMT"}, - "Expires": []string{"Fri, 02 Dec 1983 01:00:00 GMT"}, - }, - wantTTL: 10800 * time.Second, - wantOK: true, - }, - // Cache-Control supersedes Date/Expires - { - headers: http.Header{ - "Cache-Control": []string{"max-age=100"}, - "Date": []string{"Thu, 01 Dec 1983 22:00:00 GMT"}, - "Expires": []string{"Fri, 02 Dec 1983 01:00:00 GMT"}, - }, - wantTTL: 100 * time.Second, - wantOK: true, - }, - // no caching headers - { - headers: http.Header{}, - wantOK: false, - }, - } - - for i, tt := range tests { - ttl, ok, err := Cacheable(tt.headers) - if err != nil { - t.Errorf("case %d: err=%v", i, err) - continue - } - if tt.wantTTL != ttl { - t.Errorf("case %d: want=%d got=%d", i, tt.wantTTL, ttl) - } - if tt.wantOK != ok { - t.Errorf("case %d: incorrect ok value: want=%t got=%t", i, tt.wantOK, ok) - } - } -} - -func TestCacheableFail(t *testing.T) { - tests := []http.Header{ - // invalid Cache-Control short-circuits - http.Header{ - "Cache-Control": []string{"max-age"}, - "Date": []string{"Thu, 01 Dec 1983 22:00:00 GMT"}, - "Expires": []string{"Fri, 02 Dec 1983 01:00:00 GMT"}, - }, - // no Cache-Control, invalid Expires - http.Header{ - "Date": []string{"Thu, 01 Dec 1983 22:00:00 GMT"}, - "Expires": []string{"boo"}, - }, - } - - for i, tt := range tests { - _, _, err := Cacheable(tt) - if err == nil { - t.Errorf("case %d: want non-nil err", i) - } - } -} - func TestNewResourceLocation(t *testing.T) { tests := []struct { ru *url.URL @@ -366,15 +147,3 @@ func TestNewResourceLocation(t *testing.T) { } } } - -func TestCopyRequest(t *testing.T) { - r1, err := http.NewRequest("GET", "http://example.com", strings.NewReader("foo")) - if err != nil { - t.Fatalf("Unexpected error: %v", err) - } - - r2 := CopyRequest(r1) - if !reflect.DeepEqual(r1, r2) { - t.Fatalf("Result of CopyRequest incorrect: %#v != %#v", r1, r2) - } -} diff --git a/pkg/net/url.go b/pkg/net/url.go deleted file mode 100644 index 4036f1fe..00000000 --- a/pkg/net/url.go +++ /dev/null @@ -1,20 +0,0 @@ -package net - -import ( - "net/url" - "strings" -) - -// URLEqual checks two urls for equality using only the host and path portions. -func URLEqual(url1, url2 string) bool { - u1, err := url.Parse(url1) - if err != nil { - return false - } - u2, err := url.Parse(url2) - if err != nil { - return false - } - - return strings.ToLower(u1.Host+u1.Path) == strings.ToLower(u2.Host+u2.Path) -} diff --git a/pkg/net/url_test.go b/pkg/net/url_test.go deleted file mode 100644 index 21c6d4c3..00000000 --- a/pkg/net/url_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package net - -import ( - "testing" -) - -func TestURLEqual(t *testing.T) { - tests := []struct { - a string - b string - equal bool - }{ - {"https://accounts.example.com", "accounts.example.com", true}, - {"accounts.example.com", "accounts.example.com", true}, - {"accounts.example.com/FOO", "accounts.example.com/foo", true}, - {"https://accounts.example.com", "https://accounts.example.com", true}, - {"https://example.com/path1", "https://example.com/path2", false}, - {"https://example.com/path", "https://example.com/path", true}, - {"https://example.com/path?asdf=123", "example.com/path?foo=bar", true}, - {"foo.com", "bar.com", false}, - {"foo.com/foo", "foo.com/bar", false}, - } - - for i, tt := range tests { - equal := URLEqual(tt.a, tt.b) - if tt.equal != equal { - t.Errorf("case %d: want=%t got=%t", i, tt.equal, equal) - } - } -} diff --git a/server/password.go b/server/password.go index 41b8780e..448dfb59 100644 --- a/server/password.go +++ b/server/password.go @@ -149,12 +149,6 @@ func (h *SendResetPasswordEmailHandler) errPage(w http.ResponseWriter, msg strin execTemplateWithStatus(w, h.tpl, data, status) } -func (h *SendResetPasswordEmailHandler) internalError(w http.ResponseWriter, err error) { - log.Errorf("Internal Error during sending password reset email: %v", err) - h.errPage(w, "There was a problem processing your request.", http.StatusInternalServerError, - &sendResetPasswordEmailData{}) -} - func (h *SendResetPasswordEmailHandler) exchangeKeyForClientAndRedirect(key string) (string, url.URL, error) { id, err := h.sm.ExchangeKey(key) if err != nil { diff --git a/test b/test index 04a13b90..dfa7ca28 100755 --- a/test +++ b/test @@ -18,7 +18,7 @@ if [ ! -d $GOPATH/pkg ]; then echo "WARNING: No cached builds detected. Please run the ./build script to speed up future tests." fi -TESTABLE="connector db integration pkg/crypto pkg/flag pkg/http pkg/net pkg/time pkg/html functional/repo server session session/manager user user/api user/manager user/email email admin" +TESTABLE="connector db integration pkg/crypto pkg/flag pkg/http pkg/time pkg/html functional/repo server session session/manager user user/api user/manager user/email email admin" FORMATTABLE="$TESTABLE cmd/dexctl cmd/dex-worker cmd/dex-overlord examples/app functional pkg/log" # user has not provided PKG override