grape-throttle 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7aa5547937fb454f0583fb0de8afa0bd4bc9f24
4
- data.tar.gz: 5187f0ef73e75a02e5740a634070c88c46da05ba
3
+ metadata.gz: 7ed50ef26f42b2a23a70ca4980f489a0aa84054d
4
+ data.tar.gz: 9637edba76b7b8962e6c94d0d45cc97e3fb9820d
5
5
  SHA512:
6
- metadata.gz: e5f9d9602b3b66a10407c56781a81f36443622106a70170ce05d52f2012d077df3962e4302ea6c81ab4d3257bd4283e76e1f00aaf1a71fd2ef294391c8eb21c4
7
- data.tar.gz: 2344d9a392ebd39aed4f5c931509ace4ec989f5677633fc1ae6e893a6be947e689c55f495606126325c64d5970abd71b96ccbc25f6d60333ed2893492c33ed84
6
+ metadata.gz: 53d9d218043ac41857ba6cbde85eca9069a557ef4374b57dc3882f08447d12f68ddcf6c5626a464de02eeb4d27d023136b532e32d669501e95c4e48e8517e1b7
7
+ data.tar.gz: 636e71131d1aca85d3ade3eb523654127aec25a7b6a8cfd26823e640bd7e64122c88c3756dfbfb5cbbb24ff7180b0872b303e3d3dac8811f70a293189fe2da8f
@@ -11,6 +11,11 @@ module Grape
11
11
  period = 1.day
12
12
  elsif limit = throttle_options[:monthly]
13
13
  period = 1.month
14
+ elsif period = throttle_options[:period]
15
+ limit = throttle_options[:limit]
16
+ end
17
+ if limit.nil? || period.nil?
18
+ raise ArgumentError.new('Please set a period and limit (see documentation)')
14
19
  end
15
20
 
16
21
  user_key = options[:user_key]
@@ -9,6 +9,20 @@ describe "ThrottleHelper" do
9
9
  get('/throttle') do
10
10
  "step on it"
11
11
  end
12
+
13
+ get('/no-throttle') do
14
+ "step on it"
15
+ end
16
+
17
+ throttle period: 10.minutes, limit: 3
18
+ get('/throttle-custom-period') do
19
+ "step on it"
20
+ end
21
+
22
+ throttle
23
+ get('/wrong-configuration') do
24
+ "step on it"
25
+ end
12
26
  end
13
27
  end
14
28
 
@@ -26,5 +40,31 @@ describe "ThrottleHelper" do
26
40
  4.times { get "/throttle" }
27
41
  expect(last_response.status).to eq(403)
28
42
  end
43
+
44
+ describe "with custom period" do
45
+
46
+ it "is not throttled within the rate limit" do
47
+ 3.times { get "/throttle-custom-period" }
48
+ expect(last_response.status).to eq(200)
49
+ end
50
+
51
+ it "is throttled beyond the rate limit" do
52
+ 4.times { get "/throttle-custom-period" }
53
+ expect(last_response.status).to eq(403)
54
+ end
55
+
56
+ end
57
+
58
+ it "throws an error if period or limit is missing" do
59
+ expect { get("wrong-configuration") }.to raise_exception
60
+ end
61
+
62
+ it "only throttles if explicitly specified" do
63
+ expect do
64
+ 10.times { get "/no-throttle" }
65
+ end.not_to raise_exception
66
+ expect(last_response.status).to eq(200)
67
+ end
68
+
29
69
  end
30
70
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-throttle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alejandro Wainzinger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-03 00:00:00.000000000 Z
11
+ date: 2015-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack-test