fork of indigo with slightly nicer lexgen
at main 89 lines 2.1 kB view raw
1package testing 2 3import ( 4 "context" 5 "encoding/json" 6 "fmt" 7 "os" 8 "testing" 9 10 comatproto "github.com/bluesky-social/indigo/api/atproto" 11 "github.com/bluesky-social/indigo/atproto/syntax" 12 "github.com/bluesky-social/indigo/cmd/relay/stream" 13 14 "github.com/stretchr/testify/assert" 15) 16 17// meta test for the testing framework itself. simply connects the consumer to the producer 18func TestFramework(t *testing.T) { 19 assert := assert.New(t) 20 ctx := context.Background() 21 22 p := NewProducer() 23 port := p.ListenRandom() 24 defer p.Shutdown() 25 26 c := NewConsumer(fmt.Sprintf("ws://localhost:%d", port)) 27 err := c.Connect(ctx, -1) 28 if err != nil { 29 t.Fatal(err) 30 } 31 defer c.Shutdown() 32 33 h := "example.atbin.dev" 34 e1 := stream.XRPCStreamEvent{ 35 RepoIdentity: &comatproto.SyncSubscribeRepos_Identity{ 36 Did: "did:web:example.atbin.dev", 37 Handle: &h, 38 Seq: 1234, 39 Time: syntax.DatetimeNow().String(), 40 }, 41 } 42 if err := p.Emit(&e1); err != nil { 43 t.Fatal(err) 44 } 45 46 evts, err := c.ConsumeEvents(1) 47 if err != nil { 48 t.Fatal(err) 49 } 50 assert.Equal(1, len(evts)) 51 assert.Equal(e1.RepoIdentity, evts[0].RepoIdentity) 52} 53 54// simply loads a scenario from JSON and checks data looks right 55func TestScenarioLoad(t *testing.T) { 56 assert := assert.New(t) 57 58 fixBytes, err := os.ReadFile("testdata/legacy.json") 59 if err != nil { 60 t.Fatal(err) 61 } 62 63 var s Scenario 64 if err = json.Unmarshal(fixBytes, &s); err != nil { 65 t.Fatal(err) 66 } 67 assert.Equal(1, len(s.Accounts)) 68 assert.Equal("active", s.Accounts[0].Status) 69 assert.Equal("https://morel.us-east.host.bsky.network", s.Accounts[0].Identity.PDSEndpoint()) 70 _, err = s.Accounts[0].Identity.PublicKey() 71 assert.NoError(err) 72 assert.Equal(3, len(s.Messages)) 73 msg, err := s.Messages[2].Frame.XRPCStreamEvent() 74 if err != nil { 75 t.Fatal(err) 76 } 77 assert.Equal(int64(7278969010), msg.RepoCommit.Seq) 78 assert.Equal(4945, len(msg.RepoCommit.Blocks)) 79 assert.Equal(1, len(msg.RepoCommit.Ops)) 80} 81 82func TestBasicScenario(t *testing.T) { 83 ctx := context.Background() 84 85 err := LoadAndRunScenario(ctx, "testdata/legacy.json") 86 if err != nil { 87 t.Fatal(err) 88 } 89}