Skip to content

Commit f39bd24

Browse files
committed
Build security per request
1 parent 691ad05 commit f39bd24

File tree

4 files changed

+50
-12
lines changed

4 files changed

+50
-12
lines changed

app/helpers/filestack_rails/application_helper.rb

+12-7
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,11 @@ def get_client_and_api_key
8282
end
8383

8484
def get_policy_and_signature
85-
if ::Rails.application.config.filestack_rails.security
86-
signature = ::Rails.application.config.filestack_rails.security.signature
87-
policy = ::Rails.application.config.filestack_rails.security.policy
88-
else
89-
signature = nil
90-
policy = nil
85+
if security
86+
signature = security.signature
87+
policy = security.policy
9188
end
92-
return [signature, policy]
89+
[signature, policy]
9390
end
9491

9592
def get_policy_and_signature_string
@@ -104,5 +101,13 @@ def get_policy_and_signature_string
104101
"''"
105102
end
106103
end
104+
105+
def security
106+
security_options = ::Rails.application.config.filestack_rails.security
107+
app_secret = ::Rails.application.config.filestack_rails.app_secret
108+
109+
return nil unless security_options
110+
FilestackSecurity.new(app_secret, options: security_options)
111+
end
107112
end
108113
end

lib/filestack_rails/configuration.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@ def security=(security_options = {})
2222
if @app_secret.nil?
2323
raise 'You must have secret key to use security'
2424
end
25-
@security = FilestackSecurity.new(@app_secret, options: security_options)
25+
@security = security_options
2626
end
2727

28+
def app_secret
29+
@app_secret or nil
30+
end
2831
end
2932
end

spec/helpers/application_helper_spec.rb

+22-2
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,37 @@
4747
end
4848

4949
describe "#get_policy_and_signature_string" do
50+
let(:signature) { "signature123" }
51+
let(:policy) { "policy321" }
52+
5053
it "returns correct data" do
5154
allow_any_instance_of(FilestackRails::ApplicationHelper).to receive(:get_policy_and_signature)
52-
.and_return(["21312SDFSDF", "4234DSFSDFDSF"])
55+
.and_return([:signature, :policy])
5356

5457
expect(get_policy_and_signature_string).to eq(
55-
"{\"security\":{\"signature\":\"21312SDFSDF\",\"policy\":\"4234DSFSDFDSF\"}}"
58+
{"security":{"signature": :signature, "policy": :policy}}.to_json
5659
)
5760
end
5861

5962
it "returns empty data" do
6063
expect(get_policy_and_signature_string).to eq("''")
6164
end
6265
end
66+
67+
describe "#security" do
68+
it "returns signature and policy" do
69+
allow(Rails.application.config.filestack_rails).to receive(:security)
70+
.and_return({call: %w[read store pick stat write], expiry: 60})
71+
allow(Rails.application.config.filestack_rails).to receive(:app_secret)
72+
.and_return('app_secret123')
73+
74+
expect(security.policy).to be
75+
expect(security.signature).to be
76+
end
77+
78+
it "does not return signature and policy" do
79+
allow(::Rails.application.config.filestack_rails).to receive(:security).and_return(nil)
80+
expect(security).to be(nil)
81+
end
82+
end
6383
end

spec/lib/configuration_spec.rb

+12-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
it 'has security' do
3333
configuration.app_secret = 'somesecret'
3434
configuration.security = {}
35-
expect(configuration.security.policy)
36-
expect(configuration.security.signature)
35+
expect(configuration.security).to eq({})
3736
end
3837

3938
it 'has not defined @app_secret' do
@@ -84,4 +83,15 @@
8483
expect(configuration.expiry).to eq expiry
8584
end
8685
end
86+
87+
describe '#app_secret' do
88+
it 'has defined value' do
89+
configuration.app_secret = "my app secret"
90+
expect(configuration.app_secret).to eq("my app secret")
91+
end
92+
93+
it 'has no @app_secret' do
94+
expect(configuration.app_secret).to eq(nil)
95+
end
96+
end
8797
end

0 commit comments

Comments
 (0)