@cryptotaxi247 / kubo / commits / 8ccaf5bbf

test: add test for bad node types in dagreader

License: MIT Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>

Jakub Sztandera committed Aug 21, 2016 at 00:39 UTC 8ccaf5bbfa77512ac0484ad632f0beab1416c107
2 files changed +25 -3
unixfs/io/dagreader.go
+1 -3
@@ -68,9 +68,7 @@ func NewDagReader(ctx context.Context, n *mdag.Node, serv mdag.DAGService) (*Dag
68 case ftpb.Data_Directory:
69 // Dont allow reading directories
70 return nil, ErrIsDir
71 - case ftpb.Data_Raw:
72 - fallthrough
73 - case ftpb.Data_File:
71 + case ftpb.Data_File, ftpb.Data_Raw:
72 return NewDataFileReader(ctx, n, pb, serv), nil
73 case ftpb.Data_Metadata:
74 if len(n.Links) == 0 {
unixfs/io/dagreader_test.go
+24
@@ -5,6 +5,9 @@ import (
5 "os"
6 "testing"
7
8 + mdag "github.com/ipfs/go-ipfs/merkledag"
9 + "github.com/ipfs/go-ipfs/unixfs"
10 +
11 context "gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
12
13 testu "github.com/ipfs/go-ipfs/unixfs/test"
@@ -120,6 +123,27 @@ func TestRelativeSeek(t *testing.T) {
123
124 }
125
126 +func TestTypeFailures(t *testing.T) {
127 + dserv := testu.GetDAGServ()
128 + ctx, closer := context.WithCancel(context.Background())
129 + defer closer()
130 +
131 + node := unixfs.EmptyDirNode()
132 + if _, err := NewDagReader(ctx, node, dserv); err != ErrIsDir {
133 + t.Fatalf("excepted to get %v, got %v", ErrIsDir, err)
134 + }
135 +
136 + data, err := unixfs.SymlinkData("/somelink")
137 + if err != nil {
138 + t.Fatal(err)
139 + }
140 + node = mdag.NodeWithData(data)
141 +
142 + if _, err := NewDagReader(ctx, node, dserv); err != ErrCantReadSymlinks {
143 + t.Fatalf("excepted to get %v, got %v", ErrCantReadSymlinks, err)
144 + }
145 +}
146 +
147 func readByte(t testing.TB, reader *DagReader) byte {
148 out := make([]byte, 1)
149 c, err := reader.Read(out)