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.
- data/CHANGELOG.md +14 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +33 -7
- data/README.md +4 -0
- data/Rakefile +13 -11
- data/commands/commands/rhoconnect/create_user.rb +1 -1
- data/commands/commands/rhoconnect/delete_device.rb +1 -1
- data/commands/commands/rhoconnect/delete_user.rb +1 -1
- data/commands/commands/rhoconnect/get_token.rb +1 -1
- data/commands/commands/rhoconnect/reset.rb +1 -1
- data/commands/execute.rb +0 -1
- data/doc/bulk-sync.txt +35 -1
- data/doc/install.txt +7 -3
- data/examples/simple/config.ru +1 -1
- data/generators/templates/application/Gemfile +1 -1
- data/install.sh +4 -4
- data/installer/unix-like/create_texts.rb +31 -31
- data/installer/unix-like/pre_uninstall.sh +2 -3
- data/installer/unix-like/rho_connect_install_constants.rb +3 -3
- data/installer/unix-like/rho_connect_install_debian.rb +0 -5
- data/installer/unix-like/rho_connect_install_yum.rb +1 -3
- data/installer/utils/constants.rb +4 -4
- data/installer/utils/nix_install_test.rb +20 -20
- data/installer/utils/package_upload/repos.rake +2 -2
- data/installer/utils/package_upload/s3_single_file.rb +57 -0
- data/lib/rhoconnect/client_sync.rb +1 -1
- data/lib/rhoconnect/jobs/bulk_data_job.rb +30 -32
- data/lib/rhoconnect/jobs/ping_job.rb +15 -2
- data/lib/rhoconnect/server.rb +3 -0
- data/lib/rhoconnect/tasks.rb +5 -7
- data/lib/rhoconnect/user.rb +1 -0
- data/lib/rhoconnect/version.rb +1 -1
- data/lib/rhoconnect/web-console/models/adapter.js +2 -0
- data/lib/rhoconnect/web-console/models/client.js +0 -22
- data/lib/rhoconnect/web-console/models/source.js +1 -1
- data/lib/rhoconnect/web-console/templates/index.erb +2 -1
- data/lib/rhoconnect/web-console/views/home.js +22 -1
- data/lib/rhoconnect/web-console/views/set_adapter.js +5 -6
- data/rhoconnect.gemspec +2 -1
- data/spec/api/source/fast_insert_spec.rb +1 -1
- data/spec/api/user/create_user_spec.rb +11 -1
- data/spec/client_sync_spec.rb +32 -25
- data/spec/javascripts/admins_routes_spec.js +108 -103
- data/spec/javascripts/doc_view_spec.js +2 -3
- data/spec/javascripts/edit_user_view_spec.js +1 -1
- data/spec/javascripts/home_view_spec.js +6 -6
- data/spec/javascripts/server_doc_view_spec.js +4 -0
- data/spec/javascripts/session_spec.js +15 -0
- data/spec/javascripts/set_adapter_view_spec.js +2 -6
- data/spec/javascripts/show_device_view_spec.js +4 -1
- data/spec/javascripts/show_user_view_spec.js +4 -0
- data/spec/javascripts/source_docs_view_spec.js +2 -2
- data/spec/jobs/bulk_data_job_spec.rb +8 -12
- data/spec/jobs/ping_job_spec.rb +21 -0
- data/spec/perf/bulk_data_perf_spec.rb +1 -2
- data/spec/server/server_spec.rb +2 -4
- data/spec/spec_helper.rb +13 -3
- data/tasks/jasmine.rake +7 -0
- metadata +24 -7
- data/lib/rhoconnect/console/rhoconnect_api.rb +0 -245
- data/spec/api/application/rhoconnect_api_spec.rb +0 -592
data/spec/client_sync_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe "ClientSync" do
|
|
6
6
|
lambda { ClientSync.new(@s,nil,2) }.should raise_error(ArgumentError,'Unknown client')
|
7
7
|
end
|
8
8
|
|
9
|
-
it "should handle receive cud for
|
9
|
+
it "should handle receive cud for dynamic adapter" do
|
10
10
|
params = {'create'=>{'1'=>@product1}}
|
11
11
|
@c.source_name = 'Product2'
|
12
12
|
@cs1 = ClientSync.new(@s2,@c,2)
|
@@ -48,27 +48,39 @@ describe "ClientSync" do
|
|
48
48
|
it "should handle receive cud" do
|
49
49
|
params = {'create'=>{'1'=>@product1},'update'=>{'2'=>@product2},'delete'=>{'3'=>@product3}}
|
50
50
|
@cs.receive_cud(params)
|
51
|
-
|
52
|
-
@
|
53
|
-
@
|
51
|
+
verify_zresult(@s.docname(:create) => [],
|
52
|
+
@s.docname(:update) => [],
|
53
|
+
@s.docname(:delete) => [])
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should handle receive cud that triggers processing of the previously queued data" do
|
57
|
+
queued_create_data = {'1'=>@product1}
|
58
|
+
set_zstate({@s.docname(:create) => queued_create_data}, @c.id)
|
59
|
+
verify_zresult(@s.docname(:create) => [queued_create_data],
|
60
|
+
@cs.client.docname(:update) => [],
|
61
|
+
@cs.client.docname(:delete) => [])
|
62
|
+
@cs.receive_cud({:source_name => @s_fields[:name]})
|
63
|
+
verify_zresult(@s.docname(:create) => [],
|
64
|
+
@s.docname(:update) => [],
|
65
|
+
@s.docname(:delete) => [])
|
54
66
|
end
|
55
67
|
|
56
68
|
it "should handle receive cud with pass through" do
|
57
69
|
params = {'create'=>{'1'=>@product1},'update'=>{'2'=>@product2},'delete'=>{'3'=>@product3}}
|
58
70
|
@s.pass_through = 'true'
|
59
71
|
@cs.receive_cud(params)
|
60
|
-
|
61
|
-
@
|
62
|
-
@
|
72
|
+
verify_zresult(@s.docname(:create) => [],
|
73
|
+
@s.docname(:update) => [],
|
74
|
+
@s.docname(:delete) => [])
|
63
75
|
end
|
64
76
|
|
65
77
|
it "should handle exeptions in receive cud with pass through" do
|
66
78
|
params = {'create'=>{'1'=>@error},'update'=>{'2'=>@product2},'delete'=>{'3'=>@product3}}
|
67
79
|
@s.pass_through = 'true'
|
68
80
|
@cs.receive_cud(params)
|
69
|
-
|
70
|
-
@
|
71
|
-
@
|
81
|
+
verify_zresult(@s.docname(:create) => [],
|
82
|
+
@s.docname(:update) => [],
|
83
|
+
@s.docname(:delete) => [])
|
72
84
|
end
|
73
85
|
|
74
86
|
it "should handle send cud" do
|
@@ -225,9 +237,10 @@ describe "ClientSync" do
|
|
225
237
|
params = {'create'=>{'1'=>@product1},
|
226
238
|
'update'=>{'2'=>@product2},'delete'=>{'3'=>@product3}}
|
227
239
|
@cs.receive_cud(params)
|
228
|
-
|
229
|
-
@
|
230
|
-
@
|
240
|
+
verify_zresult(@s.docname(:create) => [],
|
241
|
+
@s.docname(:update) => [],
|
242
|
+
@s.docname(:delete) => [])
|
243
|
+
verify_result(
|
231
244
|
@s.docname(:md) => {},
|
232
245
|
@c.docname(:cd) => {})
|
233
246
|
end
|
@@ -698,8 +711,7 @@ describe "ClientSync" do
|
|
698
711
|
it "should return bulk data url for completed bulk data user partition" do
|
699
712
|
set_state('test_db_storage' => @data)
|
700
713
|
ClientSync.bulk_data(:user,@c)
|
701
|
-
|
702
|
-
BulkDataJob.after_perform_x("data_name" => bulk_data_docname(@a.id,@u.id))
|
714
|
+
do_bulk_data_job("data_name" => bulk_data_docname(@a.id,@u.id))
|
703
715
|
ClientSync.bulk_data(:user,@c).should == {:result => :url,
|
704
716
|
:url => BulkData.load(bulk_data_docname(@a.id,@u.id)).url}
|
705
717
|
verify_result(
|
@@ -710,8 +722,7 @@ describe "ClientSync" do
|
|
710
722
|
|
711
723
|
it "should return empty bulk data url if there are errors in query" do
|
712
724
|
ClientSync.bulk_data(:user,@c)
|
713
|
-
|
714
|
-
BulkDataJob.after_perform_x("data_name" => bulk_data_docname(@a.id,@u.id))
|
725
|
+
do_bulk_data_job("data_name" => bulk_data_docname(@a.id,@u.id))
|
715
726
|
errordoc = @s.docname(:errors) # source SampleAdapter
|
716
727
|
operation = 'query'
|
717
728
|
Store.lock(errordoc) do
|
@@ -727,8 +738,7 @@ describe "ClientSync" do
|
|
727
738
|
:app_id => @a.id,
|
728
739
|
:user_id => name,
|
729
740
|
:sources => [@s_fields[:name]])
|
730
|
-
|
731
|
-
BulkDataJob.after_perform_x("data_name" => bulk_data_docname(@a.id,name))
|
741
|
+
do_bulk_data_job("data_name" => bulk_data_docname(@a.id,name))
|
732
742
|
data = BulkData.load(bulk_data_docname(@a.id,name))
|
733
743
|
data.url.should match /a%20b/
|
734
744
|
data.delete
|
@@ -738,8 +748,7 @@ describe "ClientSync" do
|
|
738
748
|
set_state('test_db_storage' => @data)
|
739
749
|
@s.partition = :app
|
740
750
|
ClientSync.bulk_data(:app,@c)
|
741
|
-
|
742
|
-
BulkDataJob.after_perform_x("data_name" => bulk_data_docname(@a.id,"*"))
|
751
|
+
do_bulk_data_job("data_name" => bulk_data_docname(@a.id,"*"))
|
743
752
|
ClientSync.bulk_data(:app,@c).should == {:result => :url,
|
744
753
|
:url => BulkData.load(bulk_data_docname(@a.id,"*")).url}
|
745
754
|
verify_result(
|
@@ -752,8 +761,7 @@ describe "ClientSync" do
|
|
752
761
|
set_state('test_db_storage' => @data)
|
753
762
|
@s.sync_type = :bulk_sync_only
|
754
763
|
ClientSync.bulk_data(:user,@c)
|
755
|
-
|
756
|
-
BulkDataJob.after_perform_x("data_name" => bulk_data_docname(@a.id,@u.id))
|
764
|
+
do_bulk_data_job("data_name" => bulk_data_docname(@a.id,@u.id))
|
757
765
|
ClientSync.bulk_data(:user,@c).should == {:result => :url,
|
758
766
|
:url => BulkData.load(bulk_data_docname(@a.id,@u.id)).url}
|
759
767
|
verify_result(
|
@@ -766,8 +774,7 @@ describe "ClientSync" do
|
|
766
774
|
set_state('test_db_storage' => @data)
|
767
775
|
Rhoconnect.blackberry_bulk_sync = true
|
768
776
|
ClientSync.bulk_data(:user,@c)
|
769
|
-
|
770
|
-
BulkDataJob.after_perform_x("data_name" => bulk_data_docname(@a.id,@u.id))
|
777
|
+
do_bulk_data_job("data_name" => bulk_data_docname(@a.id,@u.id))
|
771
778
|
data = BulkData.load(bulk_data_docname(@a.id,@u.id))
|
772
779
|
ClientSync.bulk_data(:user,@c).should == {:result => :url, :url => data.url}
|
773
780
|
File.delete(data.dbfile)
|
@@ -2,116 +2,121 @@ describe("Admins routes", function() {
|
|
2
2
|
beforeEach(function() {
|
3
3
|
this.router = new App.Controllers.Admins();
|
4
4
|
this.routeSpy = sinon.spy();
|
5
|
+
sinon.stub(jQuery,'ajax')
|
5
6
|
try {
|
6
7
|
Backbone.History.start({silent:true, pushState:true});
|
7
8
|
} catch(e) {}
|
8
9
|
this.router.navigate("test");
|
9
10
|
});
|
11
|
+
|
12
|
+
afterEach(function(){
|
13
|
+
jQuery.ajax.restore();
|
14
|
+
});
|
10
15
|
|
11
16
|
it("fires the index route with a blank hash", function() {
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
+
this.router.bind("route:index", this.routeSpy);
|
18
|
+
this.router.navigate("", true);
|
19
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
20
|
+
expect(this.routeSpy).toHaveBeenCalledWith();
|
21
|
+
});
|
22
|
+
|
23
|
+
it("fires the home route with a blank hash", function() {
|
24
|
+
this.router.bind("route:index", this.routeSpy);
|
25
|
+
this.router.navigate("home", true);
|
26
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
27
|
+
expect(this.routeSpy).toHaveBeenCalledWith();
|
28
|
+
});
|
29
|
+
|
30
|
+
it("fires the show_source route", function() {
|
31
|
+
this.router.bind('route:show_source', this.routeSpy);
|
32
|
+
this.router.navigate("sources/1/tuser/tdoc/tclient", true);
|
33
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
34
|
+
expect(this.routeSpy).toHaveBeenCalledWith("1","tuser","tdoc","tclient");
|
35
|
+
});
|
17
36
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
it("fires the user_device route", function() {
|
103
|
-
this.router.bind('route:user_device', this.routeSpy);
|
104
|
-
this.router.navigate("device/1/2", true);
|
105
|
-
expect(this.routeSpy).toHaveBeenCalledOnce();
|
106
|
-
expect(this.routeSpy).toHaveBeenCalledWith("1","2");
|
107
|
-
});
|
108
|
-
|
109
|
-
it("fires the change_admin route", function() {
|
110
|
-
this.router.bind('route:change_admin', this.routeSpy);
|
111
|
-
this.router.navigate("change_admin", true);
|
112
|
-
expect(this.routeSpy).toHaveBeenCalledOnce();
|
113
|
-
expect(this.routeSpy).toHaveBeenCalledWith();
|
114
|
-
});
|
115
|
-
|
37
|
+
it("fires the login route", function() {
|
38
|
+
this.router.bind('route:login', this.routeSpy);
|
39
|
+
this.router.navigate("login", true);
|
40
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
41
|
+
expect(this.routeSpy).toHaveBeenCalledWith();
|
42
|
+
});
|
43
|
+
|
44
|
+
it("fires the logout route", function() {
|
45
|
+
this.router.bind('route:logout', this.routeSpy);
|
46
|
+
this.router.navigate("logout", true);
|
47
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
48
|
+
expect(this.routeSpy).toHaveBeenCalledWith();
|
49
|
+
});
|
50
|
+
|
51
|
+
it("fires the get_doc route", function() {
|
52
|
+
this.router.bind('route:get_doc', this.routeSpy);
|
53
|
+
this.router.navigate("doc/testdoc/2", true);
|
54
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
55
|
+
expect(this.routeSpy).toHaveBeenCalledWith("testdoc","2");
|
56
|
+
});
|
57
|
+
|
58
|
+
it("fires the server_doc route", function() {
|
59
|
+
this.router.bind('route:server_doc', this.routeSpy);
|
60
|
+
this.router.navigate("docselect", true);
|
61
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
62
|
+
expect(this.routeSpy).toHaveBeenCalledWith();
|
63
|
+
});
|
64
|
+
|
65
|
+
it("fires the adapter route", function() {
|
66
|
+
this.router.bind('route:adapter', this.routeSpy);
|
67
|
+
this.router.navigate("adapter", true);
|
68
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
69
|
+
expect(this.routeSpy).toHaveBeenCalledWith();
|
70
|
+
});
|
71
|
+
|
72
|
+
it("fires the users route", function() {
|
73
|
+
this.router.bind('route:users', this.routeSpy);
|
74
|
+
this.router.navigate("users", true);
|
75
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
76
|
+
expect(this.routeSpy).toHaveBeenCalledWith();
|
77
|
+
});
|
78
|
+
|
79
|
+
it("fires the new_user route", function() {
|
80
|
+
this.router.bind('route:new_user', this.routeSpy);
|
81
|
+
this.router.navigate("users/new", true);
|
82
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
83
|
+
expect(this.routeSpy).toHaveBeenCalledWith();
|
84
|
+
});
|
85
|
+
|
86
|
+
it("fires the show_user route", function() {
|
87
|
+
this.router.bind('route:show_user', this.routeSpy);
|
88
|
+
this.router.navigate("user/1", true);
|
89
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
90
|
+
expect(this.routeSpy).toHaveBeenCalledWith("1");
|
91
|
+
});
|
92
|
+
|
93
|
+
it("fires the new_ping route", function() {
|
94
|
+
this.router.bind('route:new_ping', this.routeSpy);
|
95
|
+
this.router.navigate("user/newping/1", true);
|
96
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
97
|
+
expect(this.routeSpy).toHaveBeenCalledWith("1");
|
98
|
+
});
|
99
|
+
|
100
|
+
it("fires the new_ping_all route", function() {
|
101
|
+
this.router.bind('route:new_ping_all', this.routeSpy);
|
102
|
+
this.router.navigate("users/newping", true);
|
103
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
104
|
+
expect(this.routeSpy).toHaveBeenCalledWith();
|
105
|
+
});
|
106
|
+
|
107
|
+
it("fires the user_device route", function() {
|
108
|
+
this.router.bind('route:user_device', this.routeSpy);
|
109
|
+
this.router.navigate("device/1/2", true);
|
110
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
111
|
+
expect(this.routeSpy).toHaveBeenCalledWith("1","2");
|
112
|
+
});
|
113
|
+
|
114
|
+
it("fires the change_admin route", function() {
|
115
|
+
this.router.bind('route:change_admin', this.routeSpy);
|
116
|
+
this.router.navigate("change_admin", true);
|
117
|
+
expect(this.routeSpy).toHaveBeenCalledOnce();
|
118
|
+
expect(this.routeSpy).toHaveBeenCalledWith();
|
119
|
+
});
|
120
|
+
|
116
121
|
});
|
117
122
|
|
@@ -27,11 +27,10 @@ describe("DocView", function(){
|
|
27
27
|
});
|
28
28
|
|
29
29
|
it("should have correct html rendered ",function(){
|
30
|
-
var title = this.docView.el.innerHTML.search('
|
30
|
+
var title = this.docView.el.innerHTML.search('testkey');
|
31
31
|
expect(title).toBeGreaterThan(0);
|
32
32
|
|
33
|
-
var change_btn = this.docView.el.innerHTML.search('Upload
|
33
|
+
var change_btn = this.docView.el.innerHTML.search('Upload token string');
|
34
34
|
expect(change_btn).toBeGreaterThan(0);
|
35
|
-
|
36
35
|
})
|
37
36
|
});
|
@@ -34,7 +34,7 @@ describe("EditUserView", function(){
|
|
34
34
|
});
|
35
35
|
|
36
36
|
it("should have correct html rendered ",function(){
|
37
|
-
var title = this.editUserView.el.innerHTML.search('
|
37
|
+
var title = this.editUserView.el.innerHTML.search('Change Admin Password');
|
38
38
|
expect(title).toBeGreaterThan(0);
|
39
39
|
|
40
40
|
var password = this.editUserView.el.innerHTML.search('Password');
|
@@ -8,7 +8,9 @@ describe("Home", function(){
|
|
8
8
|
|
9
9
|
sinon.stub(source,'fetch')
|
10
10
|
sinon.stub(source,'save');
|
11
|
-
|
11
|
+
confirmStub = sinon.stub(window, 'confirm');
|
12
|
+
confirmStub.returns(true);
|
13
|
+
|
12
14
|
this.homeView = new App.Views.Home({model : source});
|
13
15
|
});
|
14
16
|
|
@@ -16,6 +18,7 @@ describe("Home", function(){
|
|
16
18
|
var session = new Session();
|
17
19
|
session.setAuthenticated('false');
|
18
20
|
session.setApiKey(null);
|
21
|
+
confirmStub.restore();
|
19
22
|
});
|
20
23
|
|
21
24
|
it("should have render initial html",function(){
|
@@ -26,13 +29,10 @@ describe("Home", function(){
|
|
26
29
|
});
|
27
30
|
|
28
31
|
it("should have correct html rendered ",function(){
|
29
|
-
var
|
30
|
-
expect(title).toBeGreaterThan(0);
|
31
|
-
|
32
|
-
var change_btn = this.homeView.el.innerHTML.search('Change Admin Password');
|
32
|
+
var change_btn = this.homeView.el.innerHTML.search('App partition sources');
|
33
33
|
expect(change_btn).toBeGreaterThan(0);
|
34
34
|
|
35
|
-
var reset = this.homeView.el.innerHTML.search('
|
35
|
+
var reset = this.homeView.el.innerHTML.search('Sync Server URL');
|
36
36
|
expect(reset).toBeGreaterThan(0);
|
37
37
|
|
38
38
|
})
|
@@ -28,6 +28,10 @@ describe("ServerDocView", function(){
|
|
28
28
|
it("should clear doc",function(){
|
29
29
|
this.serverDocClearSpy = sinon.spy(this.serverDocView,'clear');
|
30
30
|
doc.set('dbkey','testdbkey');
|
31
|
+
function myevent(){
|
32
|
+
this.preventDefault=function(){return true;}
|
33
|
+
}
|
34
|
+
e = new myevent();
|
31
35
|
this.serverDocView.clear(e);
|
32
36
|
expect(this.serverDocClearSpy).toHaveBeenCalledOnce();
|
33
37
|
});
|
@@ -0,0 +1,15 @@
|
|
1
|
+
describe("Session", function(){
|
2
|
+
beforeEach(function(){
|
3
|
+
this.session = new Session;
|
4
|
+
});
|
5
|
+
|
6
|
+
it("should have set session key",function(){
|
7
|
+
this.session.setApiKey("testkey")
|
8
|
+
expect(this.session.getApiKey()).toEqual('testkey')
|
9
|
+
});
|
10
|
+
|
11
|
+
it("should have set authentication",function(){
|
12
|
+
this.session.setAuthenticated("true")
|
13
|
+
expect(this.session.getAuthenticated()).toEqual('true')
|
14
|
+
});
|
15
|
+
})
|
@@ -5,9 +5,9 @@ describe("SetAdapterView", function(){
|
|
5
5
|
session.setAuthenticated('true');
|
6
6
|
session.setApiKey('testtoken');
|
7
7
|
adapter = new Adapter();
|
8
|
-
|
8
|
+
|
9
9
|
sinon.stub(jQuery,'ajax')
|
10
|
-
|
10
|
+
var domain = 'http://test.com'
|
11
11
|
this.setAdapterView = new App.Views.SetAdapter({model : adapter});
|
12
12
|
});
|
13
13
|
|
@@ -25,8 +25,4 @@ describe("SetAdapterView", function(){
|
|
25
25
|
expect(this.setAdapterSpy).toHaveBeenCalledOnce();
|
26
26
|
});
|
27
27
|
|
28
|
-
it("should have correct html rendered ",function(){
|
29
|
-
var title = this.setAdapterView.el.innerHTML.search('Set Backend App URL');
|
30
|
-
expect(title).toBeGreaterThan(0);
|
31
|
-
})
|
32
28
|
});
|
@@ -9,7 +9,9 @@ describe("ShowDeviceView", function(){
|
|
9
9
|
client.set('user_id', 'user_id');
|
10
10
|
|
11
11
|
sinon.stub(jQuery,'ajax')
|
12
|
-
|
12
|
+
confirmStub = sinon.stub(window, 'confirm');
|
13
|
+
confirmStub.returns(true);
|
14
|
+
|
13
15
|
this.setdeviceView = new App.Views.ShowDevice({model : client});
|
14
16
|
});
|
15
17
|
|
@@ -18,6 +20,7 @@ describe("ShowDeviceView", function(){
|
|
18
20
|
session.setAuthenticated('false');
|
19
21
|
session.setApiKey(null);
|
20
22
|
jQuery.ajax.restore();
|
23
|
+
confirmStub.restore();
|
21
24
|
});
|
22
25
|
|
23
26
|
it("should have render initial html",function(){
|
@@ -11,6 +11,9 @@ describe("ShowUserView", function(){
|
|
11
11
|
sinon.stub(jQuery,'ajax')
|
12
12
|
sinon.stub(source,'fetch')
|
13
13
|
|
14
|
+
confirmStub = sinon.stub(window, 'confirm');
|
15
|
+
confirmStub.returns(true);
|
16
|
+
|
14
17
|
this.showUserView = new App.Views.ShowUser({model : user});
|
15
18
|
});
|
16
19
|
|
@@ -19,6 +22,7 @@ describe("ShowUserView", function(){
|
|
19
22
|
session.setAuthenticated('false');
|
20
23
|
session.setApiKey(null);
|
21
24
|
jQuery.ajax.restore();
|
25
|
+
confirmStub.restore();
|
22
26
|
});
|
23
27
|
|
24
28
|
it("should have render initial html",function(){
|
@@ -27,10 +27,10 @@ describe("SourceDocsView", function(){
|
|
27
27
|
});
|
28
28
|
|
29
29
|
it("should have correct html rendered ",function(){
|
30
|
-
var title = this.sourceDocsView.el.innerHTML.search("
|
30
|
+
var title = this.sourceDocsView.el.innerHTML.search("Attributes");
|
31
31
|
expect(title).toBeGreaterThan(0);
|
32
32
|
|
33
|
-
var title2 = this.sourceDocsView.el.innerHTML.search("Documents
|
33
|
+
var title2 = this.sourceDocsView.el.innerHTML.search("Documents");
|
34
34
|
expect(title2).toBeGreaterThan(0);
|
35
35
|
})
|
36
36
|
});
|
@@ -23,8 +23,7 @@ describe "BulkDataJob" do
|
|
23
23
|
:app_id => @a.id,
|
24
24
|
:user_id => @u.id,
|
25
25
|
:sources => [@s_fields[:name], 'FixedSchemaAdapter'])
|
26
|
-
|
27
|
-
BulkDataJob.after_perform_x("data_name" => data.name)
|
26
|
+
do_bulk_data_job("data_name" => data.name)
|
28
27
|
data = BulkData.load(docname)
|
29
28
|
data.completed?.should == true
|
30
29
|
verify_result(@s.docname(:md) => @data,@s.docname(:md_copy) => @data)
|
@@ -51,8 +50,7 @@ describe "BulkDataJob" do
|
|
51
50
|
:app_id => @a.id,
|
52
51
|
:user_id => @u.id,
|
53
52
|
:sources => [@s_fields[:name]])
|
54
|
-
|
55
|
-
BulkDataJob.after_perform_x("data_name" => data.name)
|
53
|
+
do_bulk_data_job("data_name" => data.name)
|
56
54
|
data = BulkData.load(docname)
|
57
55
|
data.completed?.should == true
|
58
56
|
verify_result(@s.docname(:md) => @data,@s.docname(:md_copy) => @data)
|
@@ -70,8 +68,7 @@ describe "BulkDataJob" do
|
|
70
68
|
:app_id => @a.id,
|
71
69
|
:user_id => @u.id,
|
72
70
|
:sources => [@s_fields[:name]])
|
73
|
-
|
74
|
-
BulkDataJob.after_perform_x("data_name" => data.name)
|
71
|
+
do_bulk_data_job("data_name" => data.name)
|
75
72
|
data = BulkData.load(docname)
|
76
73
|
data.completed?.should == true
|
77
74
|
verify_result(@s.docname(:md) => @data,
|
@@ -90,8 +87,7 @@ describe "BulkDataJob" do
|
|
90
87
|
:app_id => @a.id,
|
91
88
|
:user_id => @u.id,
|
92
89
|
:sources => [@s_fields[:name]])
|
93
|
-
|
94
|
-
BulkDataJob.after_perform_x("data_name" => data.name)
|
90
|
+
do_bulk_data_job("data_name" => data.name)
|
95
91
|
data = BulkData.load(docname)
|
96
92
|
data.completed?.should == true
|
97
93
|
verify_result(@s.docname(:md) => @data, @s.docname(:md_copy) => @data)
|
@@ -112,8 +108,8 @@ describe "BulkDataJob" do
|
|
112
108
|
|
113
109
|
it "should delete bulk data if exception is raised" do
|
114
110
|
lambda {
|
115
|
-
|
116
|
-
|
111
|
+
do_bulk_data_job("data_name" => 'broken')
|
112
|
+
}.should raise_error(Exception)
|
117
113
|
Store.db.keys('bulk_data*').should == []
|
118
114
|
end
|
119
115
|
|
@@ -124,8 +120,8 @@ describe "BulkDataJob" do
|
|
124
120
|
:user_id => @u.id,
|
125
121
|
:sources => [@s_fields[:name]])
|
126
122
|
lambda {
|
127
|
-
|
128
|
-
|
123
|
+
do_bulk_data_job("data_name" => data.name)
|
124
|
+
}.should raise_error(Exception)
|
129
125
|
Store.db.keys('bulk_data*').should == []
|
130
126
|
end
|
131
127
|
end
|
data/spec/jobs/ping_job_spec.rb
CHANGED
@@ -154,5 +154,26 @@ describe "PingJob" do
|
|
154
154
|
PingJob.should_receive(:log).once.with(/Dropping ping request for client/)
|
155
155
|
lambda { PingJob.perform(params) }.should_not raise_error
|
156
156
|
end
|
157
|
+
|
158
|
+
it "should process all pings even if some of them are failing" do
|
159
|
+
params = {"user_id" => [ @u.id, @u1.id], "api_token" => @api_token,
|
160
|
+
"sources" => [@s.name], "message" => 'hello world',
|
161
|
+
"vibrate" => '5', "badge" => '5', "sound" => 'hello.mp3', 'phone_id' => nil }
|
162
|
+
@c.phone_id = '3'
|
163
|
+
|
164
|
+
scrubbed_params = params.dup
|
165
|
+
scrubbed_params['vibrate'] = '5'
|
166
|
+
@c1.device_type = 'blackberry'
|
167
|
+
|
168
|
+
Apple.should_receive(:ping).with(params.merge!({'device_pin' => @c.device_pin, 'phone_id' => @c.phone_id, 'device_port' => @c.device_port})).and_return { raise SocketError.new("Socket failure") }
|
169
|
+
Blackberry.should_receive(:ping).with({'device_pin' => @c1.device_pin, 'device_port' => @c1.device_port}.merge!(scrubbed_params))
|
170
|
+
exception_raised = false
|
171
|
+
begin
|
172
|
+
PingJob.perform(params)
|
173
|
+
rescue Exception => e
|
174
|
+
exception_raised = true
|
175
|
+
end
|
176
|
+
exception_raised.should == true
|
177
|
+
end
|
157
178
|
end
|
158
179
|
end
|
@@ -24,8 +24,7 @@ describe "BulkData Performance" do
|
|
24
24
|
:app_id => @a.id,
|
25
25
|
:user_id => @u.id,
|
26
26
|
:sources => [@s_fields[:name]])
|
27
|
-
|
28
|
-
BulkDataJob.after_perform_x("data_name" => data.name)
|
27
|
+
do_bulk_data_job("data_name" => data.name)
|
29
28
|
lap_timer('BulkDataJob.perform duration',start)
|
30
29
|
end
|
31
30
|
end
|
data/spec/server/server_spec.rb
CHANGED
@@ -426,8 +426,7 @@ describe "Server" do
|
|
426
426
|
it "should receive url when bulk data is available" do
|
427
427
|
set_state('test_db_storage' => @data)
|
428
428
|
get "/api/application/bulk_data", :partition => :user, :client_id => @c.id
|
429
|
-
|
430
|
-
BulkDataJob.after_perform_x("data_name" => bulk_data_docname(@a.id,@u.id))
|
429
|
+
do_bulk_data_job("data_name" => bulk_data_docname(@a.id,@u.id))
|
431
430
|
get "/api/application/bulk_data", :partition => :user, :client_id => @c.id
|
432
431
|
last_response.should be_ok
|
433
432
|
data = BulkData.load(bulk_data_docname(@a.id,@u.id))
|
@@ -439,8 +438,7 @@ describe "Server" do
|
|
439
438
|
it "should download bulk data file" do
|
440
439
|
set_state('test_db_storage' => @data)
|
441
440
|
get "/api/application/bulk_data", :partition => :user, :client_id => @c.id
|
442
|
-
|
443
|
-
BulkDataJob.after_perform_x("data_name" => bulk_data_docname(@a.id,@u.id))
|
441
|
+
do_bulk_data_job("data_name" => bulk_data_docname(@a.id,@u.id))
|
444
442
|
get "/api/application/bulk_data", :partition => :user, :client_id => @c.id
|
445
443
|
get JSON.parse(last_response.body)["url"]
|
446
444
|
last_response.should be_ok
|