github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/registry/regclient/client_test.go (about) 1 package regclient 2 3 import ( 4 "context" 5 "net/http/httptest" 6 "testing" 7 8 crypto "github.com/libp2p/go-libp2p-core/crypto" 9 testkeys "github.com/qri-io/qri/auth/key/test" 10 "github.com/qri-io/qri/config" 11 testcfg "github.com/qri-io/qri/config/test" 12 "github.com/qri-io/qri/dsref" 13 "github.com/qri-io/qri/p2p" 14 "github.com/qri-io/qri/registry" 15 "github.com/qri-io/qri/registry/regserver/handlers" 16 "github.com/qri-io/qri/remote" 17 repotest "github.com/qri-io/qri/repo/test" 18 ) 19 20 type TestRunner struct { 21 Reg registry.Registry 22 RegServer *httptest.Server 23 Client *Client 24 ClientPrivKey crypto.PrivKey 25 } 26 27 func NewTestRunner(t *testing.T) (*TestRunner, func()) { 28 ctx, cancel := context.WithCancel(context.Background()) 29 30 // build registry 31 tmpRepo, err := repotest.NewTempRepo("registry", "regclient-tests", repotest.NewTestCrypto()) 32 if err != nil { 33 t.Fatal(err) 34 } 35 36 r, err := tmpRepo.Repo(ctx) 37 if err != nil { 38 t.Fatal(err) 39 } 40 41 localResolver := dsref.SequentialResolver(r.Dscache(), r) 42 node, err := p2p.NewQriNode(r, testcfg.DefaultP2PForTesting(), r.Bus(), localResolver) 43 if err != nil { 44 t.Fatal(err) 45 } 46 47 rem, err := remote.NewServer(node, &config.RemoteServer{ 48 AcceptSizeMax: -1, 49 Enabled: true, 50 AllowRemoves: true, 51 }, r.Logbook(), r.Bus()) 52 if err != nil { 53 t.Fatal(err) 54 } 55 56 reg := registry.Registry{ 57 Profiles: registry.NewMemProfiles(), 58 Search: ®istry.MockSearch{}, 59 Remote: rem, 60 } 61 ts := httptest.NewServer(handlers.NewRoutes(reg)) 62 63 // build client 64 pk1 := testkeys.GetKeyData(10).PrivKey 65 66 c := NewClient(&Config{ 67 Location: ts.URL, 68 }) 69 70 tr := &TestRunner{ 71 Reg: reg, 72 RegServer: ts, 73 Client: c, 74 ClientPrivKey: pk1, 75 } 76 77 cleanup := func() { 78 cancel() 79 ts.Close() 80 tmpRepo.Delete() 81 } 82 return tr, cleanup 83 }