rhoconnect 3.2.0.beta1 → 3.2.0.beta2

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.
Files changed (61) hide show
  1. data/CHANGELOG.md +14 -0
  2. data/Gemfile +2 -1
  3. data/Gemfile.lock +33 -7
  4. data/README.md +4 -0
  5. data/Rakefile +13 -11
  6. data/commands/commands/rhoconnect/create_user.rb +1 -1
  7. data/commands/commands/rhoconnect/delete_device.rb +1 -1
  8. data/commands/commands/rhoconnect/delete_user.rb +1 -1
  9. data/commands/commands/rhoconnect/get_token.rb +1 -1
  10. data/commands/commands/rhoconnect/reset.rb +1 -1
  11. data/commands/execute.rb +0 -1
  12. data/doc/bulk-sync.txt +35 -1
  13. data/doc/install.txt +7 -3
  14. data/examples/simple/config.ru +1 -1
  15. data/generators/templates/application/Gemfile +1 -1
  16. data/install.sh +4 -4
  17. data/installer/unix-like/create_texts.rb +31 -31
  18. data/installer/unix-like/pre_uninstall.sh +2 -3
  19. data/installer/unix-like/rho_connect_install_constants.rb +3 -3
  20. data/installer/unix-like/rho_connect_install_debian.rb +0 -5
  21. data/installer/unix-like/rho_connect_install_yum.rb +1 -3
  22. data/installer/utils/constants.rb +4 -4
  23. data/installer/utils/nix_install_test.rb +20 -20
  24. data/installer/utils/package_upload/repos.rake +2 -2
  25. data/installer/utils/package_upload/s3_single_file.rb +57 -0
  26. data/lib/rhoconnect/client_sync.rb +1 -1
  27. data/lib/rhoconnect/jobs/bulk_data_job.rb +30 -32
  28. data/lib/rhoconnect/jobs/ping_job.rb +15 -2
  29. data/lib/rhoconnect/server.rb +3 -0
  30. data/lib/rhoconnect/tasks.rb +5 -7
  31. data/lib/rhoconnect/user.rb +1 -0
  32. data/lib/rhoconnect/version.rb +1 -1
  33. data/lib/rhoconnect/web-console/models/adapter.js +2 -0
  34. data/lib/rhoconnect/web-console/models/client.js +0 -22
  35. data/lib/rhoconnect/web-console/models/source.js +1 -1
  36. data/lib/rhoconnect/web-console/templates/index.erb +2 -1
  37. data/lib/rhoconnect/web-console/views/home.js +22 -1
  38. data/lib/rhoconnect/web-console/views/set_adapter.js +5 -6
  39. data/rhoconnect.gemspec +2 -1
  40. data/spec/api/source/fast_insert_spec.rb +1 -1
  41. data/spec/api/user/create_user_spec.rb +11 -1
  42. data/spec/client_sync_spec.rb +32 -25
  43. data/spec/javascripts/admins_routes_spec.js +108 -103
  44. data/spec/javascripts/doc_view_spec.js +2 -3
  45. data/spec/javascripts/edit_user_view_spec.js +1 -1
  46. data/spec/javascripts/home_view_spec.js +6 -6
  47. data/spec/javascripts/server_doc_view_spec.js +4 -0
  48. data/spec/javascripts/session_spec.js +15 -0
  49. data/spec/javascripts/set_adapter_view_spec.js +2 -6
  50. data/spec/javascripts/show_device_view_spec.js +4 -1
  51. data/spec/javascripts/show_user_view_spec.js +4 -0
  52. data/spec/javascripts/source_docs_view_spec.js +2 -2
  53. data/spec/jobs/bulk_data_job_spec.rb +8 -12
  54. data/spec/jobs/ping_job_spec.rb +21 -0
  55. data/spec/perf/bulk_data_perf_spec.rb +1 -2
  56. data/spec/server/server_spec.rb +2 -4
  57. data/spec/spec_helper.rb +13 -3
  58. data/tasks/jasmine.rake +7 -0
  59. metadata +24 -7
  60. data/lib/rhoconnect/console/rhoconnect_api.rb +0 -245
  61. data/spec/api/application/rhoconnect_api_spec.rb +0 -592
