1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-09-14 09:57:12 +08:00
Files
kubo/server/http/http_test.go
2014-09-30 23:16:55 +03:00

109 lines
2.6 KiB
Go

package http
import (
"bytes"
"errors"
"io"
"io/ioutil"
"net/http"
"net/http/httptest"
"strings"
"testing"
dag "github.com/jbenet/go-ipfs/merkledag"
u "github.com/jbenet/go-ipfs/util"
)
type test struct {
url string
code int
reqbody string
respbody string
}
func TestServeHTTP(t *testing.T) {
testhandler := &handler{&testIpfsHandler{}}
tests := []test{
{"/ipfs/", http.StatusInternalServerError, "", ""},
{"/ipfs/hash", http.StatusOK, "", "some fine data"},
{"/ipfs/hash2", http.StatusInternalServerError, "", ""},
}
for _, test := range tests {
req, _ := http.NewRequest("GET", test.url, nil)
resp := httptest.NewRecorder()
testhandler.ServeHTTP(resp, req)
if resp.Code != test.code {
t.Error("expected status code", test.code, "received", resp.Code)
}
if resp.Body.String() != test.respbody {
t.Error("expected body:", test.respbody)
t.Error("received body:", resp.Body)
}
}
}
func TestPostHandler(t *testing.T) {
testhandler := &handler{&testIpfsHandler{}}
tests := []test{
{"/ifps/", http.StatusInternalServerError, "", ""},
{"/ipfs/", http.StatusInternalServerError, "something that causes an error in adding to DAG", ""},
{"/ipfs/", http.StatusCreated, "some fine data", "jSQBpNSebeYbPBjs1vp"},
}
for _, test := range tests {
req, _ := http.NewRequest("POST", test.url, strings.NewReader(test.reqbody))
resp := httptest.NewRecorder()
testhandler.postHandler(resp, req)
if resp.Code != test.code {
t.Error("expected status code", test.code, "received", resp.Code)
}
if resp.Body.String() != test.respbody {
t.Error("expected body:", test.respbody)
t.Error("received body:", resp.Body)
}
}
}
type testIpfsHandler struct{}
func (i *testIpfsHandler) ResolvePath(path string) (*dag.Node, error) {
if path == "/hash" {
return &dag.Node{Data: []byte("some fine data")}, nil
}
if path == "/hash2" {
return &dag.Node{Data: []byte("data that breaks dagreader")}, nil
}
return nil, errors.New("")
}
func (i *testIpfsHandler) NewDagFromReader(r io.Reader) (*dag.Node, error) {
if data, err := ioutil.ReadAll(r); err == nil {
return &dag.Node{Data: data}, nil
}
return nil, errors.New("")
}
func (i *testIpfsHandler) AddNodeToDAG(nd *dag.Node) (u.Key, error) {
if len(nd.Data) != 0 && string(nd.Data) != "something that causes an error in adding to DAG" {
return u.Key(nd.Data), nil
}
return "", errors.New("")
}
func (i *testIpfsHandler) NewDagReader(nd *dag.Node) (io.Reader, error) {
if string(nd.Data) != "data that breaks dagreader" {
return bytes.NewReader(nd.Data), nil
}
return nil, errors.New("")
}