github.com/cayleygraph/cayley@v0.7.7/server/http/api_v2_test.go (about) 1 package cayleyhttp 2 3 import ( 4 "net/http/httptest" 5 "sort" 6 "testing" 7 8 "github.com/cayleygraph/cayley/client" 9 "github.com/cayleygraph/cayley/graph" 10 "github.com/cayleygraph/cayley/graph/graphtest" 11 "github.com/cayleygraph/cayley/graph/memstore" 12 "github.com/cayleygraph/cayley/writer" 13 "github.com/cayleygraph/quad" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func makeHandle(t testing.TB, quads ...quad.Quad) *graph.Handle { 18 qs := memstore.New(quads...) 19 wr, err := writer.NewSingleReplication(qs, nil) 20 require.NoError(t, err) 21 return &graph.Handle{qs, wr} 22 } 23 24 func makeServerV2(t testing.TB, quads ...quad.Quad) (string, func()) { 25 h := makeHandle(t, quads...) 26 27 api2 := NewAPIv2(h) 28 srv := httptest.NewServer(api2) 29 addr := srv.Listener.Addr() 30 return "http://" + addr.String(), func() { 31 srv.Close() 32 h.Close() 33 } 34 } 35 36 func TestV2Write(t *testing.T) { 37 addr, closer := makeServerV2(t) 38 defer closer() 39 40 quads := graphtest.MakeQuadSet() 41 cli := client.New(addr) 42 qw, err := cli.QuadWriter() 43 require.NoError(t, err) 44 defer qw.Close() 45 n, err := quad.Copy(qw, quad.NewReader(quads)) 46 require.NoError(t, err) 47 require.Equal(t, int(len(quads)), n) 48 err = qw.Close() 49 require.NoError(t, err) 50 } 51 52 func TestV2Read(t *testing.T) { 53 expect := graphtest.MakeQuadSet() 54 addr, closer := makeServerV2(t, expect...) 55 defer closer() 56 57 cli := client.New(addr) 58 qr, err := cli.QuadReader() 59 require.NoError(t, err) 60 defer qr.Close() 61 quads, err := quad.ReadAll(qr) 62 require.NoError(t, err) 63 sort.Sort(quad.ByQuadString(quads)) 64 sort.Sort(quad.ByQuadString(expect)) 65 require.Equal(t, expect, quads) 66 }