Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
3.0 kB · 112 lines
Go
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113package atproto
import ( "context" "fmt" "strings" "testing" "time"
"github.com/bluesky-social/indigo/util" glex "github.com/streamplace/glex/runtime" "github.com/stretchr/testify/require" "stream.place/streamplace/pkg/bus" "stream.place/streamplace/pkg/comatproto" "stream.place/streamplace/pkg/config" "stream.place/streamplace/pkg/devenv" "stream.place/streamplace/pkg/log" "stream.place/streamplace/pkg/model" "stream.place/streamplace/pkg/placestream" "stream.place/streamplace/pkg/statedb")
func TestHandleChange(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel()
dev := devenv.WithDevEnv(t) t.Logf("dev: %+v", dev) cli := config.CLI{ BroadcasterHost: "example.com", DBURL: ":memory:", RelayHost: strings.ReplaceAll(dev.PDSURL, "http://", "ws://"), PLCURL: dev.PLCURL, }
t.Logf("cli: %+v", cli) b := bus.NewBus() cli.DataDir = t.TempDir() mod, err := model.MakeDB(":memory:") require.NoError(t, err) state, err := statedb.MakeDB(context.Background(), &cli, nil, mod) require.NoError(t, err) atsync := &ATProtoSynchronizer{ CLI: &cli, StatefulDB: state, Model: mod, Bus: b, PLCDirectory: dev.TestDirectory(), }
done := make(chan struct{})
go func() { err := atsync.StartFirehose(ctx) require.NoError(t, err) close(done) }()
user := dev.CreateAccount(t)
msg := placestream.ChatMessage{ LexiconTypeID: "place.stream.chat.message", Text: "Hello, world!", CreatedAt: time.Now().Add(-time.Second).Format(util.ISO8601), Streamer: user.DID, }
_, err = comatproto.RepoCreateRecord(ctx, user.XRPC, &comatproto.RepoCreateRecord_Input{ Collection: "place.stream.chat.message", Repo: user.DID, Record: &glex.LexiconTypeDecoder{Val: &msg}, }) require.NoError(t, err)
var message placestream.ChatDefs_MessageView err = untilNoErrors(t, func() error { messages, err := mod.MostRecentChatMessages(user.DID) if err != nil { return err } if len(messages) != 1 { return fmt.Errorf("expected 2 messages, got %d", len(messages)) } message = messages[0] return nil }) require.NoError(t, err) require.Equal(t, user.Handle, message.Author.Handle)
log.Log(ctx, "updating handle", "handle", "new-handle.test") err = comatproto.IdentityUpdateHandle(context.Background(), user.XRPC, &comatproto.IdentityUpdateHandle_Input{ Handle: "new-handle.test", }) require.NoError(t, err)
err = untilNoErrors(t, func() error { messages, err := mod.MostRecentChatMessages(user.DID) if err != nil { return err } if len(messages) != 1 { return fmt.Errorf("expected 2 messages, got %d", len(messages)) } message = messages[0] if message.Author.Handle != "new-handle.test" { return fmt.Errorf("expected new handle, got %s", message.Author.Handle) } return nil }) require.NoError(t, err) require.Equal(t, message.Author.Handle, "new-handle.test")}