rest_api 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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