activeresource 2.3.18 → 3.0.0.beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of activeresource might be problematic. Click here for more details.
- data/CHANGELOG +1 -29
 - data/README +7 -7
 - data/examples/simple.rb +15 -0
 - data/lib/active_resource.rb +17 -17
 - data/lib/active_resource/base.rb +320 -66
 - data/lib/active_resource/connection.rb +100 -100
 - data/lib/active_resource/custom_methods.rb +33 -36
 - data/lib/active_resource/exceptions.rb +4 -1
 - data/lib/active_resource/formats.rb +4 -4
 - data/lib/active_resource/formats/json_format.rb +2 -0
 - data/lib/active_resource/formats/xml_format.rb +2 -0
 - data/lib/active_resource/http_mock.rb +12 -103
 - data/lib/active_resource/observing.rb +21 -0
 - data/lib/active_resource/railtie.rb +17 -0
 - data/lib/active_resource/railties/subscriber.rb +15 -0
 - data/lib/active_resource/schema.rb +55 -0
 - data/lib/active_resource/validations.rb +66 -215
 - data/lib/active_resource/version.rb +3 -3
 - metadata +29 -43
 - data/Rakefile +0 -137
 - data/lib/activeresource.rb +0 -2
 - data/test/abstract_unit.rb +0 -21
 - data/test/authorization_test.rb +0 -122
 - data/test/base/custom_methods_test.rb +0 -100
 - data/test/base/equality_test.rb +0 -52
 - data/test/base/load_test.rb +0 -161
 - data/test/base_errors_test.rb +0 -98
 - data/test/base_test.rb +0 -1087
 - data/test/connection_test.rb +0 -238
 - data/test/fixtures/beast.rb +0 -14
 - data/test/fixtures/customer.rb +0 -3
 - data/test/fixtures/person.rb +0 -3
 - data/test/fixtures/proxy.rb +0 -4
 - data/test/fixtures/street_address.rb +0 -4
 - data/test/format_test.rb +0 -112
 - data/test/http_mock_test.rb +0 -155
 - data/test/setter_trap.rb +0 -26
 
    
        data/test/connection_test.rb
    DELETED
    
    | 
         @@ -1,238 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'abstract_unit'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class ConnectionTest < Test::Unit::TestCase
         
     | 
| 
       4 
     | 
    
         
            -
              ResponseCodeStub = Struct.new(:code)
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              def setup
         
     | 
| 
       7 
     | 
    
         
            -
                @conn = ActiveResource::Connection.new('http://localhost')
         
     | 
| 
       8 
     | 
    
         
            -
                @matz  = { :id => 1, :name => 'Matz' }
         
     | 
| 
       9 
     | 
    
         
            -
                @david = { :id => 2, :name => 'David' }
         
     | 
| 
       10 
     | 
    
         
            -
                @people = [ @matz, @david ].to_xml(:root => 'people')
         
     | 
| 
       11 
     | 
    
         
            -
                @people_single = [ @matz ].to_xml(:root => 'people-single-elements')
         
     | 
| 
       12 
     | 
    
         
            -
                @people_empty = [ ].to_xml(:root => 'people-empty-elements')
         
     | 
| 
       13 
     | 
    
         
            -
                @matz = @matz.to_xml(:root => 'person')
         
     | 
| 
       14 
     | 
    
         
            -
                @david = @david.to_xml(:root => 'person')
         
     | 
| 
       15 
     | 
    
         
            -
                @header = {'key' => 'value'}.freeze
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                @default_request_headers = { 'Content-Type' => 'application/xml' }
         
     | 
| 
       18 
     | 
    
         
            -
                ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       19 
     | 
    
         
            -
                  mock.get    "/people/2.xml", @header, @david
         
     | 
| 
       20 
     | 
    
         
            -
                  mock.get    "/people.xml", {}, @people
         
     | 
| 
       21 
     | 
    
         
            -
                  mock.get    "/people_single_elements.xml", {}, @people_single
         
     | 
| 
       22 
     | 
    
         
            -
                  mock.get    "/people_empty_elements.xml", {}, @people_empty
         
     | 
| 
       23 
     | 
    
         
            -
                  mock.get    "/people/1.xml", {}, @matz
         
     | 
| 
       24 
     | 
    
         
            -
                  mock.put    "/people/1.xml", {}, nil, 204
         
     | 
| 
       25 
     | 
    
         
            -
                  mock.put    "/people/2.xml", {}, @header, 204
         
     | 
| 
       26 
     | 
    
         
            -
                  mock.delete "/people/1.xml", {}, nil, 200
         
     | 
| 
       27 
     | 
    
         
            -
                  mock.delete "/people/2.xml", @header, nil, 200
         
     | 
| 
       28 
     | 
    
         
            -
                  mock.post   "/people.xml",   {}, nil, 201, 'Location' => '/people/5.xml'
         
     | 
| 
       29 
     | 
    
         
            -
                  mock.post   "/members.xml",  {}, @header, 201, 'Location' => '/people/6.xml'
         
     | 
| 
       30 
     | 
    
         
            -
                  mock.head   "/people/1.xml", {}, nil, 200
         
     | 
| 
       31 
     | 
    
         
            -
                end
         
     | 
| 
       32 
     | 
    
         
            -
              end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
              def test_handle_response
         
     | 
| 
       35 
     | 
    
         
            -
                # 2xx and 3xx are valid responses.
         
     | 
| 
       36 
     | 
    
         
            -
                [200, 299, 300, 399].each do |code|
         
     | 
