master
go 45 lines 984 Bytes
Raw
1 package commands
2
3 import (
4 "io"
5 "testing"
6
7 dag "github.com/ipfs/boxo/ipld/merkledag"
8 cmds "github.com/ipfs/go-ipfs-cmds"
9 coremock "github.com/ipfs/kubo/core/mock"
10 "github.com/stretchr/testify/require"
11 )
12
13 func TestFilesCp_DagCborNodeFails(t *testing.T) {
14 ctx := t.Context()
15
16 cmdCtx, err := coremock.MockCmdsCtx()
17 require.NoError(t, err)
18
19 node, err := cmdCtx.ConstructNode()
20 require.NoError(t, err)
21
22 invalidData := []byte{0x00}
23 protoNode := dag.NodeWithData(invalidData)
24 err = node.DAG.Add(ctx, protoNode)
25 require.NoError(t, err)
26
27 req := &cmds.Request{
28 Context: ctx,
29 Arguments: []string{
30 "/ipfs/" + protoNode.Cid().String(),
31 "/test-destination",
32 },
33 Options: map[string]any{
34 "force": false,
35 },
36 }
37
38 _, pw := io.Pipe()
39 res, err := cmds.NewWriterResponseEmitter(pw, req)
40 require.NoError(t, err)
41
42 err = filesCpCmd.Run(req, res, &cmdCtx)
43 require.Error(t, err)
44 require.ErrorContains(t, err, "cp: source must be a valid UnixFS (dag-pb or raw codec)")
45 }