1 // Copyright 2017 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
14 func TestRateLimit(t *testing.T) {
15 now := time.Date(2017, 04, 27, 10, 0, 0, 0, time.UTC)
17 defer func() { timeNow = f }()
18 timeNow = func() time.Time { return now }
20 h120, hTime := http.Header{}, http.Header{}
21 h120.Set("Retry-After", "120")
22 hTime.Set("Retry-After", "Tue Apr 27 11:00:00 2017")
25 ProblemType: "urn:ietf:params:acme:error:nolimit",
29 ProblemType: "urn:ietf:params:acme:error:rateLimited",
33 ProblemType: "urn:ietf:params:acme:error:rateLimited",
37 ProblemType: "urn:ietf:params:acme:error:rateLimited",
47 {errors.New("dummy"), 0, false},
49 {err2, 2 * time.Minute, true},
51 {err4, time.Hour, true},
53 for i, test := range tt {
54 res, ok := RateLimit(test.err)
56 t.Errorf("%d: RateLimit(%+v): ok = %v; want %v", i, test.err, ok, test.ok)
60 t.Errorf("%d: RateLimit(%+v) = %v; want %v", i, test.err, res, test.res)