Redirect http traffic to https
git-svn-id: file:///srv/svn/repo/toyohime/trunk@64 922d331f-388e-da47-97a9-ad700dc0b8b9
This commit is contained in:
parent
e6a35511c3
commit
4592a31b7f
@ -26,6 +26,11 @@ var tmpl = template.Must(template.New("main").Parse(`<!DOCTYPE html>
|
||||
// Go tool to VCS repository.
|
||||
func Redirect(vcs, importPath, repoRoot string) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.URL.Scheme == "http" {
|
||||
r.URL.Scheme = "https"
|
||||
http.Redirect(w, r, r.URL.String(), http.StatusMovedPermanently)
|
||||
return
|
||||
}
|
||||
if r.Method != http.MethodGet {
|
||||
status := http.StatusMethodNotAllowed
|
||||
http.Error(w, http.StatusText(status), status)
|
||||
|
@ -8,6 +8,24 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
var addr = "https://kkn.fi"
|
||||
|
||||
func TestRedirectFromHttpToHttps(t *testing.T) {
|
||||
res := httptest.NewRecorder()
|
||||
req, err := http.NewRequest("GET", "http://kkn.fi", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
srv := Redirect("git", "kkn.fi", "https://github.com/kare")
|
||||
srv.ServeHTTP(res, req)
|
||||
if res.Code != http.StatusMovedPermanently {
|
||||
t.Fatalf("expected response status 301, but got %v", res.Code)
|
||||
}
|
||||
if res.Header().Get("Location") != addr {
|
||||
t.Fatalf("expected response location '%v', but got '%v'", addr, res.Header().Get("Location"))
|
||||
}
|
||||
}
|
||||
|
||||
func TestHTTPMethodsSupport(t *testing.T) {
|
||||
tests := []struct {
|
||||
method string
|
||||
@ -22,7 +40,7 @@ func TestHTTPMethodsSupport(t *testing.T) {
|
||||
{http.MethodOptions, http.StatusMethodNotAllowed},
|
||||
}
|
||||
for _, test := range tests {
|
||||
req, err := http.NewRequest(test.method, "http://kkn.fi"+"/gist?go-get=1", nil)
|
||||
req, err := http.NewRequest(test.method, addr+"/gist?go-get=1", nil)
|
||||
if err != nil {
|
||||
t.Skipf("http request with method %v failed with error: %v", test.method, err)
|
||||
}
|
||||
@ -37,7 +55,7 @@ func TestHTTPMethodsSupport(t *testing.T) {
|
||||
|
||||
func TestIndexPageNotFound(t *testing.T) {
|
||||
res := httptest.NewRecorder()
|
||||
req, err := http.NewRequest("GET", "http://kkn.fi/", nil)
|
||||
req, err := http.NewRequest("GET", addr, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@ -60,7 +78,7 @@ func TestGoTool(t *testing.T) {
|
||||
}
|
||||
for _, test := range tests {
|
||||
res := httptest.NewRecorder()
|
||||
req, err := http.NewRequest("GET", "http://kkn.fi"+test.path, nil)
|
||||
req, err := http.NewRequest("GET", addr+test.path, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@ -100,7 +118,7 @@ func TestBrowserGoDoc(t *testing.T) {
|
||||
}
|
||||
for _, test := range tests {
|
||||
res := httptest.NewRecorder()
|
||||
req, err := http.NewRequest("GET", "http://kkn.fi"+test.path, nil)
|
||||
req, err := http.NewRequest("GET", addr+test.path, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user