diff --git a/.gitignore b/.gitignore index 9d0f30a4a..2fcd7fe12 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ docs/_build coverage +vendor/bundle diff --git a/lib/twilio-ruby/framework/rest/version.rb b/lib/twilio-ruby/framework/rest/version.rb index 455eab5bd..016422a76 100644 --- a/lib/twilio-ruby/framework/rest/version.rb +++ b/lib/twilio-ruby/framework/rest/version.rb @@ -105,11 +105,11 @@ def delete(method, uri, params: {}, data: {}, headers: {}, auth: nil, timeout: n timeout ) - if response.status_code < 200 || response.status_code >= 300 + if response.status_code < 200 || response.status_code >= 400 raise exception(response, 'Unable to delete record') end - response.status_code == 204 + response.status_code >= 200 && response.status_code < 400 end def read_limits(limit = nil, page_size = nil) diff --git a/spec/framework/version_spec.rb b/spec/framework/version_spec.rb index 3d1ff6a33..db06ca8bb 100644 --- a/spec/framework/version_spec.rb +++ b/spec/framework/version_spec.rb @@ -216,4 +216,44 @@ expect(actual).to_not eq(nil) end + + describe 'delete' do + it 'succeeds with status code 204' do + @holodeck.mock(Twilio::Response.new(204, '')) + actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').messages('MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').delete + expect(actual).to eq(true) + end + + it 'succeeds with status code 200' do + @holodeck.mock(Twilio::Response.new(200, '')) + actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').messages('MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').delete + expect(actual).to eq(true) + end + + it 'succeeds with status code 202' do + @holodeck.mock(Twilio::Response.new(202, '')) + actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').messages('MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').delete + expect(actual).to eq(true) + end + + it 'succeeds with 3xx redirect code (307)' do + @holodeck.mock(Twilio::Response.new(307, '')) + actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').messages('MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').delete + expect(actual).to eq(true) + end + + it 'fails with 4xx error code (404)' do + @holodeck.mock(Twilio::Response.new(404, '{"message": "Not found"}')) + expect { + @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').messages('MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').delete + }.to raise_error(Twilio::REST::RestError) + end + + it 'fails with 5xx error code (500)' do + @holodeck.mock(Twilio::Response.new(500, '{"message": "Internal server error"}')) + expect { + @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').messages('MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX').delete + }.to raise_error(Twilio::REST::RestError) + end + end end