mirror of https://github.com/goproxyio/goproxy
parent
e03dc0f0bf
commit
450ca75bbd
@ -0,0 +1,98 @@
|
||||
// Copyright 2019 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Package sumdb implements sumdb handler proxy.
|
||||
package sumdb
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestHandler(t *testing.T) {
|
||||
if ret := t.Run("supported", testSupported); !ret {
|
||||
t.Error("supported test failed, stop test")
|
||||
t.FailNow()
|
||||
}
|
||||
t.Run("proxy", testProxy)
|
||||
}
|
||||
|
||||
func testSupported(t *testing.T) {
|
||||
type TestCase struct {
|
||||
name string
|
||||
db string
|
||||
wantSupported bool
|
||||
}
|
||||
|
||||
tests := []TestCase{
|
||||
{
|
||||
name: "sum.golang.org",
|
||||
db: "sum.golang.org",
|
||||
wantSupported: true,
|
||||
},
|
||||
{
|
||||
name: "gosum.io",
|
||||
db: "gosum.io",
|
||||
wantSupported: true,
|
||||
},
|
||||
{
|
||||
name: "sum.golang.google.cn",
|
||||
db: "sum.golang.google.cn",
|
||||
wantSupported: true,
|
||||
},
|
||||
{
|
||||
name: "other",
|
||||
db: "other",
|
||||
wantSupported: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, testcase := range tests {
|
||||
t.Run(testcase.name, func(t *testing.T) {
|
||||
recoder := httptest.NewRecorder()
|
||||
req := httptest.NewRequest(http.MethodGet, fmt.Sprintf("https://goproxy.io/sumdb/%s/supported", testcase.db), nil)
|
||||
Handler(recoder, req)
|
||||
|
||||
resp := recoder.Result()
|
||||
if support := (resp.StatusCode == http.StatusOK); support != testcase.wantSupported {
|
||||
t.Errorf("db %s: want %v got %v", testcase.db, testcase.wantSupported, support)
|
||||
}
|
||||
resp.Body.Close()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func testProxy(t *testing.T) {
|
||||
type TestCase struct {
|
||||
name string
|
||||
db string
|
||||
path string
|
||||
expectSucc bool
|
||||
}
|
||||
tests := []TestCase{
|
||||
{
|
||||
name: "lookup",
|
||||
db: "sum.golang.google.cn",
|
||||
path: "lookup/github.com/goproxyio/goproxy@v1.0.0", // this is a fake testcase
|
||||
expectSucc: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, testcase := range tests {
|
||||
t.Run(testcase.name, func(t *testing.T) {
|
||||
|
||||
recoder := httptest.NewRecorder()
|
||||
req := httptest.NewRequest(http.MethodGet, fmt.Sprintf("https://goproxy.io/sumdb/%s/%s", testcase.db, testcase.path), nil)
|
||||
Handler(recoder, req)
|
||||
|
||||
resp := recoder.Result()
|
||||
if succ := (resp.StatusCode == http.StatusOK); succ != testcase.expectSucc {
|
||||
t.Errorf("FETCH from db %s/%s got unexpect http status %d", testcase.db, testcase.path, resp.StatusCode)
|
||||
return
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in new issue