rhoconnect 3.2.1 → 3.3.1.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (221) hide show
  1. data/CHANGELOG.md +24 -5
  2. data/Gemfile +2 -2
  3. data/Gemfile.lock +20 -20
  4. data/bench/benchapp/Gemfile +17 -20
  5. data/bench/benchapp/config.ru +2 -2
  6. data/bench/benchapp/settings/settings.yml +3 -3
  7. data/bench/blobapp/Gemfile +16 -13
  8. data/bench/blobapp/config.ru +2 -2
  9. data/bench/blobapp/settings/settings.yml +5 -3
  10. data/bench/lib/bench.rb +35 -32
  11. data/bench/lib/bench/session.rb +9 -1
  12. data/bench/scripts/blob_cud_script.rb +13 -17
  13. data/bench/scripts/cud_script.rb +11 -12
  14. data/bench/scripts/helpers.rb +5 -7
  15. data/bench/scripts/query_md_script.rb +18 -12
  16. data/bench/scripts/query_only_script.rb +19 -11
  17. data/bench/scripts/query_script.rb +17 -13
  18. data/bench/scripts/test_query_script.rb +46 -17
  19. data/bench/scripts/test_source_script.rb +7 -7
  20. data/commands/commands/dtach_commands/dtach_install.rb +44 -16
  21. data/commands/commands/rhoconnect/spec.rb +13 -9
  22. data/commands/commands/rhoconnect/version.rb +6 -0
  23. data/commands/execute.rb +10 -6
  24. data/doc/deploying.txt +75 -13
  25. data/doc/install.txt +3 -3
  26. data/doc/push-client-setup.txt +1 -1
  27. data/doc/rest-api.txt +4 -23
  28. data/doc/rhoconnect-redis-stack.txt +26 -7
  29. data/doc/settings.txt +9 -3
  30. data/examples/simple/Gemfile +3 -1
  31. data/examples/simple/application.rb +5 -0
  32. data/examples/simple/config.ru +3 -2
  33. data/examples/simple/my_server.rb +14 -0
  34. data/examples/simple/settings/settings.yml +1 -0
  35. data/generators/templates/application/Gemfile +4 -4
  36. data/generators/templates/application/application.rb +4 -0
  37. data/generators/templates/application/settings/settings.yml +4 -1
  38. data/installer/unix-like/create_texts.rb +39 -1
  39. data/installer/unix-like/rho_connect_install_constants.rb +1 -1
  40. data/installer/utils/package_upload/repos.rake +7 -5
  41. data/lib/rhoconnect.rb +3 -2
  42. data/lib/rhoconnect/api/app/ans_login.rb +3 -0
  43. data/lib/rhoconnect/api/app/bulk_data.rb +6 -0
  44. data/lib/rhoconnect/api/{source → app}/fast_delete.rb +1 -1
  45. data/lib/rhoconnect/api/{source → app}/fast_insert.rb +2 -2
  46. data/lib/rhoconnect/api/{source → app}/fast_update.rb +2 -2
  47. data/lib/rhoconnect/api/app/login.rb +5 -0
  48. data/lib/rhoconnect/api/{source → app}/push_deletes.rb +1 -1
  49. data/lib/rhoconnect/api/{source → app}/push_objects.rb +1 -1
  50. data/lib/rhoconnect/api/app/query.rb +4 -0
  51. data/lib/rhoconnect/api/app/queue_updates.rb +94 -0
  52. data/lib/rhoconnect/api/app/search.rb +4 -0
  53. data/lib/rhoconnect/api/client/client_get_db_doc.rb +5 -0
  54. data/lib/rhoconnect/api/client/client_set_db_doc.rb +8 -0
  55. data/lib/rhoconnect/api/client/create.rb +7 -0
  56. data/lib/rhoconnect/api/client/get_client_params.rb +2 -1
  57. data/lib/rhoconnect/api/client/list_client_docs.rb +2 -1
  58. data/lib/rhoconnect/api/client/register.rb +12 -0
  59. data/lib/rhoconnect/api/client/reset.rb +5 -0
  60. data/lib/rhoconnect/api/{source → readstate}/set_refresh_time.rb +2 -1
  61. data/lib/rhoconnect/api/source/get_source_params.rb +3 -2
  62. data/lib/rhoconnect/api/source/list_sources.rb +2 -1
  63. data/lib/rhoconnect/api/source/update_source_params.rb +3 -3
  64. data/lib/rhoconnect/api/store/get_db_doc.rb +4 -0
  65. data/lib/rhoconnect/api/store/set_db_doc.rb +7 -0
  66. data/lib/rhoconnect/api/system/get_adapter.rb +4 -0
  67. data/lib/rhoconnect/api/{admin → system}/get_license_info.rb +2 -1
  68. data/lib/rhoconnect/api/system/login.rb +15 -0
  69. data/lib/rhoconnect/api/{admin → system}/reset.rb +3 -2
  70. data/lib/rhoconnect/api/system/save_adapter.rb +4 -0
  71. data/lib/rhoconnect/api/{admin → system}/stats.rb +2 -1
  72. data/lib/rhoconnect/api/user/create_user.rb +2 -2
  73. data/lib/rhoconnect/api/user/delete_client.rb +6 -0
  74. data/lib/rhoconnect/api/user/delete_user.rb +2 -1
  75. data/lib/rhoconnect/api/user/list_clients.rb +4 -0
  76. data/lib/rhoconnect/api/user/list_source_docs.rb +11 -0
  77. data/lib/rhoconnect/api/user/list_users.rb +1 -1
  78. data/lib/rhoconnect/api/user/ping.rb +7 -0
  79. data/lib/rhoconnect/api/user/show_user.rb +3 -0
  80. data/lib/rhoconnect/api/user/update_user.rb +3 -2
  81. data/lib/rhoconnect/api/user/user_get_db_doc.rb +5 -0
  82. data/lib/rhoconnect/api/user/user_set_db_doc.rb +10 -0
  83. data/lib/rhoconnect/app.rb +12 -2
  84. data/lib/rhoconnect/async.rb +6 -10
  85. data/lib/rhoconnect/bulk_data/bulk_data.rb +4 -4
  86. data/lib/rhoconnect/client.rb +10 -9
  87. data/lib/rhoconnect/client_sync.rb +24 -19
  88. data/lib/rhoconnect/document.rb +18 -4
  89. data/lib/rhoconnect/graph_helper.rb +4 -2
  90. data/lib/rhoconnect/jobs/bulk_data_job.rb +1 -1
  91. data/lib/rhoconnect/jobs/ping_job.rb +39 -29
  92. data/lib/rhoconnect/middleware/admin_user.rb +23 -0
  93. data/lib/rhoconnect/middleware/body_content_type_parser.rb +35 -0
  94. data/lib/rhoconnect/{cors.rb → middleware/cors.rb} +1 -0
  95. data/lib/rhoconnect/middleware/current_app.rb +16 -0
  96. data/lib/rhoconnect/middleware/current_request.rb +16 -0
  97. data/lib/rhoconnect/middleware/current_user.rb +17 -0
  98. data/lib/rhoconnect/middleware/helpers.rb +105 -0
  99. data/lib/rhoconnect/middleware/login_required.rb +22 -0
  100. data/lib/rhoconnect/{stats/middleware.rb → middleware/stats.rb} +5 -3
  101. data/lib/rhoconnect/middleware/x_domain_session_wrapper.rb +58 -0
  102. data/lib/rhoconnect/ping.rb +1 -0
  103. data/lib/rhoconnect/ping/apple.rb +18 -16
  104. data/lib/rhoconnect/ping/blackberry.rb +9 -9
  105. data/lib/rhoconnect/ping/rhoconnect_push.rb +45 -0
  106. data/lib/rhoconnect/server.rb +98 -91
  107. data/lib/rhoconnect/source.rb +5 -1
  108. data/lib/rhoconnect/source_sync.rb +4 -3
  109. data/lib/rhoconnect/stats/record.rb +15 -15
  110. data/lib/rhoconnect/store.rb +253 -75
  111. data/lib/rhoconnect/tasks.rb +3 -3
  112. data/lib/rhoconnect/version.rb +1 -1
  113. data/lib/rhoconnect/web-console/controllers/admins.js +1 -14
  114. data/lib/rhoconnect/web-console/models/adapter.js +18 -8
  115. data/lib/rhoconnect/web-console/models/client.js +15 -9
  116. data/lib/rhoconnect/web-console/models/doc.js +7 -11
  117. data/lib/rhoconnect/web-console/models/session.js +5 -2
  118. data/lib/rhoconnect/web-console/models/source.js +55 -36
  119. data/lib/rhoconnect/web-console/models/user.js +20 -11
  120. data/lib/rhoconnect/web-console/public/backbone.js +8 -2
  121. data/lib/rhoconnect/web-console/templates/index.erb +11 -5
  122. data/lib/rhoconnect/web-console/views/doc.js +6 -8
  123. data/lib/rhoconnect/web-console/views/edit_user.js +6 -3
  124. data/lib/rhoconnect/web-console/views/home.js +98 -25
  125. data/lib/rhoconnect/web-console/views/index.js +1 -1
  126. data/lib/rhoconnect/web-console/views/new_ping.js +6 -3
  127. data/lib/rhoconnect/web-console/views/server_doc.js +12 -4
  128. data/lib/rhoconnect/web-console/views/show_device.js +6 -3
  129. data/rhoconnect.gemspec +1 -2
  130. data/spec/api/{source → app}/fast_delete_spec.rb +4 -4
  131. data/spec/api/{source → app}/fast_insert_spec.rb +4 -4
  132. data/spec/api/{source → app}/fast_update_spec.rb +22 -6
  133. data/spec/api/{source → app}/push_deletes_spec.rb +2 -2
  134. data/spec/api/app/push_objects_spec.rb +45 -0
  135. data/spec/api/client/client_get_db_doc_spec.rb +31 -0
  136. data/spec/api/client/client_set_db_doc_spec.rb +14 -0
  137. data/spec/api/client/get_client_params_spec.rb +3 -2
  138. data/spec/api/client/list_client_docs_spec.rb +2 -2
  139. data/spec/api/{source → readstate}/set_refresh_time_spec.rb +15 -9
  140. data/spec/api/source/get_source_params_spec.rb +3 -2
  141. data/spec/api/source/list_sources_spec.rb +3 -9
  142. data/spec/api/source/update_source_params_spec.rb +4 -4
  143. data/spec/api/store/get_db_doc_spec.rb +32 -0
  144. data/spec/api/store/set_db_doc_spec.rb +43 -0
  145. data/spec/api/system/adapter_spec.rb +33 -0
  146. data/spec/api/{admin → system}/get_license_info_spec.rb +2 -5
  147. data/spec/api/{admin/get_api_token_spec.rb → system/login_spec.rb} +4 -11
  148. data/spec/api/{admin → system}/reset_spec.rb +2 -2
  149. data/spec/api/{admin → system}/stats_spec.rb +19 -13
  150. data/spec/api/user/create_user_spec.rb +15 -8
  151. data/spec/api/{client → user}/delete_client_spec.rb +3 -4
  152. data/spec/api/user/delete_user_spec.rb +33 -4
  153. data/spec/api/user/list_clients_spec.rb +30 -0
  154. data/spec/api/user/list_source_docs_spec.rb +35 -0
  155. data/spec/api/user/list_users_spec.rb +5 -6
  156. data/spec/api/{client → user}/ping_spec.rb +4 -6
  157. data/spec/api/user/show_user_spec.rb +14 -0
  158. data/spec/api/user/update_user_spec.rb +28 -10
  159. data/spec/api/user/user_get_db_doc_spec.rb +16 -0
  160. data/spec/api/user/user_set_db_doc_spec.rb +41 -0
  161. data/spec/apps/rhotestapp/application.rb +4 -0
  162. data/spec/apps/rhotestapp/settings/settings.yml +3 -1
  163. data/spec/bulk_data/bulk_data_spec.rb +13 -0
  164. data/spec/client_sync_spec.rb +41 -59
  165. data/spec/document_spec.rb +23 -0
  166. data/spec/javascripts/doc_view_spec.js +1 -1
  167. data/spec/javascripts/home_view_spec.js +10 -5
  168. data/spec/javascripts/index_view_spec.js +1 -1
  169. data/spec/jobs/ping_job_spec.rb +26 -0
  170. data/spec/perf/store_perf_spec.rb +1 -1
  171. data/spec/ping/android_spec.rb +0 -7
  172. data/spec/ping/apple_spec.rb +7 -0
  173. data/spec/ping/blackberry_spec.rb +10 -0
  174. data/spec/ping/rhoconnect_push_spec.rb +58 -0
  175. data/spec/server/cors_spec.rb +1 -1
  176. data/spec/server/server_spec.rb +152 -104
  177. data/spec/{stats/middleware_spec.rb → server/stats_spec.rb} +4 -5
  178. data/spec/server/x_domain_session_wrapper_spec.rb +3 -3
  179. data/spec/source_spec.rb +2 -2
  180. data/spec/source_sync_spec.rb +2 -0
  181. data/spec/spec_helper.rb +17 -3
  182. data/spec/stats/record_spec.rb +18 -19
  183. data/spec/store_spec.rb +51 -26
  184. data/spec/support/shared_examples.rb +4 -0
  185. data/spec/sync_states_spec.rb +2 -2
  186. metadata +104 -88
  187. data/bench/benchapp/Gemfile.lock +0 -87
  188. data/bench/blobapp/Gemfile.lock +0 -107
  189. data/bench/lib/testdata/5-data.txt +0 -8
  190. data/doc/release.txt +0 -41
  191. data/lib/rhoconnect/api/admin/get_api_token.rb +0 -14
  192. data/lib/rhoconnect/api/admin/login.rb +0 -6
  193. data/lib/rhoconnect/api/application/bulk_data.rb +0 -7
  194. data/lib/rhoconnect/api/application/clientcreate.rb +0 -8
  195. data/lib/rhoconnect/api/application/clientlogin.rb +0 -6
  196. data/lib/rhoconnect/api/application/clientregister.rb +0 -13
  197. data/lib/rhoconnect/api/application/clientreset.rb +0 -6
  198. data/lib/rhoconnect/api/application/query.rb +0 -7
  199. data/lib/rhoconnect/api/application/queue_updates.rb +0 -20
  200. data/lib/rhoconnect/api/application/search.rb +0 -6
  201. data/lib/rhoconnect/api/client/create_client.rb +0 -3
  202. data/lib/rhoconnect/api/client/delete_client.rb +0 -5
  203. data/lib/rhoconnect/api/client/list_clients.rb +0 -3
  204. data/lib/rhoconnect/api/client/ping.rb +0 -7
  205. data/lib/rhoconnect/api/source/get_adapter.rb +0 -3
  206. data/lib/rhoconnect/api/source/get_db_doc.rb +0 -7
  207. data/lib/rhoconnect/api/source/list_source_docs.rb +0 -10
  208. data/lib/rhoconnect/api/source/save_adapter.rb +0 -3
  209. data/lib/rhoconnect/api/source/set_db_doc.rb +0 -10
  210. data/lib/rhoconnect/api/source/upload_file.rb +0 -4
  211. data/lib/rhoconnect/body_content_type_parser.rb +0 -32
  212. data/lib/rhoconnect/x_domain_session_wrapper.rb +0 -53
  213. data/spec/api/admin/api_token_spec.rb +0 -13
  214. data/spec/api/client/create_client_spec.rb +0 -13
  215. data/spec/api/client/list_clients_spec.rb +0 -22
  216. data/spec/api/source/adapter_spec.rb +0 -29
  217. data/spec/api/source/get_db_doc_spec.rb +0 -21
  218. data/spec/api/source/list_source_docs_spec.rb +0 -25
  219. data/spec/api/source/push_objects_spec.rb +0 -27
  220. data/spec/api/source/set_db_doc_spec.rb +0 -32
  221. data/spec/api/source/upload_file_spec.rb +0 -26
