ipns_test.go 1.11 KB
Newer Older
1 2 3 4 5 6 7 8
package ipns

import (
	"crypto/rand"
	"os"
	"testing"

	fstest "github.com/jbenet/go-ipfs/Godeps/_workspace/src/bazil.org/fuse/fs/fstestutil"
9
	testutil "github.com/jbenet/go-ipfs/util/testutil"
10 11 12 13 14 15 16 17 18
)

func randBytes(size int) []byte {
	b := make([]byte, size)
	rand.Read(b)
	return b
}

func TestIpnsBasicIO(t *testing.T) {
19 20 21 22 23 24
	localnode, err := testutil.NewMockNode()
	if err != nil {
		t.Fatal(err)
	}

	fs, err := NewIpns(localnode, "")
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
	if err != nil {
		t.Fatal(err)
	}
	mnt, err := fstest.MountedT(t, fs)
	if err != nil {
		t.Fatal(err)
	}

	data := randBytes(12345)
	fi, err := os.Create(mnt.Dir + "/local/testfile")
	if err != nil {
		t.Fatal(err)
	}

	n, err := fi.Write(data)
	if err != nil {
		t.Fatal(err)
	}

	if n != len(data) {
		t.Fatal("Didnt write proper amount!")
	}

	fi.Close()

	//TODO: maybe wait for the publish to happen? or not, should test both cases

	fi, err = os.Open(mnt.Dir + "/local/testfile")
	if err != nil {
		t.Fatal(err)
	}

	rbuf := make([]byte, len(data))
	n, err = fi.Read(rbuf)
	if err != nil {
		t.Fatal(err)
	}

	if n != len(rbuf) {
		t.Fatal("Failed to read correct amount!")
	}

	fi.Close()
68

69
}