@@ -1,592 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..','..','..','lib','rhoconnect','console','rhoconnect_api.rb')
2
- require File.join(File.dirname(__FILE__),'..','api_helper')
3
-
4
- describe "RhoconnectApi" do
5
- it_should_behave_like "ApiHelper" do
6
-
7
- before(:each) do
8
- @s = Source.load(@s_fields[:name],@s_params)
9
- end
10
-
11
- it "should return api token using direct api call" do
12
- RhoconnectApi::get_token('','rhoadmin','').should == @api_token
13
- end
14
-
15
- it "should get adapter using direct api call" do
16
- RhoconnectApi::get_adapter('',@api_token)
17
- Rhoconnect.appserver.should == "http://test.com"
18
- end
19
-
20
- it "should get adapter using rest call" do
21
- res = mock('HttpResponse')
22
- res.stub!(:body).and_return(["http://test.com"].to_json)
23
- RestClient.stub(:post).and_return(res)
24
- RestClient.should_receive(:post).once
25
- RhoconnectApi::get_adapter('some_url',@api_token).should == ["http://test.com"]
26
- end
27
-
28
- it "should save adapter using rest call" do
29
- RestClient.stub(:post).and_return("adpater url saved")
30
- RestClient.should_receive(:post).once
31
- RhoconnectApi::save_adapter('some_url',@api_token,'http://test.com').should == "adpater url saved"
32
- end
33
-
34
- it "should return api token using rest call" do
35
- res = mock('HttpResponse')
36
- res.stub!(:body).and_return(@api_token)
37
- RestClient.stub(:post).and_return(res)
38
- RestClient.should_receive(:post).once
39
- RhoconnectApi::get_token('some_url','rhoadmin','').should == @api_token
40
- end
41
-
42
- it "should list users using direct api call" do
43
- RhoconnectApi::list_users('',@api_token).should == ['testuser']
44
- end
45
-
46
- it "should list users using rect call" do
47
- res = mock('HttpResponse')
48
- res.stub!(:body).and_return(['testuser'].to_json)
49
- RestClient.stub(:post).and_return(res)
50
- RestClient.should_receive(:post).once
51
- RhoconnectApi::list_users('some_url',@api_token).should == ['testuser']
52
- end
53
-
54
- it "should create user using direct api call" do
55
- RhoconnectApi::create_user('',@api_token,'testuser1','testpass1')
56
- User.load('testuser1').login.should == 'testuser1'
57
- User.authenticate('testuser1','testpass1').login.should == 'testuser1'
58
- @a.users.members.sort.should == [@u.login, 'testuser1']
59
- end
60
-
61
- it "should create user using rect call" do
62
- RestClient.stub(:post).and_return("User created")
63
- RestClient.should_receive(:post).once
64
- RhoconnectApi::create_user('some_url',@api_token,'testuser1','testpass1').should == "User created"
65
- end
66
-
67
- it "should update user using direct api call" do
68
- RhoconnectApi::update_user('',@api_token, {:new_password => '123'})
69
- User.authenticate('rhoadmin','123').login.should == 'rhoadmin'
70
- end
71
-
72
- it "should delete user using rect call" do
73
- RestClient.stub(:post).and_return("User deleted")
74
- RestClient.should_receive(:post).once
75
- RhoconnectApi::delete_user('some_url',@api_token,'testuser1').should == "User deleted"
76
- end
77
-
78
- it "should list clients using direct api call" do
79
- res = RhoconnectApi::list_clients('',@api_token,@u_fields[:login])
80
- res.is_a?(Array).should == true
81
- res.size.should == 1
82
- res[0].is_a?(String) == true
83
- res[0].length.should == 32
84
- end
85
-
86
- it "should handle empty client's list" do
87
- @u.clients.delete(@c.id)
88
- RhoconnectApi::list_clients('',@api_token,@u_fields[:login]).should == []
89
- end
90
-
91
- it "should create user using rect call" do
92
- res = mock('HttpResponse')
93
- res.stub!(:body).and_return(["21325fd9911044c6ad974785bf23c173"].to_json)
94
- RestClient.stub(:post).and_return(res)
95
- RestClient.should_receive(:post).once
96
- RhoconnectApi::list_clients('some_url',@api_token,'testuser1').should == ["21325fd9911044c6ad974785bf23c173"]
97
- end
98
-
99
- it "should create client for a user using direct api call" do
100
- RhoconnectApi::create_client('',@api_token,@u_fields[:login])
101
- clients = User.load(@u_fields[:login]).clients.members
102
- clients.size.should == 2
103
- end
104
-
105
- it "should create client using rect call" do
106
- res = mock('HttpResponse')
107
- res.stub!(:body).and_return("")
108
- RestClient.stub(:post).and_return(res)
109
- RestClient.should_receive(:post).once
110
- RhoconnectApi::create_client('some_url',@api_token,'testuser1')
111
- end
112
-
113
- it "should delete client using direct api call" do
114
- RhoconnectApi::delete_client('',@api_token,@u_fields[:login],@c.id).should == "Client deleted"
115
- Client.is_exist?(@c.id).should == false
116
- User.load(@u_fields[:login]).clients.members.should == []
117
- end
118
-
119
- it "should delete client using rect call" do
120
- RestClient.stub(:post).and_return("Client deleted")
121
- RestClient.should_receive(:post).once
122
- RhoconnectApi::delete_client('some_url',@api_token,@u_fields[:login],@c.id).should == "Client deleted"
123
- end
124
-
125
- it "should list client attributes using direct api call" do
126
- res = RhoconnectApi::get_client_params('',@api_token,@c.id)
127
- res.delete_if { |attrib| attrib['name'] == 'rho__id' || attrib['name'] == 'last_sync'}
128
- res.sort{|x,y| x['name']<=>y['name']}.should == [
129
- {"name"=>"device_type", "value"=>"Apple", "type"=>"string"},
130
- {"name"=>"device_pin", "value"=>"abcd", "type"=>"string"},
131
- {"name"=>"device_port", "value"=>"3333", "type"=>"string"},
132
- {"name"=>"user_id", "value"=>"testuser", "type"=>"string"},
133
- {"name"=>"phone_id", "value"=>nil, "type"=>"string"},
134
- {"name"=>"app_id", "value"=>"application", "type"=>"string"}].sort{|x,y| x['name']<=>y['name']}
135
- end
136
-
137
- it "should list client attributes using rest call" do
138
- res = mock('HttpResponse')
139
- res.stub!(:body).and_return(["blah"].to_json)
140
- RestClient.stub(:post).and_return(res)
141
- RestClient.should_receive(:post).once
142
- RhoconnectApi::get_client_params('some_url',@api_token,'client_id')
143
- end
144
-
145
- it "should list all application sources using direct api call" do
146
- RhoconnectApi::list_sources('',@api_token).sort.should ==
147
- ["SimpleAdapter", "SampleAdapter", "FixedSchemaAdapter", "OtherAdapter"].sort
148
- end
149
-
150
- it "should list all application sources using rest call" do
151
- res = mock('HttpResponse')
152
- res.stub!(:body).and_return(["SimpleAdapter", "SampleAdapter", "FixedSchemaAdapter", "OtherAdapter"].to_json)
153
- RestClient.stub(:post).and_return(res)
154
- RestClient.should_receive(:post).once
155
- RhoconnectApi::list_sources('some_url',@api_token)
156
- end
157
-
158
- it "should list source attributes using direct api call" do
159
- result = RhoconnectApi::get_source_params(
160
- '',@api_token,"SampleAdapter").sort {|x,y| x["name"] <=> y["name"] }
161
- result.should == [
162
- {"name"=>"rho__id", "value"=>"SampleAdapter", "type"=>"string"},
163
- {"name"=>"source_id", "value"=>nil, "type"=>"integer"},
164
- {"name"=>"name", "value"=>"SampleAdapter", "type"=>"string"},
165
- {"name"=>"url", "value"=>"http://example.com", "type"=>"string"},
166
- {"name"=>"login", "value"=>"testuser", "type"=>"string"},
167
- {"name"=>"password", "value"=>"testpass", "type"=>"string"},
168
- {"name"=>"priority", "value"=>3, "type"=>"integer"},
169
- {"name"=>"callback_url", "value"=>nil, "type"=>"string"},
170
- {"name"=>"poll_interval", "value"=>300, "type"=>"integer"},
171
- {"name"=>"retry_limit", "value"=>0, "type"=>"integer"},
172
- {"name"=>"simulate_time", "value"=>0, "type"=>"integer"},
173
- {"name"=>"partition_type", "value"=>"user", "type"=>"string"},
174
- {"name"=>"sync_type", "value"=>"incremental", "type"=>"string"},
175
- {"name"=>"belongs_to", "type"=>"string", "value"=>nil},
176
- {"name"=>"has_many", "type"=>"string", "value"=>"FixedSchemaAdapter,brand"},
177
- {"name"=>"id", "value"=>"SampleAdapter", "type"=>"string"},
178
- {"name"=>"queue", "value"=>nil, "type"=>"string"},
179
- {"name"=>"query_queue", "value"=>nil, "type"=>"string"},
180
- {"name"=>"cud_queue", "value"=>nil, "type"=>"string"},
181
- {"name"=>"pass_through", "value"=>nil, "type"=>"string"}].sort {|x,y| x["name"] <=> y["name"] }
182
- end
183
-
184
- it "should list source attributes using rest call" do
185
- res = mock('HttpResponse')
186
- res.stub!(:body).and_return(["SimpleAdapter"].to_json)
187
- RestClient.stub(:post).and_return(res)
188
- RestClient.should_receive(:post).once
189
- RhoconnectApi::get_source_params('some_url',@api_token,"SimpleAdapter")
190
- end
191
-
192
- it "should list of shared source documents using direct api call" do
193
- RhoconnectApi::list_source_docs('',@api_token,"SimpleAdapter","*").sort.should == {
194
- "md"=>"source:application:__shared__:SimpleAdapter:md",
195
- "errors"=>"source:application:__shared__:SimpleAdapter:errors",
196
- "md_size"=>"source:application:__shared__:SimpleAdapter:md_size",
197
- "md_copy"=>"source:application:__shared__:SimpleAdapter:md_copy"}.sort
198
- end
199
-
200
- it "should list of shared source documents using rest call" do
201
- res = mock('HttpResponse')
202
- res.stub!(:body).and_return(["SimpleAdapter"].to_json)
203
- RestClient.stub(:post).and_return(res)
204
- RestClient.should_receive(:post).once
205
- RhoconnectApi::list_source_docs('some_url',@api_token,"SimpleAdapter",'*')
206
- end
207
-
208
- it "should list client documents using direct api call" do
209
- RhoconnectApi::list_client_docs('',@api_token,"SimpleAdapter",@c.id).should == {
210
- "cd"=>"client:application:testuser:#{@c.id}:SimpleAdapter:cd",
211
- "cd_size"=>"client:application:testuser:#{@c.id}:SimpleAdapter:cd_size",
212
- "create"=>"client:application:testuser:#{@c.id}:SimpleAdapter:create",
213
- "update"=>"client:application:testuser:#{@c.id}:SimpleAdapter:update",
214
- "delete"=>"client:application:testuser:#{@c.id}:SimpleAdapter:delete",
215
-
216
- "page"=>"client:application:testuser:#{@c.id}:SimpleAdapter:page",
217
- "page_token"=>"client:application:testuser:#{@c.id}:SimpleAdapter:page_token",
218
- "delete_page"=>"client:application:testuser:#{@c.id}:SimpleAdapter:delete_page",
219
- "create_links"=>"client:application:testuser:#{@c.id}:SimpleAdapter:create_links",
220
- "create_links_page"=>"client:application:testuser:#{@c.id}:SimpleAdapter:create_links_page",
221
-
222
- "delete_errors"=>"client:application:testuser:#{@c.id}:SimpleAdapter:delete_errors",
223
- "login_error"=>"client:application:testuser:#{@c.id}:SimpleAdapter:login_error",
224
- "create_errors"=>"client:application:testuser:#{@c.id}:SimpleAdapter:create_errors",
225
- "update_errors"=>"client:application:testuser:#{@c.id}:SimpleAdapter:update_errors",
226
- "logoff_error"=>"client:application:testuser:#{@c.id}:SimpleAdapter:logoff_error",
227
-
228
- "search"=>"client:application:testuser:#{@c.id}:SimpleAdapter:search",
229
- "search_token"=>"client:application:testuser:#{@c.id}:SimpleAdapter:search_token",
230
- "search_errors"=>"client:application:testuser:#{@c.id}:SimpleAdapter:search_errors"}
231
- end
232
-
233
- it "should list users using direct api call" do
234
- RhoconnectApi::list_users('',@api_token).should == ['testuser']
235
- end
236
-
237
- it "should list users using rect call" do
238
- res = mock('HttpResponse')
239
- res.stub!(:body).and_return(['testuser'].to_json)
240
- RestClient.stub(:post).and_return(res)
241
- RestClient.should_receive(:post).once
242
- RhoconnectApi::list_users('some_url',@api_token).should == ['testuser']
243
- end
244
-
245
- it "should create user using direct api call" do
246
- RhoconnectApi::create_user('',@api_token,'testuser1','testpass1')
247
- User.load('testuser1').login.should == 'testuser1'
248
- User.authenticate('testuser1','testpass1').login.should == 'testuser1'
249
- @a.users.members.sort.should == [@u.login, 'testuser1']
250
- end
251
-
252
- it "should create user using rect call" do
253
- RestClient.stub(:post).and_return("User created")
254
- RestClient.should_receive(:post).once
255
- RhoconnectApi::create_user('some_url',@api_token,'testuser1','testpass1').should == "User created"
256
- end
257
-
258
- it "should update user using direct api call" do
259
- RhoconnectApi::update_user('',@api_token, {:new_password => '123'})
260
- User.authenticate('rhoadmin','123').login.should == 'rhoadmin'
261
- end
262
-
263
- it "should update user using rest call" do
264
- RestClient.stub(:post)
265
- RestClient.should_receive(:post).once
266
- RhoconnectApi::update_user('some_url',@api_token, {:new_password => '123'})
267
- end
268
-
269
- it "should delete user direct api call" do
270
- RhoconnectApi::create_user('',@api_token,'testuser1','testpass1').should == "User created"
271
- User.is_exist?('testuser1').should == true
272
- RhoconnectApi::delete_user('',@api_token,'testuser1').should == "User deleted"
273
- User.is_exist?('testuser1').should == false
274
- App.load(test_app_name).users.members.should == ["testuser"]
275
- end
276
-
277
- it "should delete user using rect call" do
278
- RestClient.stub(:post).and_return("User deleted")
279
- RestClient.should_receive(:post).once
280
- RhoconnectApi::delete_user('some_url',@api_token,'testuser1').should == "User deleted"
281
- end
282
-
283
- it "should list clients using direct api call" do
284
- res = RhoconnectApi::list_clients('',@api_token,@u_fields[:login])
285
- res.is_a?(Array).should == true
286
- res.size.should == 1
287
- res[0].is_a?(String) == true
288
- res[0].length.should == 32
289
- end
290
-
291
- it "should handle empty client's list" do
292
- @u.clients.delete(@c.id)
293
- RhoconnectApi::list_clients('',@api_token,@u_fields[:login]).should == []
294
- end
295
-
296
- it "should create user using rect call" do
297
- res = mock('HttpResponse')
298
- res.stub!(:body).and_return(["21325fd9911044c6ad974785bf23c173"].to_json)
299
- RestClient.stub(:post).and_return(res)
300
- RestClient.should_receive(:post).once
301
- RhoconnectApi::list_clients('some_url',@api_token,'testuser1').should == ["21325fd9911044c6ad974785bf23c173"]
302
- end
303
-
304
- it "should create client for a user using direct api call" do
305
- RhoconnectApi::create_client('',@api_token,@u_fields[:login])
306
- clients = User.load(@u_fields[:login]).clients.members
307
- clients.size.should == 2
308
- end
309
-
310
- it "should create client using rect call" do
311
- res = mock('HttpResponse')
312
- res.stub!(:body).and_return("")
313
- RestClient.stub(:post).and_return(res)
314
- RestClient.should_receive(:post).once
315
- RhoconnectApi::create_client('some_url',@api_token,'testuser1')
316
- end
317
-
318
- it "should delete client using direct api call" do
319
- RhoconnectApi::delete_client('',@api_token,@u_fields[:login],@c.id).should == "Client deleted"
320
- Client.is_exist?(@c.id).should == false
321
- User.load(@u_fields[:login]).clients.members.should == []
322
- end
323
-
324
- it "should delete client using rect call" do
325
- RestClient.stub(:post).and_return("Client deleted")
326
- RestClient.should_receive(:post).once
327
- RhoconnectApi::delete_client('some_url',@api_token,@u_fields[:login],@c.id).should == "Client deleted"
328
- end
329
-
330
- it "should list client attributes using direct api call" do
331
- res = RhoconnectApi::get_client_params('',@api_token,@c.id)
332
- res.delete_if { |attrib| attrib['name'] == 'rho__id' || attrib['name'] == 'last_sync'}
333
- res.sort{|x,y| x['name']<=>y['name']}.should == [
334
- {"name"=>"device_type", "value"=>"Apple", "type"=>"string"},
335
- {"name"=>"device_pin", "value"=>"abcd", "type"=>"string"},
336
- {"name"=>"device_port", "value"=>"3333", "type"=>"string"},
337
- {"name"=>"user_id", "value"=>"testuser", "type"=>"string"},
338
- {"name"=>"phone_id", "value"=>nil, "type"=>"string"},
339
- {"name"=>"app_id", "value"=>"application", "type"=>"string"}].sort{|x,y| x['name']<=>y['name']}
340
- end
341
-
342
- it "should list client attributes using rest call" do
343
- res = mock('HttpResponse')
344
- res.stub!(:body).and_return(["blah"].to_json)
345
- RestClient.stub(:post).and_return(res)
346
- RestClient.should_receive(:post).once
347
- RhoconnectApi::get_client_params('some_url',@api_token,'client_id')
348
- end
349
-
350
- it "should list all application sources using direct api call" do
351
- RhoconnectApi::list_sources('',@api_token).sort.should ==
352
- ["SimpleAdapter", "SampleAdapter", "FixedSchemaAdapter", "OtherAdapter"].sort
353
- end
354
-
355
- it "should list all application sources using rest call" do
356
- res = mock('HttpResponse')
357
- res.stub!(:body).and_return(["SimpleAdapter", "SampleAdapter", "FixedSchemaAdapter", "OtherAdapter"].to_json)
358
- RestClient.stub(:post).and_return(res)
359
- RestClient.should_receive(:post).once
360
- RhoconnectApi::list_sources('some_url',@api_token)
361
- end
362
-
363
- it "should list source attributes using direct api call" do
364
- result = RhoconnectApi::get_source_params(
365
- '',@api_token,"SampleAdapter").sort{|x,y| x['name']<=>y['name']}
366
- result.should == [
367
- {"name"=>"rho__id", "value"=>"SampleAdapter", "type"=>"string"},
368
- {"name"=>"source_id", "value"=>nil, "type"=>"integer"},
369
- {"name"=>"name", "value"=>"SampleAdapter", "type"=>"string"},
370
- {"name"=>"url", "value"=>"http://example.com", "type"=>"string"},
371
- {"name"=>"login", "value"=>"testuser", "type"=>"string"},
372
- {"name"=>"password", "value"=>"testpass", "type"=>"string"},
373
- {"name"=>"priority", "value"=>3, "type"=>"integer"},
374
- {"name"=>"callback_url", "value"=>nil, "type"=>"string"},
375
- {"name"=>"poll_interval", "value"=>300, "type"=>"integer"},
376
- {"name"=>"retry_limit", "type"=>"integer", "value"=>0},
377
- {"name"=>"simulate_time", "value"=>0, "type"=>"integer"},
378
- {"name"=>"partition_type", "value"=>"user", "type"=>"string"},
379
- {"name"=>"sync_type", "value"=>"incremental", "type"=>"string"},
380
- {"name"=>"belongs_to", "type"=>"string", "value"=>nil},
381
- {"name"=>"has_many", "type"=>"string", "value"=>"FixedSchemaAdapter,brand"},
382
- {"name"=>"id", "value"=>"SampleAdapter", "type"=>"string"},
383
- {"name"=>"queue", "value"=>nil, "type"=>"string"},
384
- {"name"=>"query_queue", "value"=>nil, "type"=>"string"},
385
- {"name"=>"cud_queue", "value"=>nil, "type"=>"string"},
386
- {"name"=>"pass_through", "value"=>nil, "type"=>"string"}].sort {|x,y| x["name"] <=> y["name"] }
387
- end
388
-
389
- it "should list source attributes with default env poll_interval using direct api call" do
390
- result = RhoconnectApi::get_source_params(
391
- '',@api_token,"OtherAdapter").sort{|x,y| x['name']<=>y['name']}
392
- result.should == [
393
- {"name"=>"rho__id", "value"=>"OtherAdapter", "type"=>"string"},
394
- {"name"=>"source_id", "value"=>nil, "type"=>"integer"},
395
- {"name"=>"name", "value"=>"OtherAdapter", "type"=>"string"},
396
- {"name"=>"url", "value"=>"", "type"=>"string"},
397
- {"name"=>"login", "value"=>"", "type"=>"string"},
398
- {"name"=>"password", "value"=>"", "type"=>"string"},
399
- {"name"=>"priority", "value"=>3, "type"=>"integer"},
400
- {"name"=>"callback_url", "value"=>nil, "type"=>"string"},
401
- {"name"=>"poll_interval", "value"=>201, "type"=>"integer"},
402
- {"name"=>"retry_limit", "value"=>0, "type"=>"integer"},
403
- {"name"=>"simulate_time", "value"=>0, "type"=>"integer"},
404
- {"name"=>"partition_type", "value"=>"app", "type"=>"string"},
405
- {"name"=>"sync_type", "value"=>"incremental", "type"=>"string"},
406
- {"name"=>"belongs_to", "type"=>"string", "value"=>nil},
407
- {"name"=>"has_many", "type"=>"string", "value"=>nil},
408
- {"name"=>"id", "value"=>"OtherAdapter", "type"=>"string"},
409
- {"name"=>"queue", "value"=>nil, "type"=>"string"},
410
- {"name"=>"query_queue", "value"=>nil, "type"=>"string"},
411
- {"name"=>"cud_queue", "value"=>nil, "type"=>"string"},
412
- {"name"=>"pass_through", "value"=>nil, "type"=>"string"}].sort {|x,y| x["name"] <=> y["name"] }
413
- end
414
-
415
- it "should list source attributes using rest call" do
416
- res = mock('HttpResponse')
417
- res.stub!(:body).and_return(["SimpleAdapter"].to_json)
418
- RestClient.stub(:post).and_return(res)
419
- RestClient.should_receive(:post).once
420
- RhoconnectApi::get_source_params('some_url',@api_token,"SimpleAdapter")
421
- end
422
-
423
- it "should list of shared source documents using direct api call" do
424
- RhoconnectApi::list_source_docs('',@api_token,"SimpleAdapter","*").sort.should == {
425
- "md"=>"source:application:__shared__:SimpleAdapter:md",
426
- "errors"=>"source:application:__shared__:SimpleAdapter:errors",
427
- "md_size"=>"source:application:__shared__:SimpleAdapter:md_size",
428
- "md_copy"=>"source:application:__shared__:SimpleAdapter:md_copy"}.sort
429
- end
430
-
431
- it "should list of shared source documents using rest call" do
432
- res = mock('HttpResponse')
433
- res.stub!(:body).and_return(["SimpleAdapter"].to_json)
434
- RestClient.stub(:post).and_return(res)
435
- RestClient.should_receive(:post).once
436
- RhoconnectApi::list_source_docs('some_url',@api_token,"SimpleAdapter",'*')
437
- end
438
-
439
- it "should list client documents using direct api call" do
440
- RhoconnectApi::list_client_docs('',@api_token,"SimpleAdapter",@c.id).should == {
441
- "cd"=>"client:application:testuser:#{@c.id}:SimpleAdapter:cd",
442
- "cd_size"=>"client:application:testuser:#{@c.id}:SimpleAdapter:cd_size",
443
- "create"=>"client:application:testuser:#{@c.id}:SimpleAdapter:create",
444
- "update"=>"client:application:testuser:#{@c.id}:SimpleAdapter:update",
445
- "delete"=>"client:application:testuser:#{@c.id}:SimpleAdapter:delete",
446
-
447
- "page"=>"client:application:testuser:#{@c.id}:SimpleAdapter:page",
448
- "page_token"=>"client:application:testuser:#{@c.id}:SimpleAdapter:page_token",
449
- "delete_page"=>"client:application:testuser:#{@c.id}:SimpleAdapter:delete_page",
450
- "create_links"=>"client:application:testuser:#{@c.id}:SimpleAdapter:create_links",
451
- "create_links_page"=>"client:application:testuser:#{@c.id}:SimpleAdapter:create_links_page",
452
-
453
- "delete_errors"=>"client:application:testuser:#{@c.id}:SimpleAdapter:delete_errors",
454
- "login_error"=>"client:application:testuser:#{@c.id}:SimpleAdapter:login_error",
455
- "create_errors"=>"client:application:testuser:#{@c.id}:SimpleAdapter:create_errors",
456
- "update_errors"=>"client:application:testuser:#{@c.id}:SimpleAdapter:update_errors",
457
- "logoff_error"=>"client:application:testuser:#{@c.id}:SimpleAdapter:logoff_error",
458
-
459
- "search"=>"client:application:testuser:#{@c.id}:SimpleAdapter:search",
460
- "search_token"=>"client:application:testuser:#{@c.id}:SimpleAdapter:search_token",
461
- "search_errors"=>"client:application:testuser:#{@c.id}:SimpleAdapter:search_errors"}
462
- end
463
-
464
- it "should list client documents using rest call" do
465
- res = mock('HttpResponse')
466
- res.stub!(:body).and_return(["SimpleAdapter"].to_json)
467
- RestClient.stub(:post).and_return(res)
468
- RestClient.should_receive(:post).once
469
- RhoconnectApi::list_client_docs('some_url',@api_token,"SimpleAdapter",'*')
470
- end
471
-
472
- it "should return db document by name using direct api call" do
473
- data = {'1' => {'foo' => 'bar'}}
474
- set_state('abc:abc' => data)
475
- RhoconnectApi::get_db_doc('',@api_token,'abc:abc').should == data
476
- end
477
-
478
- it "should return db document by name and data_type using direct api call" do
479
- data = 'some string'
480
- set_state('abc:abc' => data)
481
- RhoconnectApi::get_db_doc('',@api_token,'abc:abc','string').should == data
482
- end
483
-
484
- it "should return db document using rest call" do
485
- data = 'some string'
486
- res = mock('HttpResponse')
487
- res.stub!(:body).and_return(data)
488
- RestClient.stub(:post).and_return(res)
489
- RestClient.should_receive(:post).once
490
- RhoconnectApi::get_db_doc('some_url',@api_token,'abc:abc','string').should == data
491
- end
492
-
493
- it "should set db document by doc name and data using direct api call" do
494
- data = {'1' => {'foo' => 'bar'}}
495
- RhoconnectApi::set_db_doc('',@api_token,'abc:abc',data)
496
- verify_result('abc:abc' => data)
497
- end
498
-
499
- it "should set db document by doc name, data type, and data using direct api call" do
500
- data = 'some string'
501
- RhoconnectApi::set_db_doc('',@api_token,'abc:abc:str',data,'string')
502
- verify_result('abc:abc:str' => data)
503
- end
504
-
505
- it "should set db document using rest call" do
506
- data = 'some string'
507
- RestClient.stub(:post)
508
- RestClient.should_receive(:post).once
509
- RhoconnectApi::set_db_doc('some_url',@api_token,'abc:abc:str',data,'string')
510
- end
511
-
512
- it "should reset and re-create rhoadmin user with bootstrap using direct api call" do
513
- # Store.put_data('somedoc',{'foo'=>'bar'})
514
- Store.put_data('somedoc',{'1' => {'foo'=>'bar'}})
515
- RhoconnectApi::reset('',@api_token).should == "DB reset"
516
- App.is_exist?(test_app_name).should == true
517
- Store.get_data('somedoc').should == {}
518
- User.authenticate('rhoadmin','').should_not be_nil
519
- end
520
-
521
- it "should reset db using rest call" do
522
- RestClient.stub(:post).and_return("DB reset")
523
- RestClient.should_receive(:post).once
524
- RhoconnectApi::reset('some_url',@api_token).should == "DB reset"
525
- end
526
-
527
- it "should do ping asynchronously using direct api call" do
528
- params = {"user_id" => @u.id, "api_token" => @api_token,
529
- "async" => "true","sources" => [@s.name], "message" => 'hello world',
530
- "vibrate" => '5', "badge" => '5', "sound" => 'hello.mp3'}
531
- PingJob.should_receive(:enqueue).once.with(params)
532
- RhoconnectApi::ping('',@api_token,@u.id,params)
533
- end
534
-
535
- it "should do ping using rest call" do
536
- RestClient.stub(:post)
537
- RestClient.should_receive(:post).once
538
- RhoconnectApi::ping('some_url',@api_token,@u.id,{})
539
- end
540
-
541
- it "should do ping multiple users using rest call" do
542
- @u1_fields = {:login => 'testuser1'}
543
- @u1 = User.create(@u1_fields)
544
- @u1.password = 'testpass'
545
- @c1_fields = {
546
- :device_type => 'Apple',
547
- :device_pin => 'abcde',
548
- :device_port => '3334',
549
- :user_id => @u1.id,
550
- :app_id => @a.id
551
- }
552
- @c1 = Client.create(@c1_fields,{:source_name => @s_fields[:name]})
553
- @a.users << @u1.id
554
-
555
- RestClient.stub(:post)
556
- RestClient.should_receive(:post).once
557
- RhoconnectApi::ping('some_url',@api_token,[@u.id, @u1.id],{})
558
- end
559
-
560
- it "should get license info using direct api call" do
561
- RhoconnectApi::get_license_info('',@api_token).should == {
562
- "available" => 9,
563
- "issued" => "Fri Apr 23 17:20:13 -0700 2010",
564
- "seats" => 10,
565
- "rhoconnect_version" => "Version 1",
566
- "licensee" => "Rhomobile" }
567
- end
568
-
569
- it "should get license info using rest call" do
570
- res = mock('HttpResponse')
571
- res.stub!(:body).and_return(['data'].to_json)
572
- RestClient.stub(:post).and_return(res)
573
- RestClient.should_receive(:post).once
574
- RhoconnectApi::get_license_info('some_url',@api_token)
575
- end
576
-
577
- it "should get stats using direct api call" do
578
- Rhoconnect.stats = true
579
- Store.set_value('stat:foo','bar')
580
- RhoconnectApi::stats('',@api_token,:metric => 'foo').should == 'bar'
581
- Rhoconnect.stats = false
582
- end
583
-
584
- it "should get stats using rest call" do
585
- res = mock('HttpResponse')
586
- res.stub!(:body).and_return('bar')
587
- RestClient.stub(:post).and_return(res)
588
- RestClient.should_receive(:post).once.and_return(res)
589
- RhoconnectApi::stats('some_url',@api_token,:metric => 'foo')
590
- end
591
- end
592
- end