mirror of
https://github.com/diamondburned/arikawa.git
synced 2024-11-19 21:32:49 +00:00
API: Fixed rate limiting tests
This commit is contained in:
parent
795cbdef53
commit
f9f254148f
|
@ -2,8 +2,8 @@ package rate
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -24,10 +24,14 @@ func mockRequest(t *testing.T, l *Limiter, path string, headers http.Header) {
|
||||||
func TestRatelimitReset(t *testing.T) {
|
func TestRatelimitReset(t *testing.T) {
|
||||||
l := NewLimiter("")
|
l := NewLimiter("")
|
||||||
|
|
||||||
|
const msToSec = time.Second / time.Millisecond
|
||||||
|
|
||||||
|
until := time.Now().Add(2 * time.Second)
|
||||||
|
reset := float64(until.UnixNano()/int64(time.Millisecond)) / float64(msToSec)
|
||||||
|
|
||||||
headers := http.Header{}
|
headers := http.Header{}
|
||||||
headers.Set("X-RateLimit-Remaining", "0")
|
headers.Set("X-RateLimit-Remaining", "0")
|
||||||
headers.Set("X-RateLimit-Reset",
|
headers.Set("X-RateLimit-Reset", fmt.Sprintf("%.3f", reset))
|
||||||
strconv.FormatInt(time.Now().Add(time.Second*2).Unix(), 10))
|
|
||||||
headers.Set("Date", time.Now().Format(time.RFC850))
|
headers.Set("Date", time.Now().Format(time.RFC850))
|
||||||
|
|
||||||
sent := time.Now()
|
sent := time.Now()
|
||||||
|
@ -43,10 +47,10 @@ func TestRatelimitReset(t *testing.T) {
|
||||||
// We hit the same endpoint 2 times, so we should only be ratelimited 2
|
// We hit the same endpoint 2 times, so we should only be ratelimited 2
|
||||||
// second and always less than 4 seconds (unless you're on a stoneage
|
// second and always less than 4 seconds (unless you're on a stoneage
|
||||||
// computer or using swap or something...)
|
// computer or using swap or something...)
|
||||||
if time.Since(sent) >= time.Second && time.Since(sent) < time.Second*4 {
|
if since := time.Since(sent); since >= time.Second && since < time.Second*4 {
|
||||||
t.Log("OK", time.Since(sent))
|
t.Log("OK", since)
|
||||||
} else {
|
} else {
|
||||||
t.Error("did not ratelimit correctly, got:", time.Since(sent))
|
t.Error("did not ratelimit correctly, got:", since)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +61,7 @@ func TestRatelimitGlobal(t *testing.T) {
|
||||||
headers := http.Header{}
|
headers := http.Header{}
|
||||||
headers.Set("X-RateLimit-Global", "1.002")
|
headers.Set("X-RateLimit-Global", "1.002")
|
||||||
// Reset for approx 1 seconds from now
|
// Reset for approx 1 seconds from now
|
||||||
headers.Set("Retry-After", "1000")
|
headers.Set("Retry-After", "1")
|
||||||
|
|
||||||
sent := time.Now()
|
sent := time.Now()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue