Accept SHA256 as identifier for API playlists/show

This commit is contained in:
Thibault Jouan 2015-05-05 02:27:29 +00:00
parent 3089462d97
commit fedf565389
2 changed files with 12 additions and 2 deletions

View File

@ -12,7 +12,10 @@ module API
private private
def set_sound def set_sound
@sound = Sound.find(params[:id]) @sound = case params[:id]
when /\A\d+\z/ then Sound.find(params[:id])
when /\A\h+\z/ then Sound.find_by_sha256!(params[:id])
end
end end
end end
end end

View File

@ -4,7 +4,8 @@ describe 'API sounds' do
describe 'sound show' do describe 'sound show' do
let(:sound) { create :sound } let(:sound) { create :sound }
let(:request_method) { :get } let(:request_method) { :get }
let(:request_show) { send request_method, api_sound_path(sound) } let(:request_path) { api_sound_path(sound) }
let(:request_show) { send request_method, request_path }
subject { response } subject { response }
before { request_show } before { request_show }
@ -28,5 +29,11 @@ describe 'API sounds' do
expect(response.body).to be_empty expect(response.body).to be_empty
end end
end end
context 'when sound is requested by SHA256 digest' do
let(:request_path) { api_sound_path id: sound.sha256 }
it { is_expected.to have_http_status 200 }
end
end end
end end