| 
       37 
     | 
    
         
            -
                  expected = ResponseCodeStub.new(code)
         
     | 
| 
       38 
     | 
    
         
            -
                  assert_equal expected, handle_response(expected)
         
     | 
| 
       39 
     | 
    
         
            -
                end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                # 400 is a bad request (e.g. malformed URI or missing request parameter)
         
     | 
| 
       42 
     | 
    
         
            -
                assert_response_raises ActiveResource::BadRequest, 400
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                # 401 is an unauthorized request
         
     | 
| 
       45 
     | 
    
         
            -
                assert_response_raises ActiveResource::UnauthorizedAccess, 401
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                # 403 is a forbidden requst (and authorizing will not help)
         
     | 
| 
       48 
     | 
    
         
            -
                assert_response_raises ActiveResource::ForbiddenAccess, 403
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                # 404 is a missing resource.
         
     | 
| 
       51 
     | 
    
         
            -
                assert_response_raises ActiveResource::ResourceNotFound, 404
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                # 405 is a missing not allowed error
         
     | 
| 
       54 
     | 
    
         
            -
                assert_response_raises ActiveResource::MethodNotAllowed, 405
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
                # 409 is an optimistic locking error
         
     | 
| 
       57 
     | 
    
         
            -
                assert_response_raises ActiveResource::ResourceConflict, 409
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                # 410 is a removed resource
         
     | 
| 
       60 
     | 
    
         
            -
                assert_response_raises ActiveResource::ResourceGone, 410
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
                # 422 is a validation error
         
     | 
| 
       63 
     | 
    
         
            -
                assert_response_raises ActiveResource::ResourceInvalid, 422
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
                # 4xx are client errors.
         
     | 
| 
       66 
     | 
    
         
            -
                [402, 499].each do |code|
         
     | 
| 
       67 
     | 
    
         
            -
                  assert_response_raises ActiveResource::ClientError, code
         
     | 
| 
       68 
     | 
    
         
            -
                end
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                # 5xx are server errors.
         
     | 
| 
       71 
     | 
    
         
            -
                [500, 599].each do |code|
         
     | 
| 
       72 
     | 
    
         
            -
                  assert_response_raises ActiveResource::ServerError, code
         
     | 
| 
       73 
     | 
    
         
            -
                end
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
                # Others are unknown.
         
     | 
| 
       76 
     | 
    
         
            -
                [199, 600].each do |code|
         
     | 
| 
       77 
     | 
    
         
            -
                  assert_response_raises ActiveResource::ConnectionError, code
         
     | 
| 
       78 
     | 
    
         
            -
                end
         
     | 
| 
       79 
     | 
    
         
            -
              end
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
              ResponseHeaderStub = Struct.new(:code, :message, 'Allow')
         
     | 
| 
       82 
     | 
    
         
            -
              def test_should_return_allowed_methods_for_method_no_allowed_exception
         
     | 
| 
       83 
     | 
    
         
            -
                begin
         
     | 
| 
       84 
     | 
    
         
            -
                  handle_response ResponseHeaderStub.new(405, "HTTP Failed...", "GET, POST")
         
     | 
| 
       85 
     | 
    
         
            -
                rescue ActiveResource::MethodNotAllowed => e
         
     | 
| 
       86 
     | 
    
         
            -
                  assert_equal "Failed with 405 HTTP Failed...", e.message
         
     | 
| 
       87 
     | 
    
         
            -
                  assert_equal [:get, :post], e.allowed_methods
         
     | 
| 
       88 
     | 
    
         
            -
                end
         
     | 
| 
       89 
     | 
    
         
            -
              end
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
              def test_initialize_raises_argument_error_on_missing_site
         
     | 
| 
       92 
     | 
    
         
            -
                assert_raise(ArgumentError) { ActiveResource::Connection.new(nil) }
         
     | 
| 
       93 
     | 
    
         
            -
              end
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
              def test_site_accessor_accepts_uri_or_string_argument
         
     | 
| 
       96 
     | 
    
         
            -
                site = URI.parse("http://localhost")
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
                assert_raise(URI::InvalidURIError) { @conn.site = nil }
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
                assert_nothing_raised { @conn.site = "http://localhost" }
         
     | 
| 
       101 
     | 
    
         
            -
                assert_equal site, @conn.site
         
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
     | 
    
         
            -
                assert_nothing_raised { @conn.site = site }
         
     | 
| 
       104 
     | 
    
         
            -
                assert_equal site, @conn.site
         
     | 
| 
       105 
     | 
    
         
            -
              end
         
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
              def test_proxy_accessor_accepts_uri_or_string_argument
         
     | 
| 
       108 
     | 
    
         
            -
                proxy = URI.parse("http://proxy_user:proxy_password@proxy.local:4242")
         
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
                assert_nothing_raised { @conn.proxy = "http://proxy_user:proxy_password@proxy.local:4242" }
         
     | 
| 
       111 
     | 
    
         
            -
                assert_equal proxy, @conn.proxy
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
                assert_nothing_raised { @conn.proxy = proxy }
         
     | 
| 
       114 
     | 
    
         
            -
                assert_equal proxy, @conn.proxy
         
     | 
| 
       115 
     | 
    
         
            -
              end
         
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
              def test_timeout_accessor
         
     | 
| 
       118 
     | 
    
         
            -
                @conn.timeout = 5
         
     | 
| 
       119 
     | 
    
         
            -
                assert_equal 5, @conn.timeout
         
     | 
