Skip to content

Commit

Permalink
Merge pull request #378 from jnunemaker/regression-test-for-escaping-…
Browse files Browse the repository at this point in the history
…feature-names

Add regression test for escaping feature names
  • Loading branch information
jnunemaker authored Oct 5, 2018
2 parents 7070a43 + b5ce3b3 commit 117d0e9
Showing 1 changed file with 61 additions and 42 deletions.
103 changes: 61 additions & 42 deletions spec/flipper/ui/action_spec.rb
Original file line number Diff line number Diff line change
@@ -1,59 +1,78 @@
require 'helper'

RSpec.describe Flipper::UI::Action do
let(:action_subclass) do
Class.new(described_class) do
def noooope
raise 'should never run this'
end
describe 'request methods' do
let(:action_subclass) do
Class.new(described_class) do
def noooope
raise 'should never run this'
end

def get
[200, {}, 'get']
end
def get
[200, {}, 'get']
end

def post
[200, {}, 'post']
end
def post
[200, {}, 'post']
end

def put
[200, {}, 'put']
end
def put
[200, {}, 'put']
end

def delete
[200, {}, 'delete']
def delete
[200, {}, 'delete']
end
end
end
end

it "won't run method that isn't whitelisted" do
fake_request = Struct.new(:request_method, :env, :session).new('NOOOOPE', {}, {})
action = action_subclass.new(flipper, fake_request)
expect do
action.run
end.to raise_error(Flipper::UI::RequestMethodNotSupported)
end
it "won't run method that isn't whitelisted" do
fake_request = Struct.new(:request_method, :env, :session).new('NOOOOPE', {}, {})
action = action_subclass.new(flipper, fake_request)
expect do
action.run
end.to raise_error(Flipper::UI::RequestMethodNotSupported)
end

it 'will run get' do
fake_request = Struct.new(:request_method, :env, :session).new('GET', {}, {})
action = action_subclass.new(flipper, fake_request)
expect(action.run).to eq([200, {}, 'get'])
end
it 'will run get' do
fake_request = Struct.new(:request_method, :env, :session).new('GET', {}, {})
action = action_subclass.new(flipper, fake_request)
expect(action.run).to eq([200, {}, 'get'])
end

it 'will run post' do
fake_request = Struct.new(:request_method, :env, :session).new('POST', {}, {})
action = action_subclass.new(flipper, fake_request)
expect(action.run).to eq([200, {}, 'post'])
end
it 'will run post' do
fake_request = Struct.new(:request_method, :env, :session).new('POST', {}, {})
action = action_subclass.new(flipper, fake_request)
expect(action.run).to eq([200, {}, 'post'])
end

it 'will run put' do
fake_request = Struct.new(:request_method, :env, :session).new('PUT', {}, {})
action = action_subclass.new(flipper, fake_request)
expect(action.run).to eq([200, {}, 'put'])
it 'will run put' do
fake_request = Struct.new(:request_method, :env, :session).new('PUT', {}, {})
action = action_subclass.new(flipper, fake_request)
expect(action.run).to eq([200, {}, 'put'])
end
end

it 'will run delete' do
fake_request = Struct.new(:request_method, :env, :session).new('DELETE', {}, {})
action = action_subclass.new(flipper, fake_request)
expect(action.run).to eq([200, {}, 'delete'])
describe 'FeatureNameFromRoute' do
let(:action_subclass) do
Class.new(described_class) do |parent|
include parent::FeatureNameFromRoute

route %r{\A/features/(?<feature_name>.*)\Z}

def get
[200, { feature_name: feature_name }, 'get']
end
end
end

it 'decodes feature_name' do
requested_feature_name = Rack::Utils.escape("team:side_pane")
fake_request = Struct
.new(:request_method, :env, :session, :path_info)
.new('GET', {}, {}, "/features/#{requested_feature_name}")
action = action_subclass.new(flipper, fake_request)
expect(action.run).to eq([200, { feature_name: "team:side_pane" }, 'get'])
end
end
end

0 comments on commit 117d0e9

Please sign in to comment.