rhoconnect 3.4.5 → 4.0.0.beta.10
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +57 -3
- data/Gemfile +9 -7
- data/Gemfile.lock +37 -37
- data/Rakefile +18 -7
- data/bench/benchapp/Gemfile +1 -1
- data/bench/benchapp/config.ru +0 -3
- data/bench/benchapp/controllers/ruby/application.rb +17 -0
- data/bench/benchapp/controllers/ruby/application_controller.rb +17 -0
- data/bench/benchapp/controllers/ruby/mock_adapter_controller.rb +8 -0
- data/bench/benchapp/controllers/ruby/queue_mock_adapter_controller.rb +8 -0
- data/bench/benchapp/{sources → models/ruby}/mock_adapter.rb +1 -1
- data/bench/benchapp/{sources → models/ruby}/queue_mock_adapter.rb +0 -0
- data/bench/benchapp/spec/{sources → models/ruby}/mock_adapter_spec.rb +1 -1
- data/bench/benchapp/spec/{sources → models/ruby}/queue_mock_adapter_spec.rb +1 -1
- data/bench/benchapp/spec/spec_helper.rb +2 -2
- data/bench/blobapp/Gemfile +1 -1
- data/bench/blobapp/config.ru +0 -3
- data/bench/blobapp/controllers/ruby/application_controller.rb +17 -0
- data/bench/blobapp/controllers/ruby/blob_adapter_controller.rb +8 -0
- data/bench/blobapp/{sources → models/ruby}/blob_adapter.rb +9 -2
- data/bench/blobapp/spec/{sources → models/ruby}/blob_adapter_spec.rb +1 -1
- data/bench/blobapp/spec/spec_helper.rb +1 -1
- data/bench/lib/bench/cli.rb +1 -1
- data/bench/scripts/blob_cud_script.rb +1 -1
- data/bench/scripts/query_md_script.rb +1 -1
- data/bench/scripts/query_only_script.rb +1 -1
- data/bench/scripts/query_script.rb +1 -1
- data/bench/scripts/test_query_script.rb +7 -1
- data/bench/spec/mock_adapter_spec.rb +1 -1
- data/bench/spec/result_spec.rb +3 -3
- data/bin/rhoconnect +5 -3
- data/commands/dtach/dtach_install.rb +2 -2
- data/commands/execute.rb +8 -3
- data/commands/generators/app.rb +3 -3
- data/commands/generators/controller.rb +6 -0
- data/commands/generators/model.rb +6 -0
- data/commands/generators/source.rb +3 -3
- data/commands/generators/update.rb +1 -1
- data/commands/redis/redis_about.rb +2 -2
- data/commands/redis/redis_download.rb +1 -1
- data/commands/redis/redis_install.rb +4 -3
- data/commands/redis/redis_restart.rb +4 -4
- data/commands/redis/redis_start.rb +5 -4
- data/commands/redis/redis_startbg.rb +5 -4
- data/commands/redis/redis_status.rb +13 -0
- data/commands/redis/redis_stop.rb +3 -3
- data/commands/rhoconnect/config.rb +28 -16
- data/commands/rhoconnect/flushdb.rb +1 -2
- data/commands/rhoconnect/get_token.rb +15 -11
- data/commands/rhoconnect/restart.rb +13 -5
- data/commands/rhoconnect/set_admin_password.rb +8 -8
- data/commands/rhoconnect/start.rb +74 -16
- data/commands/rhoconnect/startbg.rb +1 -1
- data/commands/rhoconnect/startdebug.rb +1 -1
- data/commands/rhoconnect/stop.rb +13 -1
- data/commands/rhoconnect/web.rb +5 -5
- data/commands/rhoconnect_console/console.rb +7 -5
- data/commands/{rhoconnect → rhoconnect_spec}/spec.rb +0 -0
- data/commands/rhoconnect_war/war.rb +9 -9
- data/commands/utilities/blank_app.ru +56 -0
- data/commands/utilities/redis_runner.rb +54 -19
- data/doc/authentication.txt +80 -6
- data/doc/blob-sync.txt +104 -97
- data/doc/bulk-sync.txt +1 -1
- data/doc/client-java.txt +3 -3
- data/doc/client-objc.txt +2 -2
- data/doc/client.txt +4 -4
- data/doc/command-line.txt +105 -200
- data/doc/data-partitioning.txt +40 -0
- data/doc/deploying.txt +249 -77
- data/doc/extending-rhoconnect-server.txt +40 -57
- data/doc/heroku-addon.txt +2 -0
- data/doc/install.txt +45 -95
- data/doc/introduction.txt +1 -1
- data/doc/java-plugin.txt +365 -190
- data/doc/metadata.txt +1 -1
- data/doc/migration.txt +108 -142
- data/doc/preparing-production.txt +1 -1
- data/doc/push-backend-setup.txt +2 -0
- data/doc/push-client-setup-android.txt +78 -0
- data/doc/push-client-setup-bb.txt +81 -0
- data/doc/push-client-setup-ios.txt +70 -0
- data/doc/push-client-setup-rps.txt +200 -0
- data/doc/push-client-setup.txt +63 -66
- data/doc/push-server-setup.txt +67 -40
- data/doc/push-testing.txt +29 -0
- data/doc/push.txt +21 -6
- data/doc/rest-api.txt +128 -55
- data/doc/rhoconnect-redis-stack.txt +120 -0
- data/doc/settings.txt +4 -12
- data/doc/source-adapters-intro.txt +28 -0
- data/doc/source-adapters.txt +235 -272
- data/doc/stats-middleware.txt +9 -29
- data/doc/supported-platforms.txt +21 -30
- data/doc/testing.txt +40 -42
- data/doc/tutorial.txt +72 -57
- data/examples/simple/Gemfile +1 -1
- data/examples/simple/application.rb +4 -5
- data/examples/simple/my_server.rb +2 -2
- data/examples/simple/settings/settings.yml +1 -1
- data/generators/rhoconnect.rb +151 -50
- data/generators/templates/application/Gemfile +1 -1
- data/generators/templates/application/Rakefile +3 -3
- data/generators/templates/application/config.ru +1 -4
- data/generators/templates/application/controllers/application_controller.rb +17 -0
- data/generators/templates/application/controllers/js/application_controller.js +14 -0
- data/generators/templates/application/controllers/ruby/application_controller.rb +17 -0
- data/generators/templates/application/package.json +8 -0
- data/generators/templates/application/rcgemfile +2 -5
- data/generators/templates/application/settings/settings.yml +3 -3
- data/generators/templates/application/spec/application_controller_spec.rb +23 -0
- data/generators/templates/application/spec/js_spec.rb +25 -0
- data/generators/templates/application/spec/spec_helper.rb +21 -7
- data/generators/templates/source/controllers/js/controller.js +7 -0
- data/generators/templates/source/controllers/ruby/controller.rb +8 -0
- data/generators/templates/source/controllers/ruby/controller_spec.rb +27 -0
- data/generators/templates/source/models/js/model.js +46 -0
- data/generators/templates/source/{source_adapter.rb → models/ruby/model.rb} +15 -10
- data/generators/templates/source/{source_spec.rb → models/ruby/model_spec.rb} +1 -1
- data/install.sh +5 -5
- data/installer/unix-like/create_texts.rb +2 -2
- data/installer/unix-like/rho_connect_install_constants.rb +2 -2
- data/installer/unix-like/rho_connect_install_utilities.rb +1 -1
- data/installer/utils/constants.rb +4 -4
- data/js-adapters/ballroom.js +216 -0
- data/js-adapters/node.rb +52 -0
- data/js-adapters/node_channel.rb +181 -0
- data/js-adapters/request.js +27 -0
- data/js-adapters/response.js +57 -0
- data/js-adapters/rhoconnect_helpers.js +60 -0
- data/js-adapters/router.js +60 -0
- data/js-adapters/server.js +5 -0
- data/lib/rhoconnect/api/app/ans_login.rb +3 -3
- data/lib/rhoconnect/api/app/bulk_data.rb +10 -10
- data/lib/rhoconnect/api/app/fast_delete.rb +11 -10
- data/lib/rhoconnect/api/app/fast_insert.rb +11 -10
- data/lib/rhoconnect/api/app/fast_update.rb +11 -10
- data/lib/rhoconnect/api/app/login.rb +5 -5
- data/lib/rhoconnect/api/app/push_deletes.rb +12 -11
- data/lib/rhoconnect/api/app/push_objects.rb +12 -11
- data/lib/rhoconnect/api/app/query.rb +8 -7
- data/lib/rhoconnect/api/app/queue_updates.rb +98 -94
- data/lib/rhoconnect/api/app/search.rb +8 -7
- data/lib/rhoconnect/api/client/client_get_db_doc.rb +5 -5
- data/lib/rhoconnect/api/client/client_set_db_doc.rb +8 -8
- data/lib/rhoconnect/api/client/create.rb +7 -7
- data/lib/rhoconnect/api/client/get_client_params.rb +4 -4
- data/lib/rhoconnect/api/client/list_client_docs.rb +17 -17
- data/lib/rhoconnect/api/client/register.rb +12 -12
- data/lib/rhoconnect/api/client/reset.rb +5 -5
- data/lib/rhoconnect/api/readstate/set_refresh_time.rb +9 -9
- data/lib/rhoconnect/api/source/get_source_params.rb +4 -4
- data/lib/rhoconnect/api/source/list_sources.rb +16 -16
- data/lib/rhoconnect/api/source/update_source_params.rb +6 -6
- data/lib/rhoconnect/api/store/get_db_doc.rb +4 -4
- data/lib/rhoconnect/api/store/set_db_doc.rb +7 -7
- data/lib/rhoconnect/api/system/get_adapter.rb +4 -4
- data/lib/rhoconnect/api/system/get_license_info.rb +8 -8
- data/lib/rhoconnect/api/system/login.rb +15 -15
- data/lib/rhoconnect/api/system/reset.rb +11 -11
- data/lib/rhoconnect/api/system/save_adapter.rb +4 -4
- data/lib/rhoconnect/api/system/stats.rb +22 -22
- data/lib/rhoconnect/api/user/create_user.rb +7 -7
- data/lib/rhoconnect/api/user/delete_client.rb +6 -6
- data/lib/rhoconnect/api/user/delete_user.rb +11 -10
- data/lib/rhoconnect/api/user/list_clients.rb +4 -4
- data/lib/rhoconnect/api/user/list_source_docs.rb +10 -10
- data/lib/rhoconnect/api/user/list_users.rb +3 -3
- data/lib/rhoconnect/api/user/ping.rb +3 -3
- data/lib/rhoconnect/api/user/show_user.rb +3 -3
- data/lib/rhoconnect/api/user/update_user.rb +5 -5
- data/lib/rhoconnect/api/user/user_get_db_doc.rb +5 -5
- data/lib/rhoconnect/api/user/user_set_db_doc.rb +10 -10
- data/lib/rhoconnect/api_token.rb +5 -6
- data/lib/rhoconnect/app.rb +6 -46
- data/lib/rhoconnect/application/init.rb +5 -2
- data/lib/rhoconnect/async.rb +76 -39
- data/lib/rhoconnect/bulk_data/bulk_data.rb +6 -4
- data/lib/rhoconnect/client.rb +59 -9
- data/lib/rhoconnect/condition/admin_required.rb +27 -0
- data/lib/rhoconnect/condition/client_required.rb +50 -0
- data/lib/rhoconnect/condition/login_required.rb +22 -0
- data/lib/rhoconnect/condition/source_required.rb +49 -0
- data/lib/rhoconnect/condition/verbs.rb +17 -0
- data/lib/rhoconnect/condition/verify_success.rb +19 -0
- data/lib/rhoconnect/controller/app_base.rb +74 -0
- data/lib/rhoconnect/controller/base.rb +68 -0
- data/lib/rhoconnect/controller/clients_controller.rb +79 -0
- data/lib/rhoconnect/controller/dynamic_adapter_controller.rb +93 -0
- data/lib/rhoconnect/controller/js_base.rb +124 -0
- data/lib/rhoconnect/controller/read_state_controller.rb +22 -0
- data/lib/rhoconnect/controller/source_adapter_base.rb +14 -0
- data/lib/rhoconnect/controller/sources_controller.rb +44 -0
- data/lib/rhoconnect/controller/store_controller.rb +25 -0
- data/lib/rhoconnect/controller/system_controller.rb +67 -0
- data/lib/rhoconnect/controller/users_controller.rb +99 -0
- data/lib/rhoconnect/db_adapter.rb +1 -3
- data/lib/rhoconnect/document.rb +159 -50
- data/lib/rhoconnect/handler/authenticate/execute_methods.rb +77 -0
- data/lib/rhoconnect/handler/authenticate/runner.rb +49 -0
- data/lib/rhoconnect/handler/authenticate.rb +3 -0
- data/lib/rhoconnect/handler/bulk_data.rb +28 -0
- data/lib/rhoconnect/handler/changes/engine.rb +271 -0
- data/lib/rhoconnect/handler/changes/execute_methods.rb +88 -0
- data/lib/rhoconnect/handler/changes/pass_through_runner.rb +11 -0
- data/lib/rhoconnect/handler/changes/runner.rb +53 -0
- data/lib/rhoconnect/handler/changes.rb +31 -0
- data/lib/rhoconnect/handler/helpers/auth_method.rb +29 -0
- data/lib/rhoconnect/handler/helpers/binding.rb +18 -0
- data/lib/rhoconnect/handler/helpers/bulk_data.rb +53 -0
- data/lib/rhoconnect/handler/helpers/source_job.rb +14 -0
- data/lib/rhoconnect/handler/helpers.rb +4 -0
- data/lib/rhoconnect/handler/plugin_callbacks/execute_methods.rb +99 -0
- data/lib/rhoconnect/handler/plugin_callbacks/runner.rb +28 -0
- data/lib/rhoconnect/handler/plugin_callbacks.rb +67 -0
- data/lib/rhoconnect/handler/query/engine.rb +93 -0
- data/lib/rhoconnect/handler/query/execute_methods.rb +21 -0
- data/lib/rhoconnect/handler/query/pass_through_runner.rb +35 -0
- data/lib/rhoconnect/handler/query/runner.rb +270 -0
- data/lib/rhoconnect/handler/query.rb +19 -0
- data/lib/rhoconnect/handler/search/engine.rb +60 -0
- data/lib/rhoconnect/handler/search/execute_methods.rb +32 -0
- data/lib/rhoconnect/handler/search/pass_through_runner.rb +18 -0
- data/lib/rhoconnect/handler/search/runner.rb +104 -0
- data/lib/rhoconnect/handler/search.rb +26 -0
- data/lib/rhoconnect/handler/sync.rb +29 -0
- data/lib/rhoconnect/jobs/source_job.rb +13 -4
- data/lib/rhoconnect/js_adapter.rb +79 -0
- data/lib/rhoconnect/license.rb +10 -2
- data/lib/rhoconnect/middleware/current_user.rb +14 -1
- data/lib/rhoconnect/middleware/helpers.rb +10 -93
- data/lib/rhoconnect/middleware/x_domain_session_wrapper.rb +1 -1
- data/lib/rhoconnect/model/base.rb +229 -0
- data/lib/rhoconnect/model/dynamic_adapter_model.rb +90 -0
- data/lib/rhoconnect/model/js_base.rb +121 -0
- data/lib/rhoconnect/ping/android.rb +1 -1
- data/lib/rhoconnect/predefined_adapters/bench_adapter.rb +7 -4
- data/lib/rhoconnect/read_state.rb +3 -3
- data/lib/rhoconnect/server.rb +159 -190
- data/lib/rhoconnect/source.rb +100 -11
- data/lib/rhoconnect/stats/record.rb +10 -10
- data/lib/rhoconnect/store.rb +905 -591
- data/lib/rhoconnect/{model.rb → store_orm.rb} +53 -115
- data/lib/rhoconnect/tasks.rb +18 -4
- data/lib/rhoconnect/test_methods.rb +30 -17
- data/lib/rhoconnect/user.rb +35 -17
- data/lib/rhoconnect/utilities.rb +1 -1
- data/lib/rhoconnect/version.rb +2 -2
- data/lib/rhoconnect/web-console/server.rb +29 -14
- data/lib/rhoconnect/web-console/views/home.js +10 -10
- data/lib/rhoconnect/web-console/views/new_ping.js +1 -1
- data/lib/rhoconnect.rb +120 -51
- data/rhoconnect.gemspec +4 -3
- data/spec/api/api_helper.rb +1 -6
- data/spec/api/app/fast_delete_spec.rb +4 -4
- data/spec/api/app/fast_insert_spec.rb +4 -4
- data/spec/api/app/fast_update_spec.rb +8 -8
- data/spec/api/app/push_deletes_spec.rb +2 -2
- data/spec/api/app/push_objects_spec.rb +5 -5
- data/spec/api/client/client_get_db_doc_spec.rb +6 -4
- data/spec/api/client/client_set_db_doc_spec.rb +3 -2
- data/spec/api/client/get_client_params_spec.rb +14 -0
- data/spec/api/client/list_client_docs_spec.rb +30 -20
- data/spec/api/client/reset_spec.rb +36 -0
- data/spec/api/source/get_source_params_spec.rb +23 -17
- data/spec/api/system/get_license_info_spec.rb +0 -20
- data/spec/api/system/login_spec.rb +8 -0
- data/spec/api/system/reset_spec.rb +0 -1
- data/spec/api/system/stats_spec.rb +5 -5
- data/spec/api/user/create_user_spec.rb +14 -6
- data/spec/api/user/delete_user_spec.rb +20 -18
- data/spec/api/user/list_users_spec.rb +5 -6
- data/spec/api/user/update_user_spec.rb +5 -4
- data/spec/apps/rhotestapp/config.ru +16 -1
- data/spec/apps/rhotestapp/controllers/js/js_sample_controller.js +23 -0
- data/spec/apps/rhotestapp/controllers/js/sample2_controller.js +32 -0
- data/spec/apps/rhotestapp/controllers/ruby/application_controller.rb +21 -0
- data/spec/apps/rhotestapp/controllers/ruby/sample_adapter_controller.rb +8 -0
- data/spec/apps/rhotestapp/models/js/js_sample.js +55 -0
- data/spec/apps/rhotestapp/models/js/sample2.js +25 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/base_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/fixed_schema_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/other_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/sample_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/simple_adapter.rb +2 -2
- data/spec/apps/rhotestapp/{sources → models/ruby}/sub_adapter.rb +0 -0
- data/spec/apps/rhotestapp/settings/settings.yml +0 -1
- data/spec/bulk_data/bulk_data_spec.rb +20 -5
- data/spec/cli/cli_spec.rb +83 -0
- data/spec/client_spec.rb +20 -17
- data/spec/client_sync_spec.rb +244 -406
- data/spec/controllers/js_base_spec.rb +89 -0
- data/spec/doc/doc_spec.rb +18 -18
- data/spec/document_spec.rb +29 -13
- data/spec/dynamic_adapter_spec.rb +6 -6
- data/spec/generator/generator_spec.rb +7 -4
- data/spec/jobs/bulk_data_job_spec.rb +14 -10
- data/spec/jobs/source_job_spec.rb +8 -8
- data/spec/license_spec.rb +5 -2
- data/spec/models/js_model_spec.rb +39 -0
- data/spec/node_spec.rb +42 -0
- data/spec/perf/store_perf_spec.rb +67 -12
- data/spec/ping/android_spec.rb +1 -1
- data/spec/read_state_spec.rb +1 -1
- data/spec/rhoconnect_spec.rb +1 -1
- data/spec/server/cors_spec.rb +14 -18
- data/spec/server/server_spec.rb +265 -88
- data/spec/server/stats_spec.rb +1 -1
- data/spec/source_adapter_spec.rb +54 -27
- data/spec/source_spec.rb +8 -3
- data/spec/source_sync_spec.rb +538 -468
- data/spec/spec_helper.rb +35 -4
- data/spec/stats/record_spec.rb +10 -10
- data/spec/{model_spec.rb → store_orm_spec.rb} +56 -54
- data/spec/store_spec.rb +159 -179
- data/spec/support/shared_examples.rb +36 -27
- data/spec/sync_states_spec.rb +40 -33
- data/spec/test_methods_spec.rb +18 -14
- data/spec/user_spec.rb +17 -30
- metadata +156 -52
- data/bench/benchapp/application.rb +0 -39
- data/bench/blobapp/application.rb +0 -44
- data/commands/rhoconnect/clean_start.rb +0 -9
- data/commands/rhoconnect/create_user.rb +0 -18
- data/commands/rhoconnect/delete_device.rb +0 -9
- data/commands/rhoconnect/delete_user.rb +0 -8
- data/commands/rhoconnect/reset.rb +0 -16
- data/commands/rhoconnect/reset_refresh.rb +0 -11
- data/generators/templates/application/application.rb +0 -43
- data/lib/rhoconnect/client_sync.rb +0 -434
- data/lib/rhoconnect/dynamic_adapter.rb +0 -91
- data/lib/rhoconnect/middleware/admin_user.rb +0 -23
- data/lib/rhoconnect/middleware/current_request.rb +0 -16
- data/lib/rhoconnect/middleware/login_required.rb +0 -22
- data/lib/rhoconnect/source_adapter.rb +0 -132
- data/lib/rhoconnect/source_sync.rb +0 -464
- data/spec/apps/rhotestapp/application.rb +0 -23
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'rack/test'
|
2
|
+
require File.join(File.dirname(__FILE__),'..','spec_helper')
|
3
|
+
require File.join(File.dirname(__FILE__),'..','..','lib','rhoconnect','server.rb')
|
4
|
+
|
5
|
+
describe "Rhoconnect::Controller::JsBase" do
|
6
|
+
include Rack::Test::Methods
|
7
|
+
include Rhoconnect
|
8
|
+
|
9
|
+
it_behaves_like "SharedRhoconnectHelper", :rhoconnect_data => true do
|
10
|
+
before(:each) do
|
11
|
+
Rhoconnect::Server.set :environment, :test
|
12
|
+
Rhoconnect::Server.set :secret, "secure!"
|
13
|
+
Rhoconnect.use_node = true
|
14
|
+
Rhoconnect.bootstrap(get_testapp_path)
|
15
|
+
do_post "/rc/#{Rhoconnect::API_VERSION}/app/login", "login" => @u.login, "password" => 'testpass'
|
16
|
+
end
|
17
|
+
|
18
|
+
def app
|
19
|
+
@app ||= Rack::URLMap.new Rhoconnect.url_map
|
20
|
+
end
|
21
|
+
|
22
|
+
after(:each) do
|
23
|
+
Rhoconnect::Node.kill_process
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should get / of js controller with route overridden" do
|
27
|
+
get '/app/v1/JsSample', {}, {Rhoconnect::CLIENT_ID_HEADER => @c.id}
|
28
|
+
last_response.should be_ok
|
29
|
+
body = JSON.parse(last_response.body)
|
30
|
+
body[2]['count'].should == 1
|
31
|
+
body.last['insert'].should == {'1' => {'name' => 'iPhone'}}
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should get /custom_route of js controller" do
|
35
|
+
get '/app/v1/JsSample/custom_route', {}, {Rhoconnect::CLIENT_ID_HEADER => @c.id}
|
36
|
+
last_response.body.should == 'testuser'
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should get /source from custom route" do
|
40
|
+
get '/app/v1/JsSample/custom_route2', {}, {Rhoconnect::CLIENT_ID_HEADER => @c.id}
|
41
|
+
last_response.body.should == 'JsSample'
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should get stash_result from js model" do
|
45
|
+
pending "stash_result not supported yet"
|
46
|
+
get '/app/v1/JsSample/custom_route3',{}, {Rhoconnect::CLIENT_ID_HEADER => @c.id}
|
47
|
+
res = JSON.parse(last_response.body)
|
48
|
+
res[2]["count"].should == 1
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should register sync route" do
|
52
|
+
get '/app/v1/Sample2', {}, {Rhoconnect::CLIENT_ID_HEADER => @c.id}
|
53
|
+
res = JSON.parse(last_response.body)
|
54
|
+
res[2]["count"].should == 1
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should post to js controller" do
|
58
|
+
hsh = {'1'=>{'name'=>'testname','price'=>'$199'}}
|
59
|
+
post '/app/v1/JsSample',hsh, {Rhoconnect::CLIENT_ID_HEADER => @c.id}
|
60
|
+
last_response.should be_ok
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should put to js controller" do
|
64
|
+
put '/app/v1/JsSample/2', {}, {Rhoconnect::CLIENT_ID_HEADER => @c.id}
|
65
|
+
last_response.body.should == ''
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should delete to js controller" do
|
69
|
+
@c1 = Client.create({:user_id => @u.id,:app_id => @a.id},{:source_name => 'JsSample'})
|
70
|
+
set_doc_state(@c1, :cd => @data)
|
71
|
+
delete '/app/v1/JsSample/2', {}, {Rhoconnect::CLIENT_ID_HEADER => @c1.id}
|
72
|
+
last_response.should be_ok
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should register deprecated_route"
|
76
|
+
|
77
|
+
it "should call js model name explicitly" do
|
78
|
+
js = JsSample.new("JsSample")
|
79
|
+
res = js.login
|
80
|
+
res.should == "success"
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should print warning if model function not found" do
|
84
|
+
js = JsSample.new("JsSample")
|
85
|
+
res = js.foo
|
86
|
+
res.should == "foo method not defined for JsSample"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
data/spec/doc/doc_spec.rb
CHANGED
@@ -29,7 +29,7 @@ describe "Protocol" do
|
|
29
29
|
|
30
30
|
before(:each) do
|
31
31
|
Store.create
|
32
|
-
Store.
|
32
|
+
Store.flush_all
|
33
33
|
end
|
34
34
|
|
35
35
|
# it_should_behave_like "DBObjectsHelper"
|
@@ -207,25 +207,25 @@ eol
|
|
207
207
|
:source_name => @s.name}
|
208
208
|
do_post "/#{@a.name}", params
|
209
209
|
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,
|
210
|
-
:version =>
|
210
|
+
:version => Rhoconnect::SYNC_VERSION
|
211
211
|
@title,@description = 'create-with-link', 'send link for created object'
|
212
212
|
end
|
213
213
|
|
214
214
|
it "server send source query error to client" do
|
215
215
|
set_test_data('test_db_storage',{},"Error during query",'query error')
|
216
|
-
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version =>
|
216
|
+
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version => Rhoconnect::SYNC_VERSION
|
217
217
|
@title,@description = 'query-error', 'send query error'
|
218
218
|
end
|
219
219
|
|
220
220
|
it "server send source login error to client" do
|
221
221
|
@u.login = nil
|
222
|
-
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version =>
|
222
|
+
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version => Rhoconnect::SYNC_VERSION
|
223
223
|
@title,@description = 'login-error', 'send login error'
|
224
224
|
end
|
225
225
|
|
226
226
|
it "server send source logoff error to client" do
|
227
227
|
set_test_data('test_db_storage',{},"Error logging off",'logoff error')
|
228
|
-
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version =>
|
228
|
+
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version => Rhoconnect::SYNC_VERSION
|
229
229
|
@title,@description = 'logoff-error', 'send logoff error'
|
230
230
|
end
|
231
231
|
|
@@ -233,14 +233,14 @@ eol
|
|
233
233
|
it "client #{operation} object(s) with error" do
|
234
234
|
if operation == 'update'
|
235
235
|
broken_object = { ERROR => { 'price' => '99.99' } }
|
236
|
-
|
236
|
+
set_doc_state(@c, :cd => broken_object)
|
237
237
|
set_test_data('test_db_storage',broken_object)
|
238
238
|
end
|
239
239
|
params = {operation=>{ERROR=>{'an_attribute'=>"error #{operation}",'name'=>'wrongname'}},
|
240
240
|
:client_id => @c.id,
|
241
241
|
:source_name => @s.name}
|
242
242
|
do_post "/#{@a.name}", params
|
243
|
-
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version =>
|
243
|
+
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version => Rhoconnect::SYNC_VERSION
|
244
244
|
@title,@description = "#{operation}-error", "send #{operation} error"
|
245
245
|
end
|
246
246
|
end
|
@@ -249,7 +249,7 @@ eol
|
|
249
249
|
cs = ClientSync.new(@s,@c,1)
|
250
250
|
data = {'1'=>product1,'2'=>product2}
|
251
251
|
set_test_data('test_db_storage',data)
|
252
|
-
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version =>
|
252
|
+
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version => Rhoconnect::SYNC_VERSION
|
253
253
|
@title,@description = 'insert objects', 'send insert objects'
|
254
254
|
end
|
255
255
|
|
@@ -257,7 +257,7 @@ eol
|
|
257
257
|
mock_metadata_method([SampleAdapter]) do
|
258
258
|
cs = ClientSync.new(@s,@c,1)
|
259
259
|
set_test_data('test_db_storage',products)
|
260
|
-
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version =>
|
260
|
+
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version => Rhoconnect::SYNC_VERSION
|
261
261
|
end
|
262
262
|
@title,@description = 'metadata', 'send metadata'
|
263
263
|
end
|
@@ -266,12 +266,12 @@ eol
|
|
266
266
|
cs = ClientSync.new(@s,@c,1)
|
267
267
|
data = {'1'=>product1,'2'=>product2}
|
268
268
|
set_test_data('test_db_storage',data)
|
269
|
-
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version =>
|
269
|
+
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version => Rhoconnect::SYNC_VERSION
|
270
270
|
token = Store.get_value(@c.docname(:page_token))
|
271
|
-
Store.
|
271
|
+
Store.flush_data('test_db_storage')
|
272
272
|
@s.read_state.refresh_time = Time.now.to_i
|
273
273
|
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:token => token,
|
274
|
-
:version =>
|
274
|
+
:version => Rhoconnect::SYNC_VERSION
|
275
275
|
@title,@description = 'delete objects', 'send delete objects'
|
276
276
|
end
|
277
277
|
|
@@ -279,12 +279,12 @@ eol
|
|
279
279
|
cs = ClientSync.new(@s,@c,1)
|
280
280
|
data = {'1'=>product1,'2'=>product2}
|
281
281
|
set_test_data('test_db_storage',data)
|
282
|
-
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version =>
|
282
|
+
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:version => Rhoconnect::SYNC_VERSION
|
283
283
|
token = Store.get_value(@c.docname(:page_token))
|
284
284
|
set_test_data('test_db_storage',{'1'=>product1,'3'=>product3})
|
285
285
|
@s.read_state.refresh_time = Time.now.to_i
|
286
286
|
get "/#{@a.name}",:client_id => @c.id,:source_name => @s.name,:token => token,
|
287
|
-
:version =>
|
287
|
+
:version => Rhoconnect::SYNC_VERSION
|
288
288
|
@title,@description = 'insert-delete objects', 'send insert and delete objects'
|
289
289
|
end
|
290
290
|
|
@@ -292,7 +292,7 @@ eol
|
|
292
292
|
sources = [{:name=>'SampleAdapter'}]
|
293
293
|
Store.put_data('test_db_storage',products)
|
294
294
|
params = {:client_id => @c.id,:sources => sources,:search => {'name' => 'iPhone'},
|
295
|
-
:version =>
|
295
|
+
:version => Rhoconnect::SYNC_VERSION}
|
296
296
|
get "/#{@a.name}/search",params
|
297
297
|
@title,@description = 'search result', 'send search results'
|
298
298
|
end
|
@@ -302,7 +302,7 @@ eol
|
|
302
302
|
msg = "Error during search"
|
303
303
|
error = set_test_data('test_db_storage',products,msg,'search error')
|
304
304
|
params = {:client_id => @c.id,:sources => sources,:search => {'name' => 'iPhone'},
|
305
|
-
:version =>
|
305
|
+
:version => Rhoconnect::SYNC_VERSION}
|
306
306
|
get "/#{@a.name}/search",params
|
307
307
|
@title,@description = 'search error', 'send search error'
|
308
308
|
end
|
@@ -311,7 +311,7 @@ eol
|
|
311
311
|
Store.put_data('test_db_storage',products)
|
312
312
|
sources = [{:name=>'SimpleAdapter'},{:name=>'SampleAdapter'}]
|
313
313
|
params = {:client_id => @c.id,:sources => sources,:search => {'search' => 'bar'},
|
314
|
-
:version =>
|
314
|
+
:version => Rhoconnect::SYNC_VERSION}
|
315
315
|
get "/#{@a.name}/search",params
|
316
316
|
@title,@description = 'multi source search', 'send multiple sources in search results'
|
317
317
|
end
|
@@ -328,7 +328,7 @@ eol
|
|
328
328
|
token = Store.get_value(@c.docname(:search_token))
|
329
329
|
sources[1]['token'] = token
|
330
330
|
params = {:client_id => @c.id,:sources => sources,
|
331
|
-
:version =>
|
331
|
+
:version => Rhoconnect::SYNC_VERSION}
|
332
332
|
get "/#{@a.name}/search",params
|
333
333
|
@title,@description = 'multi source search ack', 'acknowledge search result on multiple sources'
|
334
334
|
end
|
data/spec/document_spec.rb
CHANGED
@@ -3,50 +3,66 @@ require File.join(File.dirname(__FILE__),'spec_helper')
|
|
3
3
|
describe "Document" do
|
4
4
|
it_behaves_like "SharedRhoconnectHelper", :rhoconnect_data => true do
|
5
5
|
before(:each) do
|
6
|
+
@valid_docs = [:foo1, :foo, :key, :key1, :key2]
|
7
|
+
Client.define_valid_doctypes(@valid_docs)
|
6
8
|
@s = Source.load(@s_fields[:name],@s_params)
|
7
9
|
end
|
10
|
+
|
11
|
+
after(:each) do
|
12
|
+
@valid_docs.each do |doctype|
|
13
|
+
Client.valid_doctypes.delete(doctype)
|
14
|
+
end
|
15
|
+
end
|
8
16
|
|
9
17
|
it "should generate client docname" do
|
10
18
|
@c.docname(:foo).should == "client:#{@a.id}:#{@u.id}:#{@c.id}:#{@s_fields[:name]}:foo"
|
11
19
|
end
|
12
20
|
|
21
|
+
it "should generate InvalidDocumentException for invalid client doctype" do
|
22
|
+
lambda { @c.put_data(:foo_invalid,{'1'=>@product1}) }.should raise_error(InvalidDocumentException, "Invalid document type foo_invalid for Rhoconnect::Client")
|
23
|
+
store_index = @c.store_index(:foo_invalid)
|
24
|
+
Store.get_store(store_index).db.keys(@c.docname('*')).should == []
|
25
|
+
end
|
26
|
+
|
13
27
|
it "should generate source docname" do
|
14
28
|
@s.docname(:foo).should == "source:#{@a.id}:#{@u.id}:#{@s_fields[:name]}:foo"
|
15
29
|
end
|
16
30
|
|
17
|
-
it "should
|
31
|
+
it "should flush_data for docname" do
|
18
32
|
@c.put_data(:foo1,{'1'=>@product1})
|
19
33
|
docname = @c.docname(:foo1)
|
20
34
|
bucket_index = get_sha1('1')[0..1]
|
21
|
-
|
22
|
-
@c.
|
23
|
-
|
35
|
+
store_index = @c.store_index(:foo1)
|
36
|
+
Store.get_store(store_index).db.keys(@c.docname('*')).sort.should == ["#{docname}:#{bucket_index}", "#{docname}:indices"].sort
|
37
|
+
@c.flush_all_documents
|
38
|
+
Store.get_store(store_index).db.keys(@c.docname('*')).should == []
|
24
39
|
end
|
25
40
|
|
26
|
-
it "should
|
41
|
+
it "should flush_data for arrays" do
|
27
42
|
@c.put_list(:foo1,['1', '2', '3'])
|
28
|
-
|
29
|
-
@c.
|
30
|
-
|
43
|
+
@c.exists?(:foo1).should == true
|
44
|
+
@c.flush_all_documents
|
45
|
+
@c.exists?(:foo1).should == false
|
31
46
|
end
|
32
47
|
|
33
48
|
it "should get_data for arrays" do
|
34
49
|
@c.put_list(:foo1,['1', '2', '3'])
|
35
|
-
Store.db.keys(@c.docname('*')).should == [@c.docname(:foo1)]
|
36
50
|
@c.get_data(:foo1, Array).should == ['1', '2', '3']
|
51
|
+
JSON.parse(@c.get_db_doc(:foo1)).should == ['1', '2', '3']
|
37
52
|
end
|
38
53
|
|
39
54
|
it "should rename doc" do
|
40
|
-
|
55
|
+
@c.put_data(:key1, @data)
|
41
56
|
@c.rename(:key1,:key2)
|
42
|
-
|
57
|
+
@c.exists?(:key1).should == false
|
58
|
+
@c.get_data(:key2).should == @data
|
43
59
|
end
|
44
60
|
|
45
61
|
it "should operate with individual object" do
|
46
62
|
key = '1'
|
47
63
|
data = {'foo' => 'bar'}
|
48
|
-
@c.put_object(:
|
49
|
-
obj = @c.get_object(:
|
64
|
+
@c.put_object(:cd, key, data)
|
65
|
+
obj = @c.get_object(:cd, key)
|
50
66
|
obj.should == data
|
51
67
|
end
|
52
68
|
end
|
@@ -1,38 +1,38 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__),'spec_helper')
|
2
2
|
|
3
|
-
describe "
|
3
|
+
describe "Rhoconnect::Model::DynamicAdapterModel" do
|
4
4
|
it_behaves_like "SharedRhoconnectHelper", :rhoconnect_data => true do
|
5
5
|
|
6
6
|
it "should return login when backend service defined" do
|
7
7
|
stub_request(:post, "http://test.com/rhoconnect/authenticate").to_return(:body => "lucas")
|
8
8
|
Rhoconnect.appserver = 'http://test.com'
|
9
|
-
|
9
|
+
Rhoconnect::Model::DynamicAdapterModel.authenticate('lucas','').should == 'lucas'
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should query dynamic adapter service" do
|
13
13
|
data = {'1'=>@product1}
|
14
14
|
stub_request(:post, "http://test.com/rhoconnect/query").with(:headers => {'Content-Type' => 'application/json'}).to_return(:status => 200, :body => data.to_json)
|
15
|
-
da =
|
15
|
+
da = Rhoconnect::Model::DynamicAdapterModel.new(@s2,nil,'http://test.com')
|
16
16
|
da.query.should == data
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should create new object using dynamic adapter" do
|
20
20
|
stub_request(:post, "http://test.com/rhoconnect/create").with(:headers => {'Content-Type' => 'application/json'}).to_return(:body => {:id => 5})
|
21
|
-
da =
|
21
|
+
da = Rhoconnect::Model::DynamicAdapterModel.new(@s2,nil,'http://test.com')
|
22
22
|
da.create(@product1).should == {:id => 5}
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should update object using dynamic adapter" do
|
26
26
|
data = {'id' => 2}
|
27
27
|
stub_request(:post, "http://test.com/rhoconnect/update").with(:headers => {'Content-Type' => 'application/json'}).to_return(:body => {:id => 5})
|
28
|
-
da =
|
28
|
+
da = Rhoconnect::Model::DynamicAdapterModel.new(@s2,nil,'http://test.com')
|
29
29
|
da.update(data).should == {:id => 5}
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should delete object using dynamic adapter" do
|
33
33
|
data = {'id' => 2}
|
34
34
|
stub_request(:post, "http://test.com/rhoconnect/delete").with(:headers => {'Content-Type' => 'application/json'}).to_return(:body => {:id => 5})
|
35
|
-
da =
|
35
|
+
da = Rhoconnect::Model::DynamicAdapterModel.new(@s2,nil,'http://test.com')
|
36
36
|
da.delete(data).should == {:id => 5}
|
37
37
|
end
|
38
38
|
|
@@ -20,12 +20,13 @@ describe "Generator" do
|
|
20
20
|
@generator = Rhoconnect::AppGenerator.new('/tmp',{},appname)
|
21
21
|
end
|
22
22
|
|
23
|
-
it "should create new application files" do
|
23
|
+
it "should create new ruby application files" do
|
24
24
|
SecureRandom.should_receive(:hex).with(64).any_number_of_times
|
25
25
|
[
|
26
26
|
'Gemfile',
|
27
27
|
'Rakefile',
|
28
|
-
"
|
28
|
+
"controllers/ruby/application_controller.rb",
|
29
|
+
'spec/controllers/ruby/application_controller_spec.rb',
|
29
30
|
'config.ru',
|
30
31
|
'public',
|
31
32
|
'settings/settings.yml',
|
@@ -55,8 +56,10 @@ describe "Generator" do
|
|
55
56
|
end
|
56
57
|
|
57
58
|
it "should create new source adapter and spec" do
|
58
|
-
@generator.should create("/tmp/#{appname}/
|
59
|
-
@generator.should create("/tmp/#{appname}/
|
59
|
+
@generator.should create("/tmp/#{appname}/models/ruby/#{source}.rb")
|
60
|
+
@generator.should create("/tmp/#{appname}/controllers/ruby/#{source}_controller.rb")
|
61
|
+
@generator.should create("/tmp/#{appname}/spec/models/ruby/#{source}_spec.rb")
|
62
|
+
@generator.should create("/tmp/#{appname}/spec/controllers/ruby/#{source}_controller_spec.rb")
|
60
63
|
end
|
61
64
|
end
|
62
65
|
|
@@ -27,7 +27,8 @@ describe "BulkDataJob" do
|
|
27
27
|
do_bulk_data_job("data_name" => data.name)
|
28
28
|
data = BulkData.load(docname)
|
29
29
|
data.completed?.should == true
|
30
|
-
|
30
|
+
verify_doc_result(@s, {:md => @data,
|
31
|
+
:md_copy => @data})
|
31
32
|
validate_db(data,expected).should == true
|
32
33
|
File.exists?(data.dbfile+'.rzip').should == true
|
33
34
|
File.exists?(data.dbfile+'.gzip').should == true
|
@@ -59,7 +60,8 @@ describe "BulkDataJob" do
|
|
59
60
|
do_bulk_data_job("data_name" => data.name)
|
60
61
|
data = BulkData.load(docname)
|
61
62
|
data.completed?.should == true
|
62
|
-
|
63
|
+
verify_doc_result(@s, {:md => source_existing_data,
|
64
|
+
:md_copy => {}})
|
63
65
|
# skipped source should have :none in the DB - so we pass it for verification
|
64
66
|
@s.sync_type = :none
|
65
67
|
validate_db_file(data.dbfile,[@s_fields[:name], 'FixedSchemaAdapter'], expected).should == true
|
@@ -89,7 +91,8 @@ describe "BulkDataJob" do
|
|
89
91
|
do_bulk_data_job("data_name" => data.name)
|
90
92
|
data = BulkData.load(docname)
|
91
93
|
data.completed?.should == true
|
92
|
-
|
94
|
+
verify_doc_result(@s, {:md => @data,
|
95
|
+
:md_copy => @data})
|
93
96
|
validate_db(data,@s.name => @data).should == true
|
94
97
|
File.exists?(data.dbfile+'.hsqldb.script').should == false
|
95
98
|
File.exists?(data.dbfile+'.hsqldb.properties').should == false
|
@@ -108,9 +111,9 @@ describe "BulkDataJob" do
|
|
108
111
|
do_bulk_data_job("data_name" => data.name)
|
109
112
|
data = BulkData.load(docname)
|
110
113
|
data.completed?.should == true
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
+
verify_doc_result(@s, {:md => @data,
|
115
|
+
:metadata => {'foo'=>'bar'}.to_json,
|
116
|
+
:md_copy => @data})
|
114
117
|
validate_db(data,@s.name => @data).should == true
|
115
118
|
end
|
116
119
|
end
|
@@ -128,8 +131,9 @@ describe "BulkDataJob" do
|
|
128
131
|
do_bulk_data_job("data_name" => data.name)
|
129
132
|
data = BulkData.load(docname)
|
130
133
|
data.completed?.should == true
|
131
|
-
|
132
|
-
|
134
|
+
verify_doc_result(@s, {:md => @data,
|
135
|
+
:md_copy => @data})
|
136
|
+
JSON.parse(@s.get_value(:schema)).should == mock_schema
|
133
137
|
validate_db(data,@s.name => @data).should == true
|
134
138
|
end
|
135
139
|
end
|
@@ -149,7 +153,7 @@ describe "BulkDataJob" do
|
|
149
153
|
lambda {
|
150
154
|
do_bulk_data_job("data_name" => 'broken')
|
151
155
|
}.should raise_error(Exception)
|
152
|
-
Store.db.keys('bulk_data*').should == []
|
156
|
+
Store.get_store(0).db.keys('bulk_data*').should == []
|
153
157
|
end
|
154
158
|
|
155
159
|
it "should delete bulk data if exception is raised" do
|
@@ -162,7 +166,7 @@ describe "BulkDataJob" do
|
|
162
166
|
lambda {
|
163
167
|
do_bulk_data_job("data_name" => data.name)
|
164
168
|
}.should raise_error(Exception)
|
165
|
-
Store.db.keys('bulk_data*').should == []
|
169
|
+
Store.get_store(0).db.keys('bulk_data*').should == []
|
166
170
|
end
|
167
171
|
end
|
168
172
|
end
|
@@ -9,20 +9,20 @@ describe "SourceJob" do
|
|
9
9
|
it "should perform process_query" do
|
10
10
|
set_state('test_db_storage' => @data)
|
11
11
|
SourceJob.perform('query',@s.id,@s.app_id,@s.user_id,nil)
|
12
|
-
|
13
|
-
|
12
|
+
verify_doc_result(@s, {:md => @data,
|
13
|
+
:md_size => @data.size.to_s})
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should perform process_cud" do
|
17
17
|
expected = {'backend_id'=>@product1}
|
18
18
|
@product1['link'] = 'abc'
|
19
|
-
|
19
|
+
@s.push_queue(:create, @c.id, {'1'=>@product1})
|
20
20
|
SourceJob.perform('cud',@s.id,@s.app_id,@s.user_id,nil)
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
21
|
+
verify_source_queue_data(@s, :create => [])
|
22
|
+
verify_doc_result(@s, {:md => expected,
|
23
|
+
:md_size => expected.size.to_s})
|
24
|
+
verify_doc_result(@c, {:cd => expected,
|
25
|
+
:cd_size => expected.size.to_s})
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
data/spec/license_spec.rb
CHANGED
@@ -14,9 +14,12 @@ describe "License" do
|
|
14
14
|
license.issued.should == 'Fri Apr 23 17:20:13 -0700 2010'
|
15
15
|
end
|
16
16
|
|
17
|
-
it "should
|
17
|
+
it "should use generator license file when there is license load error" do
|
18
|
+
path_to_license = File.join(File.dirname(__FILE__), '..', 'generators', 'templates', 'application', 'settings', 'license.key')
|
19
|
+
license = IO.read(path_to_license).strip
|
18
20
|
Rhoconnect.stub!(:get_config).and_return({Rhoconnect.environment.to_sym => {}})
|
19
|
-
|
21
|
+
License.new.license.should == license
|
22
|
+
# lambda { License.new }.should raise_error(LicenseException, "Error verifying license.")
|
20
23
|
end
|
21
24
|
|
22
25
|
it "should verify # of seats before adding" do
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','spec_helper')
|
2
|
+
require File.join(File.dirname(__FILE__),'..','..','lib','rhoconnect','server.rb')
|
3
|
+
|
4
|
+
describe "Rhoconnect::Model::JsBase" do
|
5
|
+
include Rhoconnect
|
6
|
+
|
7
|
+
it_behaves_like "SharedRhoconnectHelper", :rhoconnect_data => true do
|
8
|
+
before(:each) do
|
9
|
+
Rhoconnect::Server.set :environment, :test
|
10
|
+
Rhoconnect::Server.set :secret, "secure!"
|
11
|
+
Rhoconnect.use_node = true
|
12
|
+
Rhoconnect.bootstrap(get_testapp_path)
|
13
|
+
end
|
14
|
+
|
15
|
+
def app
|
16
|
+
@app ||= Rack::URLMap.new Rhoconnect.url_map
|
17
|
+
end
|
18
|
+
|
19
|
+
after(:each) do
|
20
|
+
Rhoconnect::Node.kill_process
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "from ruby" do
|
24
|
+
|
25
|
+
it "should call model's create method from ruby"
|
26
|
+
|
27
|
+
it "should call model's update method from ruby"
|
28
|
+
|
29
|
+
it "should call model's delete method from ruby"
|
30
|
+
|
31
|
+
it "should call model's query method from ruby"
|
32
|
+
|
33
|
+
it "should call model's login method from ruby"
|
34
|
+
|
35
|
+
it "should call model's logoff method from ruby"
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/spec/node_spec.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'spec_helper')
|
2
|
+
|
3
|
+
describe "Node" do
|
4
|
+
include Rhoconnect
|
5
|
+
include TestHelpers
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
Store.create
|
9
|
+
Store.flush_all
|
10
|
+
Rhoconnect.use_node = true
|
11
|
+
end
|
12
|
+
|
13
|
+
after(:each) do
|
14
|
+
Rhoconnect::Node.kill_process
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should start node" do
|
18
|
+
Rhoconnect.bootstrap(get_testapp_path)
|
19
|
+
Rhoconnect::Node.started.should == true
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should stop node" do
|
23
|
+
Rhoconnect.bootstrap(get_testapp_path)
|
24
|
+
Rhoconnect::Node.started.should == true
|
25
|
+
Rhoconnect::Node.kill_process
|
26
|
+
Rhoconnect::Node.started.should == false
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should print message if `package.json` not detected" do
|
30
|
+
File.stub(:exists?).and_return(false)
|
31
|
+
Rhoconnect::Node.should_receive(:log).once.with("No `package.json` detected, disabling JavaScript support.")
|
32
|
+
Rhoconnect.bootstrap(get_testapp_path)
|
33
|
+
Rhoconnect::Node.started.should == false
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should print message if node not detected" do
|
37
|
+
File.stub(:executable?).and_return(false)
|
38
|
+
Rhoconnect::Node.should_receive(:log).once.with("Node.js not detected, disabling JavaScript support.")
|
39
|
+
Rhoconnect.bootstrap(get_testapp_path)
|
40
|
+
Rhoconnect::Node.started.should == false
|
41
|
+
end
|
42
|
+
end
|