| 
       120 
     | 
    
         
            -
              end
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
              def test_get
         
     | 
| 
       123 
     | 
    
         
            -
                matz = @conn.get("/people/1.xml")
         
     | 
| 
       124 
     | 
    
         
            -
                assert_equal "Matz", matz["name"]
         
     | 
| 
       125 
     | 
    
         
            -
              end
         
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
     | 
    
         
            -
              def test_head
         
     | 
| 
       128 
     | 
    
         
            -
                response = @conn.head("/people/1.xml")
         
     | 
| 
       129 
     | 
    
         
            -
                assert response.body.blank?
         
     | 
| 
       130 
     | 
    
         
            -
                assert_equal 200, response.code
         
     | 
| 
       131 
     | 
    
         
            -
              end
         
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
              def test_get_with_header
         
     | 
| 
       134 
     | 
    
         
            -
                david = @conn.get("/people/2.xml", @header)
         
     | 
| 
       135 
     | 
    
         
            -
                assert_equal "David", david["name"]
         
     | 
| 
       136 
     | 
    
         
            -
              end
         
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
              def test_get_collection
         
     | 
| 
       139 
     | 
    
         
            -
                people = @conn.get("/people.xml")
         
     | 
| 
       140 
     | 
    
         
            -
                assert_equal "Matz", people[0]["name"]
         
     | 
| 
       141 
     | 
    
         
            -
                assert_equal "David", people[1]["name"]
         
     | 
| 
       142 
     | 
    
         
            -
              end
         
     | 
| 
       143 
     | 
    
         
            -
              
         
     | 
| 
       144 
     | 
    
         
            -
              def test_get_collection_single
         
     | 
| 
       145 
     | 
    
         
            -
                people = @conn.get("/people_single_elements.xml")
         
     | 
| 
       146 
     | 
    
         
            -
                assert_equal "Matz", people[0]["name"]
         
     | 
| 
       147 
     | 
    
         
            -
              end
         
     | 
| 
       148 
     | 
    
         
            -
              
         
     | 
| 
       149 
     | 
    
         
            -
              def test_get_collection_empty
         
     | 
| 
       150 
     | 
    
         
            -
                people = @conn.get("/people_empty_elements.xml")
         
     | 
| 
       151 
     | 
    
         
            -
                assert_equal [], people
         
     | 
| 
       152 
     | 
    
         
            -
              end
         
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
              def test_post
         
     | 
| 
       155 
     | 
    
         
            -
                response = @conn.post("/people.xml")
         
     | 
| 
       156 
     | 
    
         
            -
                assert_equal "/people/5.xml", response["Location"]
         
     | 
| 
       157 
     | 
    
         
            -
              end
         
     | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
       159 
     | 
    
         
            -
              def test_post_with_header
         
     | 
| 
       160 
     | 
    
         
            -
                response = @conn.post("/members.xml", @header)
         
     | 
| 
       161 
     | 
    
         
            -
                assert_equal "/people/6.xml", response["Location"]
         
     | 
| 
       162 
     | 
    
         
            -
              end
         
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
       164 
     | 
    
         
            -
              def test_put
         
     | 
| 
       165 
     | 
    
         
            -
                response = @conn.put("/people/1.xml")
         
     | 
| 
       166 
     | 
    
         
            -
                assert_equal 204, response.code
         
     | 
| 
       167 
     | 
    
         
            -
              end
         
     | 
| 
       168 
     | 
    
         
            -
             
     | 
| 
       169 
     | 
    
         
            -
              def test_put_with_header
         
     | 
| 
       170 
     | 
    
         
            -
                response = @conn.put("/people/2.xml", @header)
         
     | 
| 
       171 
     | 
    
         
            -
                assert_equal 204, response.code
         
     | 
| 
       172 
     | 
    
         
            -
              end
         
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
       174 
     | 
    
         
            -
              def test_delete
         
     | 
| 
       175 
     | 
    
         
            -
                response = @conn.delete("/people/1.xml")
         
     | 
| 
       176 
     | 
    
         
            -
                assert_equal 200, response.code
         
     | 
| 
       177 
     | 
    
         
            -
              end
         
     | 
| 
       178 
     | 
    
         
            -
             
     | 
| 
       179 
     | 
    
         
            -
              def test_delete_with_header
         
     | 
| 
       180 
     | 
    
         
            -
                response = @conn.delete("/people/2.xml", @header)
         
     | 
| 
       181 
     | 
    
         
            -
                assert_equal 200, response.code
         
     | 
| 
       182 
     | 
    
         
            -
              end
         
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
       184 
     | 
    
         
            -
              def test_timeout
         
     | 
| 
       185 
     | 
    
         
            -
                @http = mock('new Net::HTTP')
         
     | 
| 
       186 
     | 
    
         
            -
                @conn.expects(:http).returns(@http)
         
     | 
| 
       187 
     | 
    
         
            -
                @http.expects(:get).raises(Timeout::Error, 'execution expired')
         
     | 
| 
       188 
     | 
    
         
            -
                assert_raise(ActiveResource::TimeoutError) { @conn.get('/people_timeout.xml') }
         
     | 
| 
       189 
     | 
    
         
            -
              end
         
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
       191 
     | 
    
         
            -
              def test_setting_timeout
         
     | 
| 
       192 
     | 
    
         
            -
                http = Net::HTTP.new('')
         
     | 
| 
       193 
     | 
    
         
            -
             
     | 
