提交 e9928f76 作者: Steven Allen

add test for 4973

License: MIT
Signed-off-by: 's avatarSteven Allen <steven@stebalien.com>
上级 31bb974b
......@@ -4,6 +4,7 @@ import (
"context"
"errors"
"io/ioutil"
"math"
"net/http"
"net/http/httptest"
"strings"
......@@ -31,11 +32,25 @@ var emptyDir = "/ipfs/QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn"
type mockNamesys map[string]path.Path
func (m mockNamesys) Resolve(ctx context.Context, name string, opts ...nsopts.ResolveOpt) (value path.Path, err error) {
p, ok := m[name]
if !ok {
return "", namesys.ErrResolveFailed
cfg := nsopts.DefaultResolveOpts()
for _, o := range opts {
o(cfg)
}
return p, nil
depth := cfg.Depth
if depth == nsopts.UnlimitedDepth {
depth = math.MaxUint64
}
for depth > 0 && strings.HasPrefix(name, "/ipns/") {
depth--
var ok bool
value, ok = m[name]
if !ok {
return "", namesys.ErrResolveFailed
}
name = value.String()
}
return value, nil
}
func (m mockNamesys) Publish(ctx context.Context, name ci.PrivKey, value path.Path) error {
......@@ -130,6 +145,10 @@ func TestGatewayGet(t *testing.T) {
t.Fatal(err)
}
ns["/ipns/example.com"] = path.FromString("/ipfs/" + k)
ns["/ipns/working.example.com"] = path.FromString("/ipfs/" + k)
ns["/ipns/double.example.com"] = path.FromString("/ipns/working.example.com")
ns["/ipns/triple.example.com"] = path.FromString("/ipns/double.example.com")
ns["/ipns/broken.example.com"] = path.FromString("/ipns/" + k)
t.Log(ts.URL)
for _, test := range []struct {
......@@ -145,6 +164,13 @@ func TestGatewayGet(t *testing.T) {
{"localhost:5001", "/ipns/%0D%0A%0D%0Ahello", http.StatusNotFound, "ipfs resolve -r /ipns/%0D%0A%0D%0Ahello: " + namesys.ErrResolveFailed.Error() + "\n"},
{"localhost:5001", "/ipns/example.com", http.StatusOK, "fnord"},
{"example.com", "/", http.StatusOK, "fnord"},
{"working.example.com", "/", http.StatusOK, "fnord"},
{"double.example.com", "/", http.StatusOK, "fnord"},
{"triple.example.com", "/", http.StatusOK, "fnord"},
{"working.example.com", "/ipfs/" + k, http.StatusNotFound, "ipfs resolve -r /ipns/working.example.com/ipfs/" + k + ": no link named \"ipfs\" under " + k + "\n"},
{"broken.example.com", "/", http.StatusNotFound, "ipfs resolve -r /ipns/broken.example.com/: " + namesys.ErrResolveFailed.Error() + "\n"},
{"broken.example.com", "/ipfs/" + k, http.StatusNotFound, "ipfs resolve -r /ipns/broken.example.com/ipfs/" + k + ": " + namesys.ErrResolveFailed.Error() + "\n"},
} {
var c http.Client
r, err := http.NewRequest("GET", ts.URL+test.path, nil)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论