X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/80e348724041a694002fc38f57e8868b9b9a2be9..fc0503be49438775c5d08499046852df59bd7377:/whatsapp_fake_helper_test.go?ds=inline diff --git a/whatsapp_fake_helper_test.go b/whatsapp_fake_helper_test.go index 24789a7..4f12a16 100644 --- a/whatsapp_fake_helper_test.go +++ b/whatsapp_fake_helper_test.go @@ -357,62 +357,6 @@ func (r *WhatsAppRetryTest) start(t *testing.T) { }) } -// whatsappStartTest opens the WhatsApp of the data directory dir with a fake -// client and the test clock, and closes it at the end of the test. The daemon -// log goes to the returned buffer. -func whatsappStartTest(t *testing.T, dir string, clock *TestClock) (*WhatsApp, *WhatsAppFake, *SyncBuffer) { - t.Helper() - - fake := &WhatsAppFake{ - connects: make(chan struct{}, 16), - pairings: make(chan chan whatsmeow.QRChannelItem, 16), - } - - logs := &SyncBuffer{} - whatsapp, err := openWhatsApp(t.Context(), dir, clock.Now, daemonTestLogger(logs), fake.newClient) - require.NoError(t, err) - - t.Cleanup(func() { - require.NoError(t, whatsapp.Close()) - }) - - return whatsapp, fake, logs -} - -// whatsappTestSession writes a session database with mode 0600 to the data -// directory dir. When linked is true, it holds a device linked to -// whatsappTestNumber and whatsappTestLID, and else no device. -func whatsappTestSession(t *testing.T, dir string, linked bool) { - t.Helper() - - path := filepath.Join(dir, whatsappDirName, whatsappSessionFileName) - require.NoError(t, os.MkdirAll(filepath.Dir(path), 0o700)) - require.NoError(t, os.WriteFile(path, nil, 0o600)) - - address, err := whatsappSessionAddress(path) - require.NoError(t, err) - - container, err := sqlstore.New(t.Context(), "sqlite", address, waLog.Noop) - require.NoError(t, err) - - if linked { - device := container.NewDevice() - jid := types.NewADJID(whatsappTestNumber, 0, 1) - device.ID = &jid - device.LID = types.NewADJID(whatsappTestLID, 0, 1) - device.LID.Server = types.HiddenUserServer - device.Account = &waAdv.ADVSignedDeviceIdentity{ - Details: []byte{}, - AccountSignature: make([]byte, 64), - AccountSignatureKey: make([]byte, 32), - DeviceSignature: make([]byte, 64), - } - require.NoError(t, device.Save(t.Context())) - } - - require.NoError(t, container.Close()) -} - // whatsappTestMessage returns the event of the text message id of sender in // chat at the time at. A sender with whatsappTestNumber is the user. func whatsappTestMessage(chat, sender types.JID, id, text string, at time.Time) *events.Message { @@ -467,6 +411,63 @@ func whatsappStartTestLinked(t *testing.T) (*WhatsApp, *WhatsAppFake) { return whatsapp, fake } +// whatsappTestSession writes a session database with mode 0600 to the data +// directory dir. When linked is true, it holds a device linked to +// whatsappTestNumber and whatsappTestLID, and else no device. +func whatsappTestSession(t *testing.T, dir string, linked bool) { + t.Helper() + + path := filepath.Join(dir, whatsappDirName, whatsappSessionFileName) + require.NoError(t, os.MkdirAll(filepath.Dir(path), 0o700)) + require.NoError(t, os.WriteFile(path, nil, 0o600)) + + address, err := whatsappSessionAddress(path) + require.NoError(t, err) + + container, err := sqlstore.New(t.Context(), "sqlite", address, waLog.Noop) + require.NoError(t, err) + + if linked { + device := container.NewDevice() + jid := types.NewADJID(whatsappTestNumber, 0, 1) + device.ID = &jid + device.LID = types.NewADJID(whatsappTestLID, 0, 1) + device.LID.Server = types.HiddenUserServer + device.Account = &waAdv.ADVSignedDeviceIdentity{ + Details: []byte{}, + AccountSignature: make([]byte, 64), + AccountSignatureKey: make([]byte, 32), + DeviceSignature: make([]byte, 64), + } + + require.NoError(t, device.Save(t.Context())) + } + + require.NoError(t, container.Close()) +} + +// whatsappStartTest opens the WhatsApp of the data directory dir with a fake +// client and the test clock, and closes it at the end of the test. The daemon +// log goes to the returned buffer. +func whatsappStartTest(t *testing.T, dir string, clock *TestClock) (*WhatsApp, *WhatsAppFake, *SyncBuffer) { + t.Helper() + + fake := &WhatsAppFake{ + connects: make(chan struct{}, 16), + pairings: make(chan chan whatsmeow.QRChannelItem, 16), + } + + logs := &SyncBuffer{} + whatsapp, err := openWhatsApp(t.Context(), dir, clock.Now, daemonTestLogger(logs), fake.newClient) + require.NoError(t, err) + + t.Cleanup(func() { + require.NoError(t, whatsapp.Close()) + }) + + return whatsapp, fake, logs +} + // whatsappTestConnect waits for the connection of the daemon and gives it the // events of a connection with an empty catch-up. func whatsappTestConnect(t *testing.T, fake *WhatsAppFake) {