| 
       194 
     | 
    
         
            -
                [10, 20].each do |timeout|
         
     | 
| 
       195 
     | 
    
         
            -
                  @conn.timeout = timeout
         
     | 
| 
       196 
     | 
    
         
            -
                  @conn.send(:configure_http, http)
         
     | 
| 
       197 
     | 
    
         
            -
                  assert_equal timeout, http.open_timeout
         
     | 
| 
       198 
     | 
    
         
            -
                  assert_equal timeout, http.read_timeout
         
     | 
| 
       199 
     | 
    
         
            -
                end
         
     | 
| 
       200 
     | 
    
         
            -
              end
         
     | 
| 
       201 
     | 
    
         
            -
             
     | 
| 
       202 
     | 
    
         
            -
              def test_accept_http_header
         
     | 
| 
       203 
     | 
    
         
            -
                @http = mock('new Net::HTTP')
         
     | 
| 
       204 
     | 
    
         
            -
                @conn.expects(:http).returns(@http)
         
     | 
| 
       205 
     | 
    
         
            -
                path = '/people/1.xml'
         
     | 
| 
       206 
     | 
    
         
            -
                @http.expects(:get).with(path,  {'Accept' => 'application/xhtml+xml'}).returns(ActiveResource::Response.new(@matz, 200, {'Content-Type' => 'text/xhtml'}))
         
     | 
| 
       207 
     | 
    
         
            -
                assert_nothing_raised(Mocha::ExpectationError) { @conn.get(path, {'Accept' => 'application/xhtml+xml'}) }
         
     | 
| 
       208 
     | 
    
         
            -
              end
         
     | 
| 
       209 
     | 
    
         
            -
             
     | 
| 
       210 
     | 
    
         
            -
              def test_ssl_options_get_applied_to_http
         
     | 
| 
       211 
     | 
    
         
            -
                http = Net::HTTP.new('')
         
     | 
| 
       212 
     | 
    
         
            -
                @conn.site="https://secure"
         
     | 
| 
       213 
     | 
    
         
            -
                @conn.ssl_options={:verify_mode => OpenSSL::SSL::VERIFY_PEER}
         
     | 
| 
       214 
     | 
    
         
            -
                @conn.timeout = 10 # prevent warning about uninitialized.
         
     | 
| 
       215 
     | 
    
         
            -
                @conn.send(:configure_http, http)
         
     | 
| 
       216 
     | 
    
         
            -
             
     | 
| 
       217 
     | 
    
         
            -
                assert http.use_ssl?
         
     | 
| 
       218 
     | 
    
         
            -
                assert_equal http.verify_mode, OpenSSL::SSL::VERIFY_PEER
         
     | 
| 
       219 
     | 
    
         
            -
              end
         
     | 
| 
       220 
     | 
    
         
            -
             
     | 
| 
       221 
     | 
    
         
            -
              def test_ssl_error
         
     | 
| 
       222 
     | 
    
         
            -
                http = Net::HTTP.new('')
         
     | 
| 
       223 
     | 
    
         
            -
                @conn.expects(:http).returns(http)
         
     | 
| 
       224 
     | 
    
         
            -
                http.expects(:get).raises(OpenSSL::SSL::SSLError, 'Expired certificate')
         
     | 
| 
       225 
     | 
    
         
            -
                assert_raise(ActiveResource::SSLError) { @conn.get('/people/1.xml') }
         
     | 
| 
       226 
     | 
    
         
            -
              end
         
     | 
| 
       227 
     | 
    
         
            -
             
     | 
| 
       228 
     | 
    
         
            -
              protected
         
     | 
| 
       229 
     | 
    
         
            -
                def assert_response_raises(klass, code)
         
     | 
| 
       230 
     | 
    
         
            -
                  assert_raise(klass, "Expected response code #{code} to raise #{klass}") do
         
     | 
| 
       231 
     | 
    
         
            -
                    handle_response ResponseCodeStub.new(code)
         
     | 
| 
       232 
     | 
    
         
            -
                  end
         
     | 
| 
       233 
     | 
    
         
            -
                end
         
     | 
| 
       234 
     | 
    
         
            -
             
     | 
| 
       235 
     | 
    
         
            -
                def handle_response(response)
         
     | 
| 
       236 
     | 
    
         
            -
                  @conn.__send__(:handle_response, response)
         
     | 
| 
       237 
     | 
    
         
            -
                end
         
     | 
| 
       238 
     | 
    
         
            -
            end
         
     | 
    
        data/test/fixtures/beast.rb
    DELETED
    
    | 
         @@ -1,14 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class BeastResource < ActiveResource::Base
         
     | 
| 
       2 
     | 
    
         
            -
              self.site = 'http://beast.caboo.se'
         
     | 
| 
       3 
     | 
    
         
            -
              site.user = 'foo'
         
     | 
| 
       4 
     | 
    
         
            -
              site.password = 'bar'
         
     | 
| 
       5 
     | 
    
         
            -
            end
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            class Forum < BeastResource
         
     | 
| 
       8 
     | 
    
         
            -
              # taken from BeastResource
         
     | 
| 
       9 
     | 
    
         
            -
              # self.site = 'http://beast.caboo.se'
         
     | 
| 
       10 
     | 
    
         
            -
            end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            class Topic < BeastResource
         
     | 
| 
       13 
     | 
    
         
            -
              self.site += '/forums/:forum_id'
         
     | 