@@ -1,53 +0,0 @@
1
- require "cgi"
2
-
3
- class XDomainSessionWrapper
4
- def initialize(app, opts={})
5
- @app = app
6
- @session_cookie = opts[:session_cookie] || 'rhoconnect_session'
7
- @api_uri_regexp = opts[:api_uri_regexp] || /\A\/api\/application/
8
- @login_uri_regexp = opts[:login_uri_regexp] || /\A\/api\/application\/clientlogin/
9
- yield self if block_given?
10
- end
11
-
12
- def is_sync_protocol(env)
13
- # if it is rhoconnect protocol URI
14
- @api_uri_regexp.match(env['PATH_INFO'])
15
- end
16
-
17
- def call(env)
18
- if is_sync_protocol(env)
19
- env['HTTP_COOKIE'] = env['HTTP_COOKIE'] || CGI.unescape(get_session_from_url(env))
20
- end
21
-
22
- status, headers, body = @app.call(env)
23
-
24
- if is_sync_protocol(env)
25
- cookies = headers['Set-Cookie'].to_s
26
- #puts "<----- Cookies: #{cookies}"
27
- # put cookies to body as JSON on login success
28
- if @login_uri_regexp.match(env['PATH_INFO']) && status == 200
29
- body = session_json_from(cookies)
30
- headers['Content-Length'] = body.length.to_s
31
- end
32
- end
33
-
34
- # The Body itself should not be an instance of String,as this will break in Ruby 1.9
35
- body = ["#{body}"] if body.is_a?(String)
36
- [status, headers, body]
37
- end
38
-
39
- def session_json_from(cookies)
40
- rexp = Regexp.new(@session_cookie +'=[^\s]*')
41
- sc = cookies.to_s.slice rexp
42
- "{\"" +@session_cookie +"\": \"#{CGI.escape sc.to_s}\"}"
43
- end
44
-
45
- def get_session_from_url(env)
46
- rexp = Regexp.new(@session_cookie +'=.*\Z')
47
- qs = env['QUERY_STRING'].to_s.slice rexp
48
- qs = qs.to_s.split(/&/)[0]
49
- nv = qs.to_s.split(/=/)
50
- return nv[1] if nv.length > 1
51
- ''
52
- end
53
- end
@@ -1,13 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..','..','spec_helper')
2
-
3
- describe "ApiToken" do
4
- it_behaves_like "SharedRhoconnectHelper", :rhoconnect_data => true do
5
- it "should generate api token with user" do
6
- token = ApiToken.create(:user_id => @u.id)
7
- token.value.length.should == 32
8
- token.user_id.should == @u.id
9
- token.user.login.should == @u.login
10
- token.delete
11
- end
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..','api_helper')
2
-
3
- describe "RhoconnectApiCreateUser" do
4
- it_should_behave_like "ApiHelper" do
5
- it "should create client for a user" do
6
- post "/api/client/create_client", {:api_token => @api_token, :user_id => @u_fields[:login]}
7
- last_response.should be_ok
8
- clients = User.load(@u_fields[:login]).clients.members
9
- clients.size.should == 2
10
- clients.include?(last_response.body).should == true
11
- end
12
- end
13
- end
@@ -1,22 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..','api_helper')
2
-
3
- describe "RhoconnectApiListUsers" do
4
- it_should_behave_like "ApiHelper" do
5
- it "should list clients" do
6
- post "/api/client/list_clients", {:api_token => @api_token,
7
- :user_id => @u_fields[:login]}
8
- res = JSON.parse(last_response.body)
9
- res.is_a?(Array).should == true
10
- res.size.should == 1
11
- res[0].is_a?(String) == true
12
- res[0].length.should == 32
13
- end
14
-
15
- it "should handle empty client's list" do
16
- @u.clients.delete(@c.id)
17
- post "/api/client/list_clients", {:api_token => @api_token,
18
- :user_id => @u_fields[:login]}
19
- JSON.parse(last_response.body).should == []
20
- end
21
- end
22
- end
@@ -1,29 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..','api_helper')
2
-
3
- describe "RhoconnectApiDeleteUser" do
4
- it_should_behave_like "ApiHelper" do
5
-
6
- it "should save adapter url" do
7
- params = {:api_token => @api_token,
8
- :attributes => {:adapter_url => 'http://test.com'}}
9
- post "/api/source/save_adapter", params
10
- last_response.should be_ok
11
- end
12
-
13
- it "should get adapter url" do
14
- params = {:api_token => @api_token,
15
- :attributes => {:adapter_url => 'http://test.com'}}
16
- post "/api/source/get_adapter", params
17
- last_response.should be_ok
18
- end
19
-
20
- it "should get check deprecation warning in /api/get_adapter" do
21
- params = {:api_token => @api_token,
22
- :attributes => {:adapter_url => 'http://test.com'}}
23
- post "/api/get_adapter", params
24
- last_response.should be_ok
25
- last_response.headers["Warning"].index('deprecated').should_not == nil
26
- end
27
- end
28
-
29
- end
@@ -1,21 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..','api_helper')
2
-
3
- describe "RhoconnectApiGetDbDoc" do
4
- it_should_behave_like "ApiHelper" do
5
- it "should return db document by name" do
6
- data = {'1' => {'foo' => 'bar'}}
7
- set_state('abc:abc' => data)
8
- post "/api/source/get_db_doc", :api_token => @api_token, :doc => 'abc:abc'
9
- last_response.should be_ok
10
- JSON.parse(last_response.body).should == data
11
- end
12
-
13
- it "should return db document by name and data_type" do
14
- data = 'some string'
15
- set_state('abc:abc' => data)
16
- post "/api/source/get_db_doc", :api_token => @api_token, :doc => 'abc:abc', :data_type => :string
17
- last_response.should be_ok
18
- last_response.body.should == data
19
- end
20
- end
21
- end
@@ -1,25 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..','api_helper')
2
-
3
- describe "RhoconnectApiListSourceDocs" do
4
- it_should_behave_like "ApiHelper" do
5
- it "should list of shared source documents" do
6
- post "/api/source/list_source_docs", {:api_token => @api_token,
7
- :source_id => "SimpleAdapter", :user_id => '*'}
8
- JSON.parse(last_response.body).should == {
9
- "md"=>"source:application:__shared__:SimpleAdapter:md",
10
- "errors"=>"source:application:__shared__:SimpleAdapter:errors",
11
- "md_size"=>"source:application:__shared__:SimpleAdapter:md_size",
12
- "md_copy"=>"source:application:__shared__:SimpleAdapter:md_copy"}
13
- end
14
-
15
- it "should list user source documents" do
16
- post "/api/source/list_source_docs", {:api_token => @api_token,
17
- :source_id => "SampleAdapter", :user_id => @u.id}
18
- JSON.parse(last_response.body).should == {
19
- "md"=>"source:application:testuser:SampleAdapter:md",
20
- "errors"=>"source:application:testuser:SampleAdapter:errors",
21
- "md_size"=>"source:application:testuser:SampleAdapter:md_size",
22
- "md_copy"=>"source:application:testuser:SampleAdapter:md_copy"}
23
- end
24
- end
25
- end
@@ -1,27 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..','api_helper')
2
-
3
- describe "RhoconnectApiPushObjects" do
4
- it_should_behave_like "ApiHelper" do
5
- it "should push new objects to rhoconnect's :md" do
6
- data = {'1' => @product1, '2' => @product2, '3' => @product3}
7
- post "/api/source/push_objects", :api_token => @api_token,
8
- :user_id => @u.id, :source_id => @s_fields[:name], :objects => data
9
- last_response.should be_ok
10
- verify_result(@s.docname(:md) => data,@s.docname(:md_size)=>'3')
11
- end
12
-
13
- it "should push updates to existing objects to rhoconnect's :md" do
14
- data = {'1' => @product1, '2' => @product2, '3' => @product3}
15
- update = {'price' => '0.99', 'new_field' => 'value'}
16
- @s = Source.load(@s_fields[:name],@s_params)
17
- set_state(@s.docname(:md) => data,@s.docname(:md_size) => '3')
18
- update.each do |key,value|
19
- data['2'][key] = value
20
- end
21
- post "/api/source/push_objects", :api_token => @api_token,
22
- :user_id => @u.id, :source_id => @s_fields[:name], :objects => {'2'=>update}
23
- last_response.should be_ok
24
- verify_result(@s.docname(:md) => data,@s.docname(:md_size)=>'3')
25
- end
26
- end
27
- end
@@ -1,32 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..','api_helper')
2
-
3
- describe "RhoconnectApiSetDbDoc" do
4
- it_should_behave_like "ApiHelper" do
5
- it "should set db document by doc name and data" do
6
- data = {'1' => {'foo' => 'bar'}}
7
- post "/api/source/set_db_doc", :api_token => @api_token, :doc => 'abc:abc', :data => data
8
- last_response.should be_ok
9
- verify_result('abc:abc' => data)
10
- end
11
-
12
- it "should set db document by doc name, data type, and data" do
13
- data = 'some string'
14
- post "/api/source/set_db_doc", :api_token => @api_token, :doc => 'abc:abc:str', :data => data, :data_type => :string
15
- last_response.should be_ok
16
- verify_result('abc:abc:str' => data)
17
- end
18
-
19
- it "should append data in set db document by doc name and data" do
20
- data = {'1' => {'foo' => 'bar'}}
21
- data2 = {'2' => {'foo1' => 'bar1'}}
22
- data3 = data.merge(data2)
23
- post "/api/source/set_db_doc", :api_token => @api_token, :doc => 'abc:abc', :data => data
24
- last_response.should be_ok
25
- verify_result('abc:abc' => data)
26
-
27
- post "/api/source/set_db_doc", :api_token => @api_token, :doc => 'abc:abc', :data => data2, :append => true
28
- last_response.should be_ok
29
- verify_result('abc:abc' => data3)
30
- end
31
- end
32
- end
@@ -1,26 +0,0 @@
1
- require File.join(File.dirname(__FILE__),'..','api_helper')
2
-
3
- describe "RhoconnectApiUploadFile" do
4
- it_should_behave_like "ApiHelper" do
5
- it "should upload and unzip file" do
6
- file = File.join(File.dirname(__FILE__),'../..','testdata','compressed')
7
- compress(file)
8
- zipfile = File.join(file,"compressed.zip")
9
- post "/api/source/upload_file", :api_token => @api_token,
10
- :upload_file => Rack::Test::UploadedFile.new(zipfile, "application/octet-stream")
11
- FileUtils.rm zipfile
12
- expected = File.join(Rhoconnect.app_directory,'compress-data.txt')
13
- File.exists?(expected).should == true
14
- File.read(expected).should == 'some compressed text'
15
- FileUtils.rm expected
16
- end
17
-
18
- it "should fail to upload a non-zip file" do
19
- file = File.join(File.dirname(__FILE__),'../..','testdata','compressed','compress-data.txt')
20
- post "/api/source/upload_file", :api_token => @api_token,
21
- :upload_file => Rack::Test::UploadedFile.new(file, "application/octet-stream")
22
- last_response.status.should == 500
23
- File.exists?(File.join(Rhoconnect.app_directory,'compress-data.txt')).should == false
24
- end
25
- end
26
- end