rest_api 0.1.0

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.
@@ -0,0 +1,204 @@
1
+ # coding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+
6
+ describe "RestApi::request_hander" do
7
+ let (:fake_api_url) { "http://www.fakeurl.com/" }
8
+ before(:each) {
9
+ RestApi.unmap_resources
10
+ RestApi.setup do |config|
11
+ config.api_url = "http://www.fakeurl.com/"
12
+ end
13
+ }
14
+
15
+ describe "make_request" do
16
+ it "should raise an ApiConnectionException if the response is invalid when connection fails" do
17
+ FakeWeb.allow_net_connect = false
18
+ lambda {
19
+ RestApi::RequestHandler.make_request :get, "http://www.fakeurl.com.br/error"
20
+ }.should raise_exception(RestApi::Exceptions::ApiConnectionException)
21
+ end
22
+
23
+ it "should raise an ParseResponseException if the response is invalid when is not a JSON response" do
24
+ FakeWeb.allow_net_connect = false
25
+ FakeWeb.register_uri(:get, "http://www.fakeurl.com.br/json", :body => "")
26
+ lambda {
27
+ RestApi::RequestHandler.make_request :get, "http://www.fakeurl.com.br/json"
28
+ }.should raise_exception(RestApi::Exceptions::ParseResponseException)
29
+ end
30
+
31
+ it "should call client get when request type is get" do
32
+ RestApi::RequestHandler::Client.should_receive(:get).with("http://www.fakeurl.com.br/test", {})
33
+ RestApi::RequestHandler.make_request :get, "http://www.fakeurl.com.br/test"
34
+ end
35
+
36
+ it "should call client get with querystring when request type is get" do
37
+ RestApi::RequestHandler::Client.should_receive(:get).with("http://www.fakeurl.com.br/test", {:query => "value", :query2 => "value2"})
38
+ RestApi::RequestHandler.make_request :get, "http://www.fakeurl.com.br/test", {:query => "value", :query2 => "value2"}
39
+ end
40
+
41
+ it "should call client post when request type is post" do
42
+ RestApi::RequestHandler::Client.should_receive(:post).with("http://www.fakeurl.com.br/test", {:param => :one})
43
+ RestApi::RequestHandler.make_request :post, "http://www.fakeurl.com.br/test", {:param => :one}
44
+ end
45
+
46
+ it "should call client put when request type is put" do
47
+ RestApi::RequestHandler::Client.should_receive(:put).with("http://www.fakeurl.com.br/test/4", {:param => :one})
48
+ RestApi::RequestHandler.make_request :put, "http://www.fakeurl.com.br/test/4", {:param => :one}
49
+ end
50
+
51
+ it "should call client delete with querystring when request type is delete" do
52
+ RestApi::RequestHandler::Client.should_receive(:delete).with("http://www.fakeurl.com.br/test", {:query => "value", :query2 => "value2"})
53
+ RestApi::RequestHandler.make_request :delete, "http://www.fakeurl.com.br/test", {:query => "value", :query2 => "value2"}
54
+ end
55
+
56
+ it "should call client delete when request type is delete" do
57
+ RestApi::RequestHandler::Client.should_receive(:delete).with("http://www.fakeurl.com.br/test/5", {})
58
+ RestApi::RequestHandler.make_request :delete, "http://www.fakeurl.com.br/test/5"
59
+ end
60
+ end
61
+
62
+ describe "method_missing" do
63
+ context "GET" do
64
+ context "Array parameters" do
65
+ it "should return the request url - simple case" do
66
+ RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}usuarios", nil).and_return({ "usuarios" => [ {"nome" => "Vinicius" } , { "nome" => "Bruno" }]})
67
+ RestApi.request.get_usuarios.should be == { "usuarios" => [ {"nome" => "Vinicius" } , { "nome" => "Bruno" }]}
68
+ end
69
+
70
+ it "should return the request url - complciated case" do
71
+ RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}usuarios/3/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
72
+
73
+ RestApi.request.get_casas_from_usuarios(3).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
74
+ end
75
+
76
+ it "should return the request url - complciated case" do
77
+ RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}administradores/3/usuarios/7/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
78
+
79
+ RestApi.request.get_casas_from_usuarios_in_administradores(3, 7).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
80
+ end
81
+ end
82
+
83
+ context "Hash parameters" do
84
+ it "should return the request url - more than one hash key" do
85
+ RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}administradores/3/usuarios/7/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
86
+ RestApi.request.get_casas_from_usuarios_in_administradores(:resources_params => {:usuarios => 7, :administradores => 3}).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
87
+ end
88
+
89
+
90
+ it "should return the request url - one hash key" do
91
+ RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}administradores/7/usuarios/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
92
+ RestApi.request.get_casas_from_usuarios_in_administradores(:resources_params => {:administradores => 7}).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
93
+ end
94
+ end
95
+
96
+ context "Querystring" do
97
+ it "should return the request url with querystring" do
98
+ RestApi::RequestHandler.should_receive(:make_request).with(:get, "#{fake_api_url}administradores/3/usuarios/7/casas", {:query => "test"}).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
99
+ RestApi.request.get_casas_from_usuarios_in_administradores(:resources_params => {:usuarios => 7, :administradores => 3}, :request_params => {:query => "test"}).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
100
+ end
101
+ end
102
+ end
103
+ context "DELETE" do
104
+ context "Array parameters" do
105
+ it "should return the request url - simple case" do
106
+ RestApi::RequestHandler.should_receive(:make_request).with(:delete, "#{fake_api_url}usuarios", nil).and_return({ "usuarios" => [ {"nome" => "Vinicius" } , { "nome" => "Bruno" }]})
107
+ RestApi.request.delete_usuarios.should be == { "usuarios" => [ {"nome" => "Vinicius" } , { "nome" => "Bruno" }]}
108
+ end
109
+
110
+ it "should return the request url - complciated case" do
111
+ RestApi::RequestHandler.should_receive(:make_request).with(:delete, "#{fake_api_url}usuarios/3/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
112
+
113
+ RestApi.request.delete_casas_from_usuarios(3).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
114
+ end
115
+
116
+ it "should return the request url - complciated case" do
117
+ RestApi::RequestHandler.should_receive(:make_request).with(:delete, "#{fake_api_url}administradores/3/usuarios/7/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
118
+
119
+ RestApi.request.delete_casas_from_usuarios_in_administradores(3, 7).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
120
+ end
121
+ end
122
+
123
+ context "Hash parameters" do
124
+ it "should return the request url - more than one hash key" do
125
+ RestApi::RequestHandler.should_receive(:make_request).with(:delete, "#{fake_api_url}administradores/3/usuarios/7/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
126
+ RestApi.request.delete_casas_from_usuarios_in_administradores(:resources_params => {:usuarios => 7, :administradores => 3}).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
127
+ end
128
+
129
+
130
+ it "should return the request url - one hash key" do
131
+ RestApi::RequestHandler.should_receive(:make_request).with(:delete, "#{fake_api_url}administradores/7/usuarios/casas", nil).and_return({ "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]})
132
+ RestApi.request.delete_casas_from_usuarios_in_administradores(:resources_params => {:administradores => 7}).should be == { "casas" => [ {"rua" => "rua1"}, {"rua" => "rua2"}]}
133
+ end
134
+ end
135
+ end
136
+
137
+ context "PUT" do
138
+ context "Array parameters" do
139
+ it "should return the request url" do
140
+ RestApi::RequestHandler.should_receive(:make_request).with(:put, "#{fake_api_url}usuarios", {:usuarios => 5}).and_return({ "status" => "ok" })
141
+ RestApi.request.put_usuarios(:request_params => {:usuarios => 5}).should be == { "status" => "ok" }
142
+ end
143
+
144
+ it "should return the request url" do
145
+ RestApi::RequestHandler.should_receive(:make_request).with(:put, "#{fake_api_url}administradores/update", {:administradores => 5}).and_return({ "status" => "ok" })
146
+ RestApi.request.put_update_in_administradores(:request_params => {:administradores => 5}).should be == { "status" => "ok" }
147
+ end
148
+ end
149
+
150
+ context "Hash parameters" do
151
+ it "should return the request url" do
152
+ RestApi::RequestHandler.should_receive(:make_request).with(:put, "#{fake_api_url}usuarios", {:usuarios => 5}).and_return({ "status" => "ok" })
153
+ RestApi.request.put_usuarios(:usuarios => 5).should be == { "status" => "ok" }
154
+ end
155
+
156
+ it "should return the request url" do
157
+ RestApi::RequestHandler.should_receive(:make_request).with(:put, "#{fake_api_url}usuarios/casas", {:usuarios_id => 5, :casa_id => 15}).and_return({ "status" => "ok" })
158
+ RestApi.request.put_casas_in_usuarios(:usuarios_id => 5, :casa_id => 15).should be == { "status" => "ok" }
159
+ end
160
+ end
161
+ end
162
+
163
+ context "POST" do
164
+ context "Array parameters" do
165
+ it "should return the request url" do
166
+ RestApi::RequestHandler.should_receive(:make_request).with(:post, "#{fake_api_url}usuarios/create", {:usuarios_nome => "teste"}).and_return({ "status" => "ok" })
167
+ RestApi.request.post_create_usuarios(:request_params => {:usuarios_nome => "teste"}).should be == { "status" => "ok" }
168
+ end
169
+
170
+ it "should return the request url" do
171
+ RestApi::RequestHandler.should_receive(:make_request).with(:post, "#{fake_api_url}administradores/create", {:usuarios_nome => "teste"}).and_return({ "status" => "ok" })
172
+ RestApi.request.post_create_in_administradores(:request_params => {:usuarios_nome => "teste"}).should be == { "status" => "ok" }
173
+ end
174
+ end
175
+
176
+ context "Hash parameters" do
177
+ it "should return the request url" do
178
+ RestApi::RequestHandler.should_receive(:make_request).with(:post, "#{fake_api_url}usuarios", {:usuarios => 5}).and_return({ "status" => "ok" })
179
+ RestApi.request.post_usuarios(:usuarios => 5).should be == { "status" => "ok" }
180
+ end
181
+
182
+ it "should return the request url" do
183
+ RestApi::RequestHandler.should_receive(:make_request).with(:post, "#{fake_api_url}usuarios/casas", {:usuarios_id => 5, :casa_id => 15}).and_return({ "status" => "ok" })
184
+ RestApi.request.post_casas_in_usuarios(:usuarios_id => 5, :casa_id => 15).should be == { "status" => "ok" }
185
+ end
186
+ end
187
+ end
188
+ end
189
+
190
+ describe "get_params_from_array_arguments" do
191
+ it "should return resources hash from a simple array" do
192
+ RestApi.request.get_params_from_array_arguments([2,3,4,5]).should be == {:resources_params => [2,3,4,5]}
193
+ end
194
+
195
+ it "should return resources hash from a simple array and request_params" do
196
+ RestApi.request.get_params_from_array_arguments([2,3,4,5, { :parametro1 => "true"}]).should be == {:resources_params => [2,3,4,5], :request_params => { :parametro1 => "true"}}
197
+ end
198
+
199
+ it "should return resources hash from an array with position 0 with a hash" do
200
+ RestApi.request.get_params_from_array_arguments([{:resources_params => [2,4,5], :request_params => { :parametro1 => "true"}}]).should be == {:resources_params => [2,4,5], :request_params => { :parametro1 => "true"}}
201
+ end
202
+ end
203
+
204
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "RestApi" do
6
+
7
+ it "should yield self" do
8
+ RestApi.setup do |config|
9
+ config.should be == RestApi
10
+ end
11
+ end
12
+
13
+ it "should configure api_url - with slash" do
14
+ RestApi.setup do |config|
15
+ config.api_url = "http://www.localhost.com:4000/"
16
+ end
17
+ RestApi.instance_eval { api_url }.should be == "http://www.localhost.com:4000/"
18
+ end
19
+
20
+
21
+ it "should configure api_url - whithout slash" do
22
+ RestApi.setup do |config|
23
+ config.api_url = "http://www.localhost.com:4000"
24
+ end
25
+ RestApi.instance_eval { api_url }.should be == "http://www.localhost.com:4000/"
26
+ end
27
+
28
+ it "should return the request parser" do
29
+ RestApi.request_parser.should be == RestApi::API::RequestParser
30
+ end
31
+
32
+ end
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'rest_api' # and any other gems you need
4
+
5
+ RSpec.configure do |config|
6
+ # some (optional) config here
7
+ end
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rest_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Codus Tecnologia
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - !ruby/object:Gem::Dependency
31
+ name: json
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.7'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.7'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rest-client
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '1.6'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ description: An API client for any application!
63
+ email:
64
+ - vinicius.oyama@codus.com.br
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - .gitignore
70
+ - .rspec
71
+ - .rvmrc
72
+ - Gemfile
73
+ - LICENSE
74
+ - README.md
75
+ - Rakefile
76
+ - lib/rest_api.rb
77
+ - lib/rest_api/api.rb
78
+ - lib/rest_api/api/request_parser.rb
79
+ - lib/rest_api/custom_api_method_call.rb
80
+ - lib/rest_api/exceptions.rb
81
+ - lib/rest_api/request_handler.rb
82
+ - lib/rest_api/request_handler/client.rb
83
+ - lib/rest_api/version.rb
84
+ - rest_api.gemspec
85
+ - spec/rest_api/api/request_parser_spec.rb
86
+ - spec/rest_api/api_spec.rb
87
+ - spec/rest_api/custom_api_method_spec.rb
88
+ - spec/rest_api/request_handler/client_spec.rb
89
+ - spec/rest_api/request_handler_spec.rb
90
+ - spec/rest_api/rest_api_spec.rb
91
+ - spec/spec_helper.rb
92
+ homepage: https://github.com/codus/rest_api
93
+ licenses: []
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ required_ruby_version: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 1.8.24
113
+ signing_key:
114
+ specification_version: 3
115
+ summary: An API client for any application!
116
+ test_files:
117
+ - spec/rest_api/api/request_parser_spec.rb
118
+ - spec/rest_api/api_spec.rb
119
+ - spec/rest_api/custom_api_method_spec.rb
120
+ - spec/rest_api/request_handler/client_spec.rb
121
+ - spec/rest_api/request_handler_spec.rb
122
+ - spec/rest_api/rest_api_spec.rb
123
+ - spec/spec_helper.rb