| 
       14 
     | 
    
         
            -
            end
         
     | 
    
        data/test/fixtures/customer.rb
    DELETED
    
    
    
        data/test/fixtures/person.rb
    DELETED
    
    
    
        data/test/fixtures/proxy.rb
    DELETED
    
    
    
        data/test/format_test.rb
    DELETED
    
    | 
         @@ -1,112 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'abstract_unit'
         
     | 
| 
       2 
     | 
    
         
            -
            require "fixtures/person"
         
     | 
| 
       3 
     | 
    
         
            -
            require "fixtures/street_address"
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            class FormatTest < Test::Unit::TestCase
         
     | 
| 
       6 
     | 
    
         
            -
              def setup
         
     | 
| 
       7 
     | 
    
         
            -
                @matz  = { :id => 1, :name => 'Matz' }
         
     | 
| 
       8 
     | 
    
         
            -
                @david = { :id => 2, :name => 'David' }
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                @programmers = [ @matz, @david ]
         
     | 
| 
       11 
     | 
    
         
            -
              end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              def test_http_format_header_name
         
     | 
| 
       14 
     | 
    
         
            -
                header_name = ActiveResource::Connection::HTTP_FORMAT_HEADER_NAMES[:get]
         
     | 
| 
       15 
     | 
    
         
            -
                assert_equal 'Accept', header_name
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                headers_names = [ActiveResource::Connection::HTTP_FORMAT_HEADER_NAMES[:put], ActiveResource::Connection::HTTP_FORMAT_HEADER_NAMES[:post]]
         
     | 
| 
       18 
     | 
    
         
            -
                headers_names.each{ |name| assert_equal 'Content-Type', name }
         
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              def test_formats_on_single_element
         
     | 
| 
       22 
     | 
    
         
            -
                for format in [ :json, :xml ]
         
     | 
| 
       23 
     | 
    
         
            -
                  using_format(Person, format) do
         
     | 
| 
       24 
     | 
    
         
            -
                    ActiveResource::HttpMock.respond_to.get "/people/1.#{format}", {'Accept' => ActiveResource::Formats[format].mime_type}, ActiveResource::Formats[format].encode(@david)
         
     | 
| 
       25 
     | 
    
         
            -
                    assert_equal @david[:name], Person.find(1).name
         
     | 
| 
       26 
     | 
    
         
            -
                  end
         
     | 
| 
       27 
     | 
    
         
            -
                end
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
              def test_formats_on_collection
         
     | 
| 
       31 
     | 
    
         
            -
                for format in [ :json, :xml ]
         
     | 
| 
       32 
     | 
    
         
            -
                  using_format(Person, format) do
         
     | 
| 
       33 
     | 
    
         
            -
                    ActiveResource::HttpMock.respond_to.get "/people.#{format}", {'Accept' => ActiveResource::Formats[format].mime_type}, ActiveResource::Formats[format].encode(@programmers)
         
     | 
| 
       34 
     | 
    
         
            -
                    remote_programmers = Person.find(:all)
         
     | 
| 
       35 
     | 
    
         
            -
                    assert_equal 2, remote_programmers.size
         
     | 
| 
       36 
     | 
    
         
            -
                    assert remote_programmers.select { |p| p.name == 'David' }
         
     | 
| 
       37 
     | 
    
         
            -
                  end
         
     | 
| 
       38 
     | 
    
         
            -
                end
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
              def test_formats_on_custom_collection_method
         
     | 
| 
       42 
     | 
    
         
            -
                for format in [ :json, :xml ]
         
     | 
| 
       43 
     | 
    
         
            -
                  using_format(Person, format) do
         
     | 
| 
       44 
     | 
    
         
            -
                    ActiveResource::HttpMock.respond_to.get "/people/retrieve.#{format}?name=David", {'Accept' => ActiveResource::Formats[format].mime_type}, ActiveResource::Formats[format].encode([@david])
         
     | 
| 
       45 
     | 
    
         
            -
                    remote_programmers = Person.get(:retrieve, :name => 'David')
         
     | 
| 
       46 
     | 
    
         
            -
                    assert_equal 1, remote_programmers.size
         
     | 
| 
       47 
     | 
    
         
            -
                    assert_equal @david[:id], remote_programmers[0]['id']
         
     | 
| 
       48 
     | 
    
         
            -
                    assert_equal @david[:name], remote_programmers[0]['name']
         
     | 
| 
       49 
     | 
    
         
            -
                  end
         
     | 
| 
       50 
     | 
    
         
            -
                end
         
     | 
| 
       51 
     | 
    
         
            -
              end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
              def test_formats_on_custom_element_method
         
     | 
| 
       54 
     | 
    
         
            -
                for format in [ :json, :xml ]
         
     | 
| 
       55 
     | 
    
         
            -
                  using_format(Person, format) do
         
     | 
| 
       56 
     | 
    
         
            -
                    ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       57 
     | 
    
         
            -
                      mock.get "/people/2.#{format}", {'Accept' => ActiveResource::Formats[format].mime_type}, ActiveResource::Formats[format].encode(@david)
         
     | 
| 
       58 
     | 
    
         
            -
                      mock.get "/people/2/shallow.#{format}", {'Accept' => ActiveResource::Formats[format].mime_type}, ActiveResource::Formats[format].encode(@david)
         
     | 
| 
       59 
     | 
    
         
            -
                    end
         
     | 
| 
       60 
     | 
    
         
            -
                    remote_programmer = Person.find(2).get(:shallow)
         
     | 
| 
       61 
     | 
    
         
            -
                    assert_equal @david[:id], remote_programmer['id']
         
     | 
