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)