sufia 2.0.1 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +111 -0
- data/Gemfile +4 -4
- data/History.md +126 -0
- data/README.md +23 -5
- data/SUFIA_VERSION +1 -1
- data/app/assets/javascripts/sufia/multiForm.js +10 -2
- data/app/assets/stylesheets/{application-bootstrap.css → application-bootstrap.css.erb} +7 -7
- data/app/assets/stylesheets/{bootstrap.min.css → bootstrap.min.css.erb} +1 -1
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +9 -3
- data/app/controllers/single_use_link_controller.rb +1 -1
- data/app/helpers/sufia_helper.rb +7 -1
- data/app/models/contact_form.rb +0 -14
- data/app/views/_user_util_links.html.erb +0 -15
- data/app/views/batch_edits/_check_all.html.erb +2 -2
- data/app/views/batch_edits/_delete_selected.html.erb +1 -1
- data/app/views/layouts/{_head-tag-content.html.erb → _head_tag_content.html.erb} +0 -0
- data/app/views/layouts/homepage.html.erb +2 -2
- data/app/views/layouts/sufia-one-column.html.erb +1 -1
- data/app/views/layouts/sufia-two-column.html.erb +1 -1
- data/app/views/users/edit.html.erb +1 -1
- data/app/views/users/show.html.erb +1 -17
- data/config/routes.rb +31 -33
- data/lib/generators/sufia/sufia_generator.rb +5 -3
- data/lib/generators/sufia/templates/catalog_controller.rb +5 -1
- data/lib/generators/sufia/templates/config/redis_config.rb +1 -14
- data/lib/sufia/batch_edits_controller_behavior.rb +1 -1
- data/lib/sufia/controller.rb +1 -1
- data/lib/sufia/dashboard_controller_behavior.rb +8 -2
- data/lib/sufia/files_controller_behavior.rb +1 -2
- data/lib/sufia/version.rb +1 -1
- data/spec/active_fedora/unsaved_digital_object_spec.rb +1 -15
- data/spec/controllers/authorities_controller_spec.rb +1 -15
- data/spec/controllers/batch_controller_spec.rb +10 -16
- data/spec/controllers/batch_edits_controller_spec.rb +1 -1
- data/spec/controllers/catalog_controller_spec.rb +1 -15
- data/spec/controllers/dashboard_controller_spec.rb +23 -17
- data/spec/controllers/downloads_controller_spec.rb +1 -15
- data/spec/controllers/generic_files_controller_spec.rb +18 -32
- data/spec/controllers/mailbox_controller_spec.rb +1 -15
- data/spec/controllers/single_use_link_controller_spec.rb +6 -13
- data/spec/controllers/users_controller_spec.rb +27 -41
- data/spec/factories/users.rb +5 -14
- data/spec/features/browse_dashboard_files.rb +21 -0
- data/spec/features/browse_files.rb +31 -0
- data/spec/features/contact_form.rb +99 -0
- data/spec/features/display_dashboard.rb +46 -0
- data/spec/features/ingest_upload_files.rb +24 -0
- data/spec/features/users_spec.rb +25 -0
- data/spec/helpers/generic_file_helper_spec.rb +10 -3
- data/spec/helpers/sufia_helper_spec.rb +1 -1
- data/spec/lib/sufia/id_service_spec.rb +1 -15
- data/spec/models/audit_job_spec.rb +1 -15
- data/spec/models/batch_spec.rb +1 -15
- data/spec/models/batch_update_job_spec.rb +3 -16
- data/spec/models/characterize_job_spec.rb +4 -4
- data/spec/models/checksum_audit_log_spec.rb +1 -15
- data/spec/models/event_jobs_spec.rb +1 -15
- data/spec/models/file_content_datastream_spec.rb +5 -19
- data/spec/models/fits_datastream_spec.rb +1 -15
- data/spec/models/generic_file/web_form_spec.rb +34 -0
- data/spec/models/generic_file_spec.rb +11 -39
- data/spec/models/local_authority_spec.rb +3 -15
- data/spec/models/properties_datastream_spec.rb +1 -1
- data/spec/models/single_use_link_spec.rb +1 -1
- data/spec/models/solr_document_spec.rb +1 -1
- data/spec/models/transcode_audio_job_spec.rb +1 -1
- data/spec/models/transcode_video_job_spec.rb +1 -1
- data/spec/models/trophy_spec.rb +1 -1
- data/spec/models/unzip_job_spec.rb +1 -15
- data/spec/models/user_spec.rb +1 -15
- data/spec/rake/sufia_fixtures_spec.rb +3 -17
- data/spec/routing/route_spec.rb +7 -21
- data/spec/spec_helper.rb +8 -20
- data/spec/support/features.rb +6 -0
- data/spec/support/features/session_helpers.rb +21 -0
- data/spec/support/lib/generators/test_app_generator.rb +4 -0
- data/spec/views/batch_edits/check_all_spec.rb +6 -4
- data/sufia-models/app/models/checksum_audit_log.rb +1 -15
- data/sufia-models/app/models/domain_term.rb +3 -15
- data/sufia-models/app/models/geo_names_resource.rb +1 -13
- data/sufia-models/app/models/local_authority.rb +12 -17
- data/sufia-models/app/models/local_authority_entry.rb +1 -15
- data/sufia-models/app/models/single_use_link.rb +2 -3
- data/sufia-models/app/models/trophy.rb +1 -1
- data/sufia-models/app/models/version_committer.rb +1 -15
- data/sufia-models/lib/sufia/models.rb +6 -2
- data/sufia-models/lib/sufia/models/engine.rb +1 -1
- data/sufia-models/lib/sufia/models/generic_file.rb +3 -0
- data/sufia-models/lib/sufia/models/generic_file/accessible_attributes.rb +87 -0
- data/sufia-models/lib/sufia/models/generic_file/permissions.rb +2 -1
- data/sufia-models/lib/sufia/models/generic_file/web_form.rb +4 -1
- data/sufia-models/lib/sufia/models/user.rb +9 -2
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/{lib → sufia-models/lib}/tasks/resque.rake +0 -0
- data/sufia-models/sufia-models.gemspec +13 -11
- data/sufia.gemspec +1 -3
- data/tasks/sufia-dev.rake +21 -10
- metadata +30 -84
- data/config/cucumber.yml +0 -8
- data/features/browse_dashboard_files.feature +0 -16
- data/features/browse_files.feature +0 -16
- data/features/contact_form.feature +0 -86
- data/features/display_dashboard.feature +0 -42
- data/features/ingest_upload_files.feature +0 -21
- data/features/step_definitions/edit_metadata_steps.rb +0 -89
- data/features/step_definitions/fixture_steps.rb +0 -35
- data/features/step_definitions/show_document_steps.rb +0 -103
- data/features/step_definitions/sufia.rb +0 -69
- data/features/step_definitions/user_steps.rb +0 -58
- data/features/step_definitions/web_steps.rb +0 -235
- data/features/support/cleanup.rb +0 -19
- data/features/support/env.rb +0 -90
- data/features/support/headless.rb +0 -26
- data/features/support/paths.rb +0 -101
- data/features/users.feature +0 -18
- data/spec/lib/sufia/role_mapper_spec.rb +0 -28
- data/spec/support/Gemfile +0 -24
- data/spec/views/single_user_link/download.html.erb_spec.rb +0 -5
- data/spec/views/single_user_link/generate_download.html.erb_spec.rb +0 -5
- data/spec/views/single_user_link/generate_show.html.erb_spec.rb +0 -5
- data/spec/views/single_user_link/show.html.erb_spec.rb +0 -5
- data/tasks/cucumber.rake +0 -72
@@ -1,18 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'spec_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
16
2
|
|
17
3
|
describe CatalogController do
|
18
4
|
before do
|
@@ -1,18 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'spec_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
16
2
|
|
17
3
|
describe DashboardController do
|
18
4
|
before do
|
@@ -63,14 +49,34 @@ describe DashboardController do
|
|
63
49
|
describe "#index" do
|
64
50
|
before (:each) do
|
65
51
|
xhr :get, :index
|
52
|
+
# Make sure there are at least 3 files owned by @user. Otherwise, the tests aren't meaningful.
|
53
|
+
if assigns(:document_list).count < 3
|
54
|
+
files_count = assigns(:document_list).count
|
55
|
+
until files_count == 3
|
56
|
+
gf = GenericFile.new()
|
57
|
+
gf.apply_depositor_metadata(@user.user_key)
|
58
|
+
gf.save
|
59
|
+
files_count += 1
|
60
|
+
end
|
61
|
+
xhr :get, :index
|
62
|
+
end
|
66
63
|
end
|
67
64
|
it "should be a success" do
|
68
65
|
response.should be_success
|
69
66
|
response.should render_template('dashboard/index')
|
70
67
|
end
|
71
68
|
it "should return an array of documents I can edit" do
|
72
|
-
|
73
|
-
assigns(:
|
69
|
+
editable_docs_response = Blacklight.solr.get "select", :params=>{:fq=>["edit_access_group_ssim:public OR edit_access_person_ssim:#{@user.user_key}"]}
|
70
|
+
assigns(:result_set_size).should eql(editable_docs_response["response"]["numFound"])
|
71
|
+
assigns(:document_list).each {|doc| doc.should be_kind_of SolrDocument}
|
72
|
+
end
|
73
|
+
context "with render views" do
|
74
|
+
render_views
|
75
|
+
it "should paginate" do
|
76
|
+
xhr :get, :index, per_page: 2
|
77
|
+
response.should be_success
|
78
|
+
response.should render_template('dashboard/index')
|
79
|
+
end
|
74
80
|
end
|
75
81
|
end
|
76
82
|
end
|
@@ -1,18 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'spec_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
16
2
|
|
17
3
|
describe DownloadsController do
|
18
4
|
|
@@ -1,18 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'spec_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
16
2
|
|
17
3
|
describe GenericFilesController do
|
18
4
|
before do
|
@@ -46,11 +32,11 @@ describe GenericFilesController do
|
|
46
32
|
|
47
33
|
it "should spawn a content deposit event job" do
|
48
34
|
file = fixture_file_upload('/world.png','image/png')
|
49
|
-
s1 =
|
35
|
+
s1 = double('one')
|
50
36
|
ContentDepositEventJob.should_receive(:new).with('test:123', 'jilluser@example.com').and_return(s1)
|
51
37
|
Sufia.queue.should_receive(:push).with(s1).once
|
52
38
|
|
53
|
-
s2 =
|
39
|
+
s2 = double('one')
|
54
40
|
CharacterizeJob.should_receive(:new).with('test:123').and_return(s2)
|
55
41
|
Sufia.queue.should_receive(:push).with(s2).once
|
56
42
|
xhr :post, :create, :files=>[file], :Filename=>"The world", :batch_id => "sample:batch_id", :permission=>{"group"=>{"public"=>"read"} }, :terms_of_service => '1'
|
@@ -58,15 +44,15 @@ describe GenericFilesController do
|
|
58
44
|
|
59
45
|
it "should expand zip files" do
|
60
46
|
file = fixture_file_upload('/icons.zip','application/zip')
|
61
|
-
s1 =
|
47
|
+
s1 = double('one')
|
62
48
|
ContentDepositEventJob.should_receive(:new).with('test:123', 'jilluser@example.com').and_return(s1)
|
63
49
|
Sufia.queue.should_receive(:push).with(s1).once
|
64
50
|
|
65
|
-
s2 =
|
51
|
+
s2 = double('one')
|
66
52
|
CharacterizeJob.should_receive(:new).with('test:123').and_return(s2)
|
67
53
|
Sufia.queue.should_receive(:push).with(s2).once
|
68
54
|
|
69
|
-
s3 =
|
55
|
+
s3 = double('one')
|
70
56
|
UnzipJob.should_receive(:new).with('test:123').and_return(s3)
|
71
57
|
Sufia.queue.should_receive(:push).with(s3).once
|
72
58
|
|
@@ -173,11 +159,11 @@ describe GenericFilesController do
|
|
173
159
|
controller.should_receive(:virus_check).and_return(0)
|
174
160
|
file = fixture_file_upload('/world.png','image/png')
|
175
161
|
|
176
|
-
s1 =
|
162
|
+
s1 = double('one')
|
177
163
|
ContentDepositEventJob.should_receive(:new).with('test:123', 'jilluser@example.com').and_return(s1)
|
178
164
|
Sufia.queue.should_receive(:push).with(s1).once
|
179
165
|
|
180
|
-
s2 =
|
166
|
+
s2 = double('one')
|
181
167
|
CharacterizeJob.should_receive(:new).with('test:123').and_return(s2)
|
182
168
|
Sufia.queue.should_receive(:push).with(s2).once
|
183
169
|
xhr :post, :create, :files=>[file], :Filename=>"The world", :batch_id => "sample:batch_id", :permission=>{"group"=>{"public"=>"read"} }, :terms_of_service=>"1"
|
@@ -253,7 +239,7 @@ describe GenericFilesController do
|
|
253
239
|
lambda { GenericFile.find(@generic_file.pid) }.should raise_error(ActiveFedora::ObjectNotFoundError)
|
254
240
|
end
|
255
241
|
it "should spawn a content delete event job" do
|
256
|
-
s1 =
|
242
|
+
s1 = double('one')
|
257
243
|
ContentDeleteEventJob.should_receive(:new).with(@generic_file.noid, @user.user_key).and_return(s1)
|
258
244
|
Sufia.queue.should_receive(:push).with(s1).once
|
259
245
|
delete :destroy, :id=>@generic_file.pid
|
@@ -272,7 +258,7 @@ describe GenericFilesController do
|
|
272
258
|
end
|
273
259
|
|
274
260
|
it "should spawn a content update event job" do
|
275
|
-
s1 =
|
261
|
+
s1 = double('one')
|
276
262
|
ContentUpdateEventJob.should_receive(:new).with(@generic_file.pid, 'jilluser@example.com').and_return(s1)
|
277
263
|
Sufia.queue.should_receive(:push).with(s1).once
|
278
264
|
@user = FactoryGirl.find_or_create(:user)
|
@@ -282,10 +268,10 @@ describe GenericFilesController do
|
|
282
268
|
end
|
283
269
|
|
284
270
|
it "should spawn a content new version event job" do
|
285
|
-
s1 =
|
271
|
+
s1 = double('one')
|
286
272
|
ContentNewVersionEventJob.should_receive(:new).with(@generic_file.pid, 'jilluser@example.com').and_return(s1)
|
287
273
|
Sufia.queue.should_receive(:push).with(s1).once
|
288
|
-
s2 =
|
274
|
+
s2 = double('one')
|
289
275
|
CharacterizeJob.should_receive(:new).with(@generic_file.pid).and_return(s2)
|
290
276
|
Sufia.queue.should_receive(:push).with(s2).once
|
291
277
|
@user = FactoryGirl.find_or_create(:user)
|
@@ -346,11 +332,11 @@ describe GenericFilesController do
|
|
346
332
|
|
347
333
|
ContentUpdateEventJob.should_receive(:new).with(@generic_file.pid, 'jilluser@example.com').never
|
348
334
|
|
349
|
-
s1 =
|
335
|
+
s1 = double('one')
|
350
336
|
ContentNewVersionEventJob.should_receive(:new).with(@generic_file.pid, archivist.user_key).and_return(s1)
|
351
337
|
Sufia.queue.should_receive(:push).with(s1).once
|
352
338
|
|
353
|
-
s2 =
|
339
|
+
s2 = double('one')
|
354
340
|
CharacterizeJob.should_receive(:new).with(@generic_file.pid).and_return(s2)
|
355
341
|
Sufia.queue.should_receive(:push).with(s2).once
|
356
342
|
file = fixture_file_upload('/image.jp2','image/jp2')
|
@@ -365,11 +351,11 @@ describe GenericFilesController do
|
|
365
351
|
controller.stub(:current_user).and_return(@user)
|
366
352
|
sign_in @user
|
367
353
|
ContentUpdateEventJob.should_receive(:new).with(@generic_file.pid, 'jilluser@example.com').never
|
368
|
-
s1 =
|
354
|
+
s1 = double('one')
|
369
355
|
ContentRestoredVersionEventJob.should_receive(:new).with(@generic_file.pid, @user.user_key, 'content.0').and_return(s1)
|
370
356
|
Sufia.queue.should_receive(:push).with(s1).once
|
371
357
|
|
372
|
-
s2 =
|
358
|
+
s2 = double('one')
|
373
359
|
CharacterizeJob.should_receive(:new).with(@generic_file.pid).and_return(s2)
|
374
360
|
Sufia.queue.should_receive(:push).with(s2).once
|
375
361
|
post :update, :id=>@generic_file.pid, :revision=>'content.0'
|
@@ -398,11 +384,11 @@ describe GenericFilesController do
|
|
398
384
|
it "should spawn a virus check" do
|
399
385
|
# The expectation is in the begin block
|
400
386
|
controller.should_receive(:virus_check).and_return(0)
|
401
|
-
s1 =
|
387
|
+
s1 = double('one')
|
402
388
|
ContentNewVersionEventJob.should_receive(:new).with(@generic_file.pid, 'jilluser@example.com').and_return(s1)
|
403
389
|
Sufia.queue.should_receive(:push).with(s1).once
|
404
390
|
|
405
|
-
s2 =
|
391
|
+
s2 = double('one')
|
406
392
|
CharacterizeJob.should_receive(:new).with(@generic_file.pid).and_return(s2)
|
407
393
|
Sufia.queue.should_receive(:push).with(s2).once
|
408
394
|
GenericFile.stub(:save).and_return({})
|
@@ -1,18 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'spec_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
16
2
|
|
17
3
|
describe MailboxController do
|
18
4
|
before(:each) do
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'spec_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
2
|
|
3
3
|
describe SingleUseLinkController do
|
4
4
|
before(:all) do
|
@@ -14,7 +14,7 @@ describe SingleUseLinkController do
|
|
14
14
|
@file2.save
|
15
15
|
end
|
16
16
|
after(:all) do
|
17
|
-
SingleUseLink.
|
17
|
+
SingleUseLink.delete_all
|
18
18
|
@user.delete
|
19
19
|
@file.delete
|
20
20
|
@file2.delete
|
@@ -70,13 +70,8 @@ describe SingleUseLinkController do
|
|
70
70
|
end
|
71
71
|
describe "retrieval links" do
|
72
72
|
before (:each) do
|
73
|
-
@
|
74
|
-
|
75
|
-
get 'generate_download', id:@file.pid
|
76
|
-
@dhash = assigns[:su].downloadKey
|
77
|
-
get 'generate_show', id:@file.pid
|
78
|
-
@shash= assigns[:su].downloadKey
|
79
|
-
sign_out @user
|
73
|
+
@dhash = SingleUseLink.create_download(@file.pid).downloadKey
|
74
|
+
@shash = SingleUseLink.create_show(@file.pid).downloadKey
|
80
75
|
end
|
81
76
|
before (:each) do
|
82
77
|
@user.delete
|
@@ -116,10 +111,8 @@ describe SingleUseLinkController do
|
|
116
111
|
get :show, id:@shash
|
117
112
|
response.should render_template('error/single_use_error')
|
118
113
|
end
|
119
|
-
it "and_return 404 on attempt to get show with download" do
|
120
|
-
get :show, id:@
|
121
|
-
response.should be_success
|
122
|
-
get :show, id:@shash
|
114
|
+
it "and_return 404 on attempt to get show path with download hash" do
|
115
|
+
get :show, id:@dhash
|
123
116
|
response.should render_template('error/single_use_error')
|
124
117
|
end
|
125
118
|
end
|
@@ -1,18 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'spec_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
16
2
|
|
17
3
|
describe UsersController do
|
18
4
|
before(:each) do
|
@@ -30,13 +16,13 @@ describe UsersController do
|
|
30
16
|
end
|
31
17
|
describe "#show" do
|
32
18
|
it "show the user profile if user exists" do
|
33
|
-
get :show,
|
19
|
+
get :show, id: @user.user_key
|
34
20
|
response.should be_success
|
35
21
|
response.should_not redirect_to(root_path)
|
36
22
|
flash[:alert].should be_nil
|
37
23
|
end
|
38
24
|
it "redirects to root if user does not exist" do
|
39
|
-
get :show,
|
25
|
+
get :show, id: 'johndoe666'
|
40
26
|
response.should redirect_to(root_path)
|
41
27
|
flash[:alert].should include ("User 'johndoe666' does not exist")
|
42
28
|
end
|
@@ -65,30 +51,30 @@ describe UsersController do
|
|
65
51
|
end
|
66
52
|
describe "#edit" do
|
67
53
|
it "show edit form when user edits own profile" do
|
68
|
-
get :edit,
|
54
|
+
get :edit, id: @user.user_key
|
69
55
|
response.should be_success
|
70
56
|
response.should render_template('users/edit')
|
71
57
|
flash[:alert].should be_nil
|
72
58
|
end
|
73
59
|
it "redirects to show profile when user attempts to edit another profile" do
|
74
|
-
get :edit,
|
60
|
+
get :edit, id: @another_user.user_key
|
75
61
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@another_user.user_key,'@.')))
|
76
62
|
flash[:alert].should include("Permission denied: cannot access this page.")
|
77
63
|
end
|
78
64
|
end
|
79
65
|
describe "#update" do
|
80
66
|
it "should not allow other users to update" do
|
81
|
-
post :update,
|
67
|
+
post :update, id: @another_user.user_key, user: { avatar: nil }
|
82
68
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@another_user.user_key,'@.')))
|
83
69
|
flash[:alert].should include("Permission denied: cannot access this page.")
|
84
70
|
end
|
85
71
|
it "should set an avatar and redirect to profile" do
|
86
72
|
@user.avatar.file?.should be_false
|
87
|
-
s1 =
|
73
|
+
s1 = double('one')
|
88
74
|
UserEditProfileEventJob.should_receive(:new).with(@user.user_key).and_return(s1)
|
89
75
|
Sufia.queue.should_receive(:push).with(s1).once
|
90
76
|
f = fixture_file_upload('/world.png', 'image/png')
|
91
|
-
post :update,
|
77
|
+
post :update, id: @user.user_key, user: { avatar: f }
|
92
78
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@user.user_key,'@.')))
|
93
79
|
flash[:notice].should include("Your profile has been updated")
|
94
80
|
User.find_by_user_key(@user.user_key).avatar.file?.should be_true
|
@@ -97,7 +83,7 @@ describe UsersController do
|
|
97
83
|
#Resque.should_receive(:enqueue).with(UserEditProfileEventJob, @user.user_key).never
|
98
84
|
Sufia.queue.should_receive(:push).never
|
99
85
|
f = fixture_file_upload('/image.jp2', 'image/jp2')
|
100
|
-
post :update,
|
86
|
+
post :update, id: @user.user_key, user: { avatar: f }
|
101
87
|
response.should redirect_to(@routes.url_helpers.edit_profile_path(URI.escape(@user.user_key,'@.')))
|
102
88
|
flash[:alert].should include("Avatar content type is invalid")
|
103
89
|
end
|
@@ -105,25 +91,25 @@ describe UsersController do
|
|
105
91
|
f = fixture_file_upload('/4-20.png', 'image/png')
|
106
92
|
#Resque.should_receive(:enqueue).with(UserEditProfileEventJob, @user.user_key).never
|
107
93
|
Sufia.queue.should_receive(:push).never
|
108
|
-
post :update,
|
94
|
+
post :update, id: @user.user_key, user: { avatar: f }
|
109
95
|
response.should redirect_to(@routes.url_helpers.edit_profile_path(URI.escape(@user.user_key,'@.')))
|
110
96
|
flash[:alert].should include("Avatar file size must be less than 2097152 Bytes")
|
111
97
|
end
|
112
98
|
it "should delete an avatar" do
|
113
|
-
s1 =
|
99
|
+
s1 = double('one')
|
114
100
|
UserEditProfileEventJob.should_receive(:new).with(@user.user_key).and_return(s1)
|
115
101
|
Sufia.queue.should_receive(:push).with(s1).once
|
116
|
-
post :update,
|
102
|
+
post :update, id: @user.user_key, delete_avatar: true
|
117
103
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@user.user_key,'@.')))
|
118
104
|
flash[:notice].should include("Your profile has been updated")
|
119
105
|
@user.avatar.file?.should be_false
|
120
106
|
end
|
121
107
|
it "should refresh directory attributes" do
|
122
|
-
s1 =
|
108
|
+
s1 = double('one')
|
123
109
|
UserEditProfileEventJob.should_receive(:new).with(@user.user_key).and_return(s1)
|
124
110
|
Sufia.queue.should_receive(:push).with(s1).once
|
125
111
|
User.any_instance.should_receive(:populate_attributes).once
|
126
|
-
post :update,
|
112
|
+
post :update, id: @user.user_key, update_directory: true
|
127
113
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@user.user_key,'@.')))
|
128
114
|
flash[:notice].should include("Your profile has been updated")
|
129
115
|
end
|
@@ -131,7 +117,7 @@ describe UsersController do
|
|
131
117
|
@user.twitter_handle.blank?.should be_true
|
132
118
|
@user.facebook_handle.blank?.should be_true
|
133
119
|
@user.googleplus_handle.blank?.should be_true
|
134
|
-
post :update,
|
120
|
+
post :update, id: @user.user_key, user: { twitter_handle: 'twit', facebook_handle: 'face', googleplus_handle: 'goo' }
|
135
121
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@user.user_key,'@.')))
|
136
122
|
flash[:notice].should include("Your profile has been updated")
|
137
123
|
u = User.find_by_user_key(@user.user_key)
|
@@ -146,7 +132,7 @@ describe UsersController do
|
|
146
132
|
file_id = f.pid.split(":").last
|
147
133
|
Trophy.create(:generic_file_id => file_id, :user_id => @user.id)
|
148
134
|
@user.trophy_ids.length.should == 1
|
149
|
-
post :update,
|
135
|
+
post :update, id: @user.user_key, 'remove_trophy_'+file_id=> 'yes'
|
150
136
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@user.user_key,'@.')))
|
151
137
|
flash[:notice].should include("Your profile has been updated")
|
152
138
|
@user.trophy_ids.length.should == 0
|
@@ -159,10 +145,10 @@ describe UsersController do
|
|
159
145
|
end
|
160
146
|
it "should follow another user if not already following, and log an event" do
|
161
147
|
@user.following?(@another_user).should be_false
|
162
|
-
s1 =
|
148
|
+
s1 = double('one')
|
163
149
|
UserFollowEventJob.should_receive(:new).with(@user.user_key, @another_user.user_key).and_return(s1)
|
164
150
|
Sufia.queue.should_receive(:push).with(s1).once
|
165
|
-
post :follow,
|
151
|
+
post :follow, id: @another_user.user_key
|
166
152
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@another_user.user_key,'@.')))
|
167
153
|
flash[:notice].should include("You are following #{@another_user.user_key}")
|
168
154
|
end
|
@@ -170,14 +156,14 @@ describe UsersController do
|
|
170
156
|
User.any_instance.stub(:following?).with(@another_user).and_return(true)
|
171
157
|
#Resque.should_receive(:enqueue).with(UserFollowEventJob, @user.user_key, @another_user.user_key).never
|
172
158
|
Sufia.queue.should_receive(:push).never
|
173
|
-
post :follow,
|
159
|
+
post :follow, id: @another_user.user_key
|
174
160
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@another_user.user_key,'@.')))
|
175
161
|
flash[:notice].should include("You are following #{@another_user.user_key}")
|
176
162
|
end
|
177
163
|
it "should redirect to profile if user attempts to self-follow and not log an event" do
|
178
164
|
#Resque.should_receive(:enqueue).with(UserFollowEventJob, @user.user_key, @user.user_key).never
|
179
165
|
Sufia.queue.should_receive(:push).never
|
180
|
-
post :follow,
|
166
|
+
post :follow, id: @user.user_key
|
181
167
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@user.user_key,'@.')))
|
182
168
|
flash[:alert].should include("You cannot follow or unfollow yourself")
|
183
169
|
end
|
@@ -185,10 +171,10 @@ describe UsersController do
|
|
185
171
|
describe "#unfollow" do
|
186
172
|
it "should unfollow another user if already following, and log an event" do
|
187
173
|
User.any_instance.stub(:following?).with(@another_user).and_return(true)
|
188
|
-
s1 =
|
174
|
+
s1 = double('one')
|
189
175
|
UserUnfollowEventJob.should_receive(:new).with(@user.user_key, @another_user.user_key).and_return(s1)
|
190
176
|
Sufia.queue.should_receive(:push).with(s1).once
|
191
|
-
post :unfollow,
|
177
|
+
post :unfollow, id: @another_user.user_key
|
192
178
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@another_user.user_key,'@.')))
|
193
179
|
flash[:notice].should include("You are no longer following #{@another_user.user_key}")
|
194
180
|
end
|
@@ -196,14 +182,14 @@ describe UsersController do
|
|
196
182
|
@user.stub(:following?).with(@another_user).and_return(false)
|
197
183
|
#Resque.should_receive(:enqueue).with(UserUnfollowEventJob, @user.user_key, @another_user.user_key).never
|
198
184
|
Sufia.queue.should_receive(:push).never
|
199
|
-
post :unfollow,
|
185
|
+
post :unfollow, id: @another_user.user_key
|
200
186
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@another_user.user_key,'@.')))
|
201
187
|
flash[:notice].should include("You are no longer following #{@another_user.user_key}")
|
202
188
|
end
|
203
189
|
it "should redirect to profile if user attempts to self-follow and not log an event" do
|
204
190
|
#Resque.should_receive(:enqueue).with(UserUnfollowEventJob, @user.user_key, @user.user_key).never
|
205
191
|
Sufia.queue.should_receive(:push).never
|
206
|
-
post :unfollow,
|
192
|
+
post :unfollow, id: @user.user_key
|
207
193
|
response.should redirect_to(@routes.url_helpers.profile_path(URI.escape(@user.user_key,'@.')))
|
208
194
|
flash[:alert].should include("You cannot follow or unfollow yourself")
|
209
195
|
end
|
@@ -219,18 +205,18 @@ describe UsersController do
|
|
219
205
|
@file.delete
|
220
206
|
end
|
221
207
|
it "should trophy a file" do
|
222
|
-
post :toggle_trophy, {
|
208
|
+
post :toggle_trophy, {id: @user.user_key, file_id: @file_id}
|
223
209
|
JSON.parse(response.body)['user_id'].should == @user.id
|
224
210
|
JSON.parse(response.body)['generic_file_id'].should == @file_id
|
225
211
|
end
|
226
212
|
it "should not trophy a file for a different user" do
|
227
|
-
post :toggle_trophy, {
|
213
|
+
post :toggle_trophy, {id: @another_user.user_key, file_id: @file_id}
|
228
214
|
response.should_not be_success
|
229
215
|
end
|
230
216
|
it "should not trophy a file with no edit privs" do
|
231
217
|
sign_out @user
|
232
218
|
sign_in @another_user
|
233
|
-
post :toggle_trophy, {
|
219
|
+
post :toggle_trophy, {id: @another_user.user_key, file_id: @file_id}
|
234
220
|
response.should_not be_success
|
235
221
|
end
|
236
222
|
end
|