github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/core/coreunix/metadata_test.go (about) 1 package coreunix 2 3 import ( 4 "bytes" 5 "io/ioutil" 6 "testing" 7 8 ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" 9 dssync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore/sync" 10 context "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context" 11 12 bstore "github.com/ipfs/go-ipfs/blocks/blockstore" 13 key "github.com/ipfs/go-ipfs/blocks/key" 14 bserv "github.com/ipfs/go-ipfs/blockservice" 15 core "github.com/ipfs/go-ipfs/core" 16 offline "github.com/ipfs/go-ipfs/exchange/offline" 17 importer "github.com/ipfs/go-ipfs/importer" 18 chunk "github.com/ipfs/go-ipfs/importer/chunk" 19 merkledag "github.com/ipfs/go-ipfs/merkledag" 20 ft "github.com/ipfs/go-ipfs/unixfs" 21 uio "github.com/ipfs/go-ipfs/unixfs/io" 22 u "github.com/ipfs/go-ipfs/util" 23 ) 24 25 func getDagserv(t *testing.T) merkledag.DAGService { 26 db := dssync.MutexWrap(ds.NewMapDatastore()) 27 bs := bstore.NewBlockstore(db) 28 blockserv := bserv.New(bs, offline.Exchange(bs)) 29 return merkledag.NewDAGService(blockserv) 30 } 31 32 func TestMetadata(t *testing.T) { 33 ctx := context.Background() 34 // Make some random node 35 ds := getDagserv(t) 36 data := make([]byte, 1000) 37 u.NewTimeSeededRand().Read(data) 38 r := bytes.NewReader(data) 39 nd, err := importer.BuildDagFromReader(ds, chunk.DefaultSplitter(r), nil) 40 if err != nil { 41 t.Fatal(err) 42 } 43 44 k, err := nd.Key() 45 if err != nil { 46 t.Fatal(err) 47 } 48 49 m := new(ft.Metadata) 50 m.MimeType = "THIS IS A TEST" 51 52 // Such effort, many compromise 53 ipfsnode := &core.IpfsNode{DAG: ds} 54 55 mdk, err := AddMetadataTo(ipfsnode, k.B58String(), m) 56 if err != nil { 57 t.Fatal(err) 58 } 59 60 rec, err := Metadata(ipfsnode, mdk) 61 if err != nil { 62 t.Fatal(err) 63 } 64 if rec.MimeType != m.MimeType { 65 t.Fatalf("something went wrong in conversion: '%s' != '%s'", rec.MimeType, m.MimeType) 66 } 67 68 retnode, err := ds.Get(ctx, key.B58KeyDecode(mdk)) 69 if err != nil { 70 t.Fatal(err) 71 } 72 73 ndr, err := uio.NewDagReader(ctx, retnode, ds) 74 if err != nil { 75 t.Fatal(err) 76 } 77 78 out, err := ioutil.ReadAll(ndr) 79 if err != nil { 80 t.Fatal(err) 81 } 82 83 if !bytes.Equal(out, data) { 84 t.Fatal("read incorrect data") 85 } 86 }