| 
       62 
     | 
    
         
            -
                    assert_equal @david[:name], remote_programmer['name']
         
     | 
| 
       63 
     | 
    
         
            -
                  end
         
     | 
| 
       64 
     | 
    
         
            -
                end
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                for format in [ :json, :xml ]
         
     | 
| 
       67 
     | 
    
         
            -
                  ryan = ActiveResource::Formats[format].encode({ :name => 'Ryan' })
         
     | 
| 
       68 
     | 
    
         
            -
                  using_format(Person, format) do
         
     | 
| 
       69 
     | 
    
         
            -
                    remote_ryan = Person.new(:name => 'Ryan')
         
     | 
| 
       70 
     | 
    
         
            -
                    ActiveResource::HttpMock.respond_to.post "/people.#{format}", {'Content-Type' => ActiveResource::Formats[format].mime_type}, ryan, 201, {'Location' => "/people/5.#{format}"}
         
     | 
| 
       71 
     | 
    
         
            -
                    remote_ryan.save
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                    remote_ryan = Person.new(:name => 'Ryan')
         
     | 
| 
       74 
     | 
    
         
            -
                    ActiveResource::HttpMock.respond_to.post "/people/new/register.#{format}", {'Content-Type' => ActiveResource::Formats[format].mime_type}, ryan, 201, {'Location' => "/people/5.#{format}"}
         
     | 
| 
       75 
     | 
    
         
            -
                    assert_equal ActiveResource::Response.new(ryan, 201, {'Location' => "/people/5.#{format}"}), remote_ryan.post(:register)
         
     | 
| 
       76 
     | 
    
         
            -
                  end
         
     | 
| 
       77 
     | 
    
         
            -
                end
         
     | 
| 
       78 
     | 
    
         
            -
              end
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
              def test_setting_format_before_site
         
     | 
| 
       81 
     | 
    
         
            -
                resource = Class.new(ActiveResource::Base)
         
     | 
| 
       82 
     | 
    
         
            -
                resource.format = :json
         
     | 
| 
       83 
     | 
    
         
            -
                resource.site   = 'http://37s.sunrise.i:3000'
         
     | 
| 
       84 
     | 
    
         
            -
                assert_equal ActiveResource::Formats[:json], resource.connection.format
         
     | 
| 
       85 
     | 
    
         
            -
              end
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
              def test_serialization_of_nested_resource
         
     | 
| 
       88 
     | 
    
         
            -
                address  = { :street => '12345 Street' }
         
     | 
| 
       89 
     | 
    
         
            -
                person  = { :name=> 'Rus', :address => address}
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
                [:json, :xml].each do |format|
         
     | 
| 
       92 
     | 
    
         
            -
                  encoded_person = ActiveResource::Formats[format].encode(person)
         
     | 
| 
       93 
     | 
    
         
            -
                  assert_match(/12345 Street/, encoded_person)
         
     | 
| 
       94 
     | 
    
         
            -
                  remote_person = Person.new(person.update({:address => StreetAddress.new(address)}))
         
     | 
| 
       95 
     | 
    
         
            -
                  assert_kind_of StreetAddress, remote_person.address
         
     | 
| 
       96 
     | 
    
         
            -
                  using_format(Person, format) do
         
     | 
| 
       97 
     | 
    
         
            -
                    ActiveResource::HttpMock.respond_to.post "/people.#{format}", {'Content-Type' => ActiveResource::Formats[format].mime_type}, encoded_person, 201, {'Location' => "/people/5.#{format}"}
         
     | 
| 
       98 
     | 
    
         
            -
                    remote_person.save
         
     | 
| 
       99 
     | 
    
         
            -
                  end
         
     | 
| 
       100 
     | 
    
         
            -
                end
         
     | 
| 
       101 
     | 
    
         
            -
              end
         
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
     | 
    
         
            -
              private
         
     | 
| 
       104 
     | 
    
         
            -
                def using_format(klass, mime_type_reference)
         
     | 
| 
       105 
     | 
    
         
            -
                  previous_format = klass.format
         
     | 
| 
       106 
     | 
    
         
            -
                  klass.format = mime_type_reference
         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
                  yield
         
     | 
| 
       109 
     | 
    
         
            -
                ensure
         
     | 
| 
       110 
     | 
    
         
            -
                  klass.format = previous_format
         
     | 
| 
       111 
     | 
    
         
            -
                end
         
     | 
| 
       112 
     | 
    
         
            -
            end
         
     | 
    
        data/test/http_mock_test.rb
    DELETED
    
    | 
         @@ -1,155 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'abstract_unit'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class HttpMockTest < ActiveSupport::TestCase
         
     | 
| 
       4 
     | 
    
         
            -
              def setup
         
     | 
| 
       5 
     | 
    
         
            -
                @http = ActiveResource::HttpMock.new("http://example.com")
         
     | 
| 
       6 
     | 
    
         
            -
              end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
              FORMAT_HEADER = { :get => 'Accept',
         
     | 
| 
       9 
     | 
    
         
            -
                                :put => 'Content-Type',
         
     | 
| 
       10 
     | 
    
         
            -
                                :post => 'Content-Type',
         
     | 
| 
       11 
     | 
    
         
            -
                                :delete => 'Accept',
         
     | 
| 
       12 
     | 
    
         
            -
                                :head => 'Accept'
         
     | 
| 
       13 
     | 
    
         
            -
                              }
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              [:post, :put, :get, :delete, :head].each do |method|
         
     | 
