+ ctx, cancel := context.WithCancel(t.Context())
+ defer cancel()
+
+ done := make(chan error, 1)
+ go func() {
+ done <- bot.poll(ctx, loop, whatsapp)
+ }()
+
+ time.Sleep(31 * time.Second)
+ synctest.Wait()
+ require.Equal(t, 1, loop.memory.Len())
+
+ message, err := loop.memory.Message(0)
+ require.NoError(t, err)
+ require.Equal(t, "a secret word", message.Text)
+
+ lines := strings.Split(strings.TrimSuffix(logs.String(), "\n"), "\n")
+ require.Equal(t, []string{
+ "<4>receive failed retry=1s: 502 Bad Gateway",
+ "<6>receive back after=31s",
+ }, lines)
+ require.NotContains(t, logs.String(), "secret word")
+ require.NotContains(t, logs.String(), strconv.FormatInt(telegramTestOwner, 10))
+ cancel()
+ require.NoError(t, <-done)