Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Improve exception handling when Location header is invalid. [#1192 st…

…ate:resolved]

Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
  • Loading branch information...
commit 166c63818e901e64786a76029febf7c9cdb40f2d 1 parent 91eeb0f
@sporkmonger sporkmonger authored lifo committed
View
2  activeresource/lib/active_resource/base.rb
@@ -1006,7 +1006,7 @@ def load_attributes_from_response(response)
# Takes a response from a typical create post and pulls the ID out
def id_from_response(response)
- response['Location'][/\/([^\/]*?)(\.\w+)?$/, 1]
+ response['Location'][/\/([^\/]*?)(\.\w+)?$/, 1] if response['Location']
end
def element_path(options = nil)
View
15 activeresource/test/base_test.rb
@@ -627,6 +627,12 @@ def test_id_from_response
assert_equal '1', p.__send__(:id_from_response, resp)
end
+ def test_id_from_response_without_location
+ p = Person.new
+ resp = {}
+ assert_equal nil, p.__send__(:id_from_response, resp)
+ end
+
def test_create_with_custom_prefix
matzs_house = StreetAddress.new(:person_id => 1)
matzs_house.save
@@ -670,7 +676,6 @@ def test_reload_works_without_prefix_options
assert_equal person, person.reload
end
-
def test_create
rick = Person.create(:name => 'Rick')
assert rick.valid?
@@ -687,6 +692,14 @@ def test_create
assert_raises(ActiveResource::ResourceConflict) { Person.create(:name => 'Rick') }
end
+ def test_create_without_location
+ ActiveResource::HttpMock.respond_to do |mock|
+ mock.post "/people.xml", {}, nil, 201
+ end
+ person = Person.create(:name => 'Rick')
+ assert_equal nil, person.id
+ end
+
def test_clone
matz = Person.find(1)
matz_c = matz.clone

0 comments on commit 166c638

Please sign in to comment.
Something went wrong with that request. Please try again.