@@ -11,11 +11,11 @@ class GatekeeperTests: XCTestCase {
11
11
peerName: " ::1 "
12
12
)
13
13
14
- let gateKeeper = try request. make ( Gatekeeper . self)
14
+ let gatekeeperMiddleware = try request. make ( GatekeeperMiddleware . self)
15
15
16
16
for i in 1 ... 11 {
17
17
do {
18
- _ = try gateKeeper . accessEndpoint ( on : request) . wait ( )
18
+ _ = try gatekeeperMiddleware . respond ( to : request, chainingTo : TestResponder ( ) ) . wait ( )
19
19
XCTAssertTrue ( i <= 10 , " ran \( i) times. " )
20
20
} catch let error as Abort {
21
21
switch error. status {
@@ -39,10 +39,10 @@ class GatekeeperTests: XCTestCase {
39
39
peerName: nil
40
40
)
41
41
42
- let gateKeeper = try request. make ( Gatekeeper . self)
42
+ let gatekeeperMiddleware = try request. make ( GatekeeperMiddleware . self)
43
43
44
44
do {
45
- _ = try gateKeeper . accessEndpoint ( on : request) . wait ( )
45
+ _ = try gatekeeperMiddleware . respond ( to : request, chainingTo : TestResponder ( ) ) . wait ( )
46
46
XCTAssertTrue ( false , " Gatekeeper should throw " )
47
47
} catch let error as Abort {
48
48
switch error. status {
@@ -64,11 +64,11 @@ class GatekeeperTests: XCTestCase {
64
64
peerName: " 192.168.1.2 "
65
65
)
66
66
67
- let gateKeeper = try request. make ( Gatekeeper . self)
67
+ let gatekeeperMiddleware = try request. make ( GatekeeperMiddleware . self)
68
68
69
69
for _ in 0 ..< 50 {
70
70
do {
71
- _ = try gateKeeper . accessEndpoint ( on : request) . wait ( )
71
+ _ = try gatekeeperMiddleware . respond ( to : request, chainingTo : TestResponder ( ) ) . wait ( )
72
72
} catch {
73
73
XCTFail ( " Rate limiter failed: \( error) " )
74
74
break
@@ -81,7 +81,7 @@ class GatekeeperTests: XCTestCase {
81
81
82
82
Thread . sleep ( forTimeInterval: 1 )
83
83
do {
84
- _ = try gateKeeper . accessEndpoint ( on : request) . wait ( )
84
+ _ = try gatekeeperMiddleware . respond ( to : request, chainingTo : TestResponder ( ) ) . wait ( )
85
85
} catch {
86
86
XCTFail ( " Rate limiter failed: \( error) " )
87
87
}
@@ -90,6 +90,35 @@ class GatekeeperTests: XCTestCase {
90
90
XCTAssertEqual ( entry!. requestsLeft, 99 , " Requests left should've reset " )
91
91
}
92
92
93
+ func testGateKeeperWithCacheFactory( ) throws {
94
+
95
+ let request = try Request . test (
96
+ gatekeeperConfig: GatekeeperConfig ( maxRequests: 10 , per: . minute) ,
97
+ peerName: " ::1 " ,
98
+ cacheFactory: { try $0. make ( KeyedCache . self) }
99
+ )
100
+
101
+ let gatekeeperMiddleware = try request. make ( GatekeeperMiddleware . self)
102
+
103
+ for i in 1 ... 11 {
104
+ do {
105
+ _ = try gatekeeperMiddleware. respond ( to: request, chainingTo: TestResponder ( ) ) . wait ( )
106
+ XCTAssertTrue ( i <= 10 , " ran \( i) times. " )
107
+ } catch let error as Abort {
108
+ switch error. status {
109
+ case . tooManyRequests:
110
+ //success
111
+ XCTAssertEqual ( i, 11 , " Should've failed after the 11th attempt. " )
112
+ break
113
+ default :
114
+ XCTFail ( " Expected too many request: \( error) " )
115
+ }
116
+ } catch {
117
+ XCTFail ( " Caught wrong error: \( error) " )
118
+ }
119
+ }
120
+ }
121
+
93
122
func testRefreshIntervalValues( ) {
94
123
let expected : [ ( GatekeeperConfig . Interval , Double ) ] = [
95
124
( . second, 1 ) ,
0 commit comments