| 
       16 
     | 
    
         
            -
                test "responds to simple #{method} request" do
         
     | 
| 
       17 
     | 
    
         
            -
                  ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       18 
     | 
    
         
            -
                    mock.send(method, "/people/1", {FORMAT_HEADER[method] => "application/xml"}, "Response")
         
     | 
| 
       19 
     | 
    
         
            -
                  end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  assert_equal "Response", request(method, "/people/1", FORMAT_HEADER[method] => "application/xml").body
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                test "adds format header by default to #{method} request" do
         
     | 
| 
       25 
     | 
    
         
            -
                  ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       26 
     | 
    
         
            -
                    mock.send(method, "/people/1", {}, "Response")
         
     | 
| 
       27 
     | 
    
         
            -
                  end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                  assert_equal "Response", request(method, "/people/1", FORMAT_HEADER[method] => "application/xml").body
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                test "respond only when headers match header by default to #{method} request" do
         
     | 
| 
       33 
     | 
    
         
            -
                  ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       34 
     | 
    
         
            -
                    mock.send(method, "/people/1", {"X-Header" => "X"}, "Response")
         
     | 
| 
       35 
     | 
    
         
            -
                  end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                  assert_equal "Response", request(method, "/people/1", "X-Header" => "X").body
         
     | 
| 
       38 
     | 
    
         
            -
                  assert_raise(ActiveResource::InvalidRequestError) { request(method, "/people/1") }
         
     | 
| 
       39 
     | 
    
         
            -
                end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                test "does not overwrite format header to #{method} request" do
         
     | 
| 
       42 
     | 
    
         
            -
                  ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       43 
     | 
    
         
            -
                    mock.send(method, "/people/1", {FORMAT_HEADER[method] => "application/json"}, "Response")
         
     | 
| 
       44 
     | 
    
         
            -
                  end
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                  assert_equal "Response", request(method, "/people/1", FORMAT_HEADER[method] => "application/json").body
         
     | 
| 
       47 
     | 
    
         
            -
                end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                test "ignores format header when there is only one response to same url in a #{method} request" do
         
     | 
| 
       50 
     | 
    
         
            -
                  ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       51 
     | 
    
         
            -
                    mock.send(method, "/people/1", {}, "Response")
         
     | 
| 
       52 
     | 
    
         
            -
                  end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                  assert_equal "Response", request(method, "/people/1", FORMAT_HEADER[method] => "application/json").body
         
     | 
| 
       55 
     | 
    
         
            -
                  assert_equal "Response", request(method, "/people/1", FORMAT_HEADER[method] => "application/xml").body
         
     | 
| 
       56 
     | 
    
         
            -
                end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                test "responds correctly when format header is given to #{method} request" do
         
     | 
| 
       59 
     | 
    
         
            -
                  ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       60 
     | 
    
         
            -
                    mock.send(method, "/people/1", {FORMAT_HEADER[method] => "application/xml"}, "XML")
         
     | 
| 
       61 
     | 
    
         
            -
                    mock.send(method, "/people/1", {FORMAT_HEADER[method] => "application/json"}, "Json")
         
     | 
| 
       62 
     | 
    
         
            -
                  end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                  assert_equal "XML", request(method, "/people/1", FORMAT_HEADER[method] => "application/xml").body
         
     | 
| 
       65 
     | 
    
         
            -
                  assert_equal "Json", request(method, "/people/1", FORMAT_HEADER[method] => "application/json").body
         
     | 
| 
       66 
     | 
    
         
            -
                end
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                test "raises InvalidRequestError if no response found for the #{method} request" do
         
     | 
| 
       69 
     | 
    
         
            -
                  ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       70 
     | 
    
         
            -
                    mock.send(method, "/people/1", {FORMAT_HEADER[method] => "application/xml"}, "XML")
         
     | 
| 
       71 
     | 
    
         
            -
                  end
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                  assert_raise(::ActiveResource::InvalidRequestError) do
         
     | 
| 
       74 
     | 
    
         
            -
                    request(method, "/people/1", FORMAT_HEADER[method] => "application/json")
         
     | 
| 
       75 
     | 
    
         
            -
                  end
         
     | 
| 
       76 
     | 
    
         
            -
                end
         
     | 
| 
       77 
     | 
    
         
            -
                
         
     | 
| 
       78 
     | 
    
         
            -
              end
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
              test "allows you to send in pairs directly to the respond_to method" do
         
     | 
| 
       81 
     | 
    
         
            -
                matz  = { :id => 1, :name => "Matz" }.to_xml(:root => "person")
         
     | 
| 
       82 
     | 
    
         
            -
                
         
     | 
| 
       83 
     | 
    
         
            -
                create_matz = ActiveResource::Request.new(:post, '/people.xml', matz, {})
         
     | 
| 
       84 
     | 
    
         
            -
                created_response = ActiveResource::Response.new("", 201, {"Location" => "/people/1.xml"})
         
     | 
| 
       85 
     | 
    
         
            -
                get_matz = ActiveResource::Request.new(:get, '/people/1.xml', nil)
         
     | 
| 
       86 
     | 
    
         
            -
                ok_response = ActiveResource::Response.new(matz, 200, {})
         
     | 
| 
       87 
     | 
    
         
            -
                
         
     | 
| 
       88 
     | 
    
         
            -
                pairs = {create_matz => created_response, get_matz => ok_response}
         
     | 
| 
       89 
     | 
    
         
            -
                
         
     | 
| 
       90 
     | 
    
         
            -
                ActiveResource::HttpMock.respond_to(pairs)
         
     | 
| 
       91 
     | 
    
         
            -
                assert_equal 2, ActiveResource::HttpMock.responses.length
         
     | 
| 
       92 
     | 
    
         
            -
                assert_equal "", ActiveResource::HttpMock.responses.assoc(create_matz)[1].body
         
     | 
| 
       93 
     | 
    
         
            -
                assert_equal matz, ActiveResource::HttpMock.responses.assoc(get_matz)[1].body
         
     | 
| 
       94 
     | 
    
         
            -
              end
         
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
              test "resets all mocked responses on each call to respond_to with a block by default" do
         
     | 
| 
       97 
     | 
    
         
            -
                ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       98 
     | 
    
         
            -
                  mock.send(:get, "/people/1", {}, "XML1")
         
     | 
| 
       99 
     | 
    
         
            -
                end
         
     | 
| 
       100 
     | 
    
         
            -
                assert_equal 1, ActiveResource::HttpMock.responses.length
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
                ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       103 
     | 
    
         
            -
                  mock.send(:get, "/people/2", {}, "XML2")
         
     | 
| 
       104 
     | 
    
         
            -
                end
         
     | 
| 
       105 
     | 
    
         
            -
                assert_equal 1, ActiveResource::HttpMock.responses.length
         
     | 
| 
       106 
     | 
    
         
            -
              end
         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
              test "resets all mocked responses on each call to respond_to by passing pairs by default" do
         
     | 
| 
       109 
     | 
    
         
            -
                ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       110 
     | 
    
         
            -
                  mock.send(:get, "/people/1", {}, "XML1")
         
     | 
| 
       111 
     | 
    
         
            -
                end
         
     | 
| 
       112 
     | 
    
         
            -
                assert_equal 1, ActiveResource::HttpMock.responses.length
         
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
                matz  = { :id => 1, :name => "Matz" }.to_xml(:root => "person")
         
     | 
| 
       115 
     | 
    
         
            -
                get_matz = ActiveResource::Request.new(:get, '/people/1.xml', nil)
         
     | 
| 
       116 
     | 
    
         
            -
                ok_response = ActiveResource::Response.new(matz, 200, {})
         
     | 
| 
       117 
     | 
    
         
            -
                ActiveResource::HttpMock.respond_to({get_matz => ok_response})
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
                assert_equal 1, ActiveResource::HttpMock.responses.length
         
     | 
| 
       120 
     | 
    
         
            -
              end
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
              test "allows you to add new responses to the existing responses by calling a block" do
         
     | 
| 
       123 
     | 
    
         
            -
                ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       124 
     | 
    
         
            -
                  mock.send(:get, "/people/1", {}, "XML1")
         
     | 
| 
       125 
     | 
    
         
            -
                end
         
     | 
| 
       126 
     | 
    
         
            -
                assert_equal 1, ActiveResource::HttpMock.responses.length
         
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
                ActiveResource::HttpMock.respond_to(false) do |mock|
         
     | 
| 
       129 
     | 
    
         
            -
                  mock.send(:get, "/people/2", {}, "XML2")
         
     | 
| 
       130 
     | 
    
         
            -
                end
         
     | 
| 
       131 
     | 
    
         
            -
                assert_equal 2, ActiveResource::HttpMock.responses.length
         
     | 
| 
       132 
     | 
    
         
            -
              end
         
     | 
| 
       133 
     | 
    
         
            -
             
     | 
| 
       134 
     | 
    
         
            -
              test "allows you to add new responses to the existing responses by passing pairs" do
         
     | 
| 
       135 
     | 
    
         
            -
                ActiveResource::HttpMock.respond_to do |mock|
         
     | 
| 
       136 
     | 
    
         
            -
                  mock.send(:get, "/people/1", {}, "XML1")
         
     | 
| 
       137 
     | 
    
         
            -
                end
         
     | 
| 
       138 
     | 
    
         
            -
                assert_equal 1, ActiveResource::HttpMock.responses.length
         
     | 
| 
       139 
     | 
    
         
            -
             
     | 
| 
       140 
     | 
    
         
            -
                matz  = { :id => 1, :name => "Matz" }.to_xml(:root => "person")
         
     | 
| 
       141 
     | 
    
         
            -
                get_matz = ActiveResource::Request.new(:get, '/people/1.xml', nil)
         
     | 
| 
       142 
     | 
    
         
            -
                ok_response = ActiveResource::Response.new(matz, 200, {})
         
     | 
| 
       143 
     | 
    
         
            -
                ActiveResource::HttpMock.respond_to({get_matz => ok_response}, false)
         
     | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
       145 
     | 
    
         
            -
                assert_equal 2, ActiveResource::HttpMock.responses.length
         
     | 
| 
       146 
     | 
    
         
            -
              end
         
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
     | 
    
         
            -
              def request(method, path, headers = {}, body = nil)
         
     | 
| 
       149 
     | 
    
         
            -
                if [:put, :post].include? method
         
     | 
| 
       150 
     | 
    
         
            -
                  @http.send(method, path, body, headers)
         
     | 
| 
       151 
     | 
    
         
            -
                else
         
     | 
| 
       152 
     | 
    
         
            -
                  @http.send(method, path, headers)
         
     | 
| 
       153 
     | 
    
         
            -
                end
         
     | 
| 
       154 
     | 
    
         
            -
              end
         
     | 
| 
       155 
     | 
    
         
            -
            end
         
     |