rory 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rory/application.rb +15 -2
- data/lib/rory/request_parameter_logger.rb +2 -2
- data/lib/rory/version.rb +1 -1
- data/rory.gemspec +1 -1
- data/spec/fixture_app/config/application.rb +1 -0
- data/spec/lib/rory/application_spec.rb +72 -11
- data/spec/lib/rory/dispatcher_spec.rb +9 -0
- data/spec/lib/rory/request_parameter_logger_spec.rb +6 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df765583fa4f315b7f217e8324523d7dd4b3c2ba
|
4
|
+
data.tar.gz: f977ad97a93566d606319301ea03a06447c2a260
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c2dd88f139db2931ebe7fdb9153c6ca4180d65f36622fdc51e18859ae55f6661636fe5c5b525564b9ac6973f9980a2e6266b8508317579f87bce4218b68bf83
|
7
|
+
data.tar.gz: 152c81f7ab8498553a4d4e1dce0d583c25d29bd882c8c776178e8b73815b3a3f9a08e2ab3e2300b8c95f50d0b2efc034348522125a0089efac00574ebc5c8a4f
|
data/lib/rory/application.rb
CHANGED
@@ -118,15 +118,28 @@ module Rory
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def turn_off_request_logging!
|
121
|
-
|
121
|
+
reset_stack
|
122
122
|
@request_logging = false
|
123
123
|
end
|
124
124
|
|
125
|
+
def parameters_to_filter
|
126
|
+
@parameters_to_filter || [:password]
|
127
|
+
end
|
128
|
+
|
129
|
+
def filter_parameters(*params)
|
130
|
+
reset_stack
|
131
|
+
@parameters_to_filter = params
|
132
|
+
end
|
133
|
+
|
134
|
+
def reset_stack
|
135
|
+
@stack = nil
|
136
|
+
end
|
137
|
+
|
125
138
|
def use_default_middleware
|
126
139
|
if request_logging_on?
|
127
140
|
use_middleware Rack::PostBodyContentTypeParser
|
128
141
|
use_middleware Rack::CommonLogger, logger
|
129
|
-
use_middleware Rory::RequestParameterLogger, logger
|
142
|
+
use_middleware Rory::RequestParameterLogger, logger, :filters => parameters_to_filter
|
130
143
|
end
|
131
144
|
end
|
132
145
|
|
@@ -3,10 +3,10 @@ require_relative 'parameter_filter'
|
|
3
3
|
module Rory
|
4
4
|
class RequestParameterLogger
|
5
5
|
|
6
|
-
def initialize(app, logger=nil,
|
6
|
+
def initialize(app, logger = nil, options = {})
|
7
7
|
@app = app
|
8
8
|
@logger = logger
|
9
|
-
@filters = filters
|
9
|
+
@filters = options.fetch(:filters, [])
|
10
10
|
end
|
11
11
|
|
12
12
|
def call(env)
|
data/lib/rory/version.rb
CHANGED
data/rory.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.name = "rory"
|
9
9
|
s.version = Rory::VERSION
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
|
-
s.authors = ["Ravi Gadad"]
|
11
|
+
s.authors = ["Ravi Gadad", "Michael Irey", "David Begin"]
|
12
12
|
s.email = ["ravi@screamingmuse.com"]
|
13
13
|
s.homepage = "http://github.com/screamingmuse/rory"
|
14
14
|
s.summary = "Another Ruby web framework. Just what the world needs."
|
@@ -61,14 +61,20 @@ describe Rory::Application do
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
describe ".dispatcher" do
|
65
|
+
it "returns new dispatcher rack app" do
|
66
|
+
allow(Rory::Dispatcher).to receive(:rack_app).
|
67
|
+
with(subject).and_return(:dispatcher_app)
|
68
|
+
expect(subject.dispatcher).to eq(:dispatcher_app)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
64
72
|
describe ".call" do
|
65
|
-
it "
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
expect(Rory::Dispatcher).to receive(:new).with(rack_request, subject.instance).and_return(dispatcher)
|
71
|
-
expect(subject.call(env)).to eq(:expected)
|
73
|
+
it "calls the stack with the given environment" do
|
74
|
+
stack = double
|
75
|
+
allow(stack).to receive(:call).with(:the_env).and_return(:expected)
|
76
|
+
expect(subject.instance).to receive(:stack).and_return(stack)
|
77
|
+
expect(subject.call(:the_env)).to eq(:expected)
|
72
78
|
end
|
73
79
|
end
|
74
80
|
|
@@ -90,7 +96,7 @@ describe Rory::Application do
|
|
90
96
|
end
|
91
97
|
|
92
98
|
describe ".logger" do
|
93
|
-
it "
|
99
|
+
it "returns a logger" do
|
94
100
|
logger = double
|
95
101
|
allow_any_instance_of(subject).to receive(:log_file)
|
96
102
|
allow(Logger).to receive(:new).and_return(logger)
|
@@ -98,19 +104,68 @@ describe Rory::Application do
|
|
98
104
|
end
|
99
105
|
end
|
100
106
|
|
107
|
+
describe ".turn_off_request_logging!" do
|
108
|
+
it "resets stack and turns off request logging" do
|
109
|
+
subject.instance.instance_variable_set(:@request_logging, :true)
|
110
|
+
expect(subject.request_logging_on?).to eq(true)
|
111
|
+
expect(subject.instance).to receive(:reset_stack)
|
112
|
+
subject.turn_off_request_logging!
|
113
|
+
expect(subject.request_logging_on?).to eq(false)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe ".filter_parameters" do
|
118
|
+
it "resets stack and sets parameters to filter" do
|
119
|
+
expect(subject.instance).to receive(:reset_stack)
|
120
|
+
subject.filter_parameters :dog, :kitty
|
121
|
+
expect(subject.parameters_to_filter).to eq([:dog, :kitty])
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe ".reset_stack" do
|
126
|
+
it "clears memoization of stack" do
|
127
|
+
stack = subject.stack
|
128
|
+
expect(subject.stack).to eq(stack)
|
129
|
+
subject.reset_stack
|
130
|
+
expect(subject.stack).not_to eq(stack)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe ".stack" do
|
135
|
+
it "returns a rack builder instance with configured middleware" do
|
136
|
+
builder = double
|
137
|
+
allow(subject.instance).to receive(:dispatcher).
|
138
|
+
and_return(:the_dispatcher)
|
139
|
+
allow(Rack::Builder).to receive(:new).and_return(builder)
|
140
|
+
subject.use_middleware :horse
|
141
|
+
expect(subject.instance).to receive(:use_default_middleware)
|
142
|
+
expect(builder).to receive(:use).with(:horse)
|
143
|
+
expect(builder).to receive(:run).with(:the_dispatcher)
|
144
|
+
expect(subject.stack).to eq(builder)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
describe ".parameters_to_filter" do
|
149
|
+
it "returns [:password] by default" do
|
150
|
+
expect(subject.parameters_to_filter).to eq([:password])
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
101
154
|
describe ".use_default_middleware" do
|
102
155
|
it "adds middleware when request logging is on" do
|
103
156
|
allow(subject.instance).to receive(:request_logging_on?).and_return(true)
|
157
|
+
allow(subject.instance).to receive(:parameters_to_filter).and_return([:horses])
|
104
158
|
allow(subject.instance).to receive(:logger).and_return(:the_logger)
|
159
|
+
expect(subject.instance).to receive(:use_middleware).with(Rack::PostBodyContentTypeParser)
|
160
|
+
expect(subject.instance).to receive(:use_middleware).with(Rack::CommonLogger, :the_logger)
|
161
|
+
expect(subject.instance).to receive(:use_middleware).with(Rory::RequestParameterLogger, :the_logger, :filters => [:horses])
|
105
162
|
subject.use_default_middleware
|
106
|
-
expect(subject.middleware.count).to_not eq(0)
|
107
163
|
end
|
108
164
|
|
109
165
|
it "does not add middleware when request logging is off" do
|
110
166
|
allow(subject.instance).to receive(:request_logging_on?).and_return(false)
|
111
|
-
|
167
|
+
expect(subject.instance).to receive(:use_middleware).never
|
112
168
|
subject.use_default_middleware
|
113
|
-
expect(subject.middleware.count).to eq(0)
|
114
169
|
end
|
115
170
|
end
|
116
171
|
|
@@ -201,5 +256,11 @@ describe Rory::Application do
|
|
201
256
|
]
|
202
257
|
end
|
203
258
|
end
|
259
|
+
|
260
|
+
describe ".parameters_to_filter" do
|
261
|
+
it "returns overridden parameters" do
|
262
|
+
expect(subject.parameters_to_filter).to eq([:orcas, :noodles])
|
263
|
+
end
|
264
|
+
end
|
204
265
|
end
|
205
266
|
end
|
@@ -55,6 +55,15 @@ describe Rory::Dispatcher do
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
+
describe ".rack_app" do
|
59
|
+
it "returns a callable object that dispatches to a new dispatcher" do
|
60
|
+
allow(Rack::Request).to receive(:new).with(:env).and_return(:a_request)
|
61
|
+
allow(described_class).to receive(:new).with(:a_request, :the_app).and_return(subject)
|
62
|
+
allow(subject).to receive(:dispatch).and_return(:the_dispatch)
|
63
|
+
expect(described_class.rack_app(:the_app).call(:env)).to eq(:the_dispatch)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
58
67
|
describe "#dispatch" do
|
59
68
|
let(:request) { { :whatever => :yay } }
|
60
69
|
before(:each) do
|
@@ -2,7 +2,7 @@ describe Rory::RequestParameterLogger do
|
|
2
2
|
|
3
3
|
let(:logger) { double(:write) }
|
4
4
|
let(:app) { double(:call) }
|
5
|
-
subject { described_class.new(app, logger, :filters) }
|
5
|
+
subject { described_class.new(app, logger, :filters => :filters) }
|
6
6
|
|
7
7
|
describe '#initialize' do
|
8
8
|
it 'returns a new RequestParameterLogger' do
|
@@ -14,6 +14,11 @@ describe Rory::RequestParameterLogger do
|
|
14
14
|
expect(subject.instance_variable_get(:@logger)).to eq(logger)
|
15
15
|
expect(subject.instance_variable_get(:@filters)).to eq(:filters)
|
16
16
|
end
|
17
|
+
|
18
|
+
it 'defaults filters to empty array' do
|
19
|
+
no_filter_logger = described_class.new(app, logger)
|
20
|
+
expect(no_filter_logger.instance_variable_get(:@filters)).to eq([])
|
21
|
+
end
|
17
22
|
end
|
18
23
|
|
19
24
|
describe '#log_request' do
|
metadata
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ravi Gadad
|
8
|
+
- Michael Irey
|
9
|
+
- David Begin
|
8
10
|
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
13
|
+
date: 2015-06-18 00:00:00.000000000 Z
|
12
14
|
dependencies:
|
13
15
|
- !ruby/object:Gem::Dependency
|
14
16
|
name: rack
|