- api := newBotAPI(server.URL, testBotToken)
- api.sendTimeout = 50 * time.Millisecond
- start := time.Now()
- err := api.SendMessage(t.Context(), testOwner, "hi", nil)
- require.ErrorIs(t, err, errBotNetwork)
- require.Less(t, time.Since(start), 5*time.Second)
- require.NotContains(t, err.Error(), testBotToken)
- require.NotContains(t, err.Error(), server.URL)
-
- retry, _ := retryable(err)
- require.True(t, retry)
-
- api.sendTimeout = time.Hour
- ctx, cancel := context.WithCancel(t.Context())
- time.AfterFunc(50*time.Millisecond, cancel)
- start = time.Now()
- err = api.SendMessage(ctx, testOwner, "hi", nil)
- require.Error(t, err)
- require.Less(t, time.Since(start), 5*time.Second)
+ for _, tc := range testCases {
+ t.Run(tc.method, func(t *testing.T) {
+ server := newFakeBot(t)
+ server.stall = func(call fakeBotCall) bool {
+ return call.method == tc.method
+ }
+
+ api := newBotAPI(server.URL, testBotToken)
+ api.sendTimeout = 50 * time.Millisecond
+ start := time.Now()
+ err := tc.send(t.Context(), api)
+ require.ErrorIs(t, err, errBotNetwork)
+ require.Less(t, time.Since(start), 5*time.Second)
+ require.NotContains(t, err.Error(), testBotToken)
+ require.NotContains(t, err.Error(), server.URL)
+
+ retry, _ := retryable(err)
+ require.True(t, retry)
+
+ api.sendTimeout = time.Hour
+ ctx, cancel := context.WithCancel(t.Context())
+ time.AfterFunc(50*time.Millisecond, cancel)
+ start = time.Now()
+ err = tc.send(ctx, api)
+ require.Error(t, err)
+ require.Less(t, time.Since(start), 5*time.Second)
+ })
+ }