]> git.giacomolli.uk - onechat/blobdiff - whatsapp_test.go
Rebuild agent memory in date order
[onechat] / whatsapp_test.go
index c14571b61211412693e064d5bc12befa065367fe..db04dc7424737406782dbb439f365b3db0279e39 100644 (file)
@@ -106,6 +106,35 @@ func TestWhatsAppFirstConnectionRetriesStopWhenContextEnds(t *testing.T) {
        })
 }
 
+func TestWhatsAppLinkedPairRequestKeepsFirstConnectionRetries(t *testing.T) {
+       synctest.Test(t, func(t *testing.T) {
+               test := whatsappRetryTest(t)
+               test.fake.connectErr = errors.New("network unavailable")
+               test.start(t)
+               synctest.Wait()
+
+               answers := make(chan string, 1)
+               test.whatsapp.Command("pair 15550001111", func(text string) {
+                       answers <- text
+               })
+               require.Equal(t, "WhatsApp is linked already. Run /whatsapp unlink first.", <-answers)
+               synctest.Wait()
+               test.fake.mutex.Lock()
+               test.fake.connectErr = nil
+               test.fake.mutex.Unlock()
+               time.Sleep(whatsappRetryDelay)
+               synctest.Wait()
+               require.Len(t, test.fake.Connections(), 2)
+               require.True(t, test.fake.Emit(&events.Connected{}))
+               require.True(t, test.fake.Emit(&events.OfflineSyncCompleted{}))
+               require.Contains(t, test.whatsapp.Status(), "linked and connected since")
+               time.Sleep(whatsappRetryLimit)
+               synctest.Wait()
+               require.Len(t, test.fake.Connections(), 2)
+               require.Equal(t, "first connect failed, retrying: network unavailable\nconnected again after 2s\n", test.logs.String())
+       })
+}
+
 func TestWhatsAppFirstConnectionRetriesStopForLinkChanges(t *testing.T) {
        testCases := []struct {
                name string
@@ -123,12 +152,6 @@ func TestWhatsAppFirstConnectionRetriesStopForLinkChanges(t *testing.T) {
                                test.fake.Emit(&events.LoggedOut{})
                        },
                },
-               {
-                       name: "pair command",
-                       stop: func(test *WhatsAppRetryTest) {
-                               test.whatsapp.Command("pair 15550001111", func(text string) {})
-                       },
-               },
                {
                        name: "permanent disconnect",
                        stop: func(test *WhatsAppRetryTest) {