hydra-head 4.0.1 → 4.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitmodules +1 -0
- data/HISTORY.textile +6 -0
- data/app/assets/stylesheets/hydra/styles.css +1 -1
- data/app/controllers/user_sessions_controller.rb +1 -1
- data/app/helpers/hydra/application_helper_behavior.rb +0 -2
- data/app/helpers/hydra/blacklight_helper_behavior.rb +13 -16
- data/app/helpers/hydra/generic_content_objects_helper_behavior.rb +1 -6
- data/app/helpers/hydra/hydra_fedora_metadata_helper_behavior.rb +3 -1
- data/app/helpers/hydra/personalization_helper_behavior.rb +1 -1
- data/app/models/common_metadata_asset.rb +1 -1
- data/app/models/hydra/ability.rb +1 -1
- data/app/models/hydra/datastream/properties.rb +2 -2
- data/app/models/hydra/datastream/rights_metadata.rb +2 -2
- data/app/models/mods_asset.rb +3 -0
- data/app/models/superuser.rb +1 -1
- data/app/models/user_attribute.rb +2 -1
- data/app/models/uses_default_partials.rb +4 -3
- data/app/views/_user_util_links.html.erb +2 -2
- data/config/fedora.yml +1 -0
- data/config/solr.yml +1 -2
- data/hydra-head.gemspec +5 -4
- data/lib/generators/hydra/head_generator.rb +1 -1
- data/lib/generators/hydra/hyhead_fixtures_generator.rb +10 -10
- data/lib/hydra-head/engine.rb +0 -1
- data/lib/hydra-head/version.rb +1 -1
- data/lib/hydra/access_controls_enforcement.rb +1 -1
- data/lib/hydra/file_assets_helper.rb +3 -3
- data/lib/hydra/generic_content.rb +1 -1
- data/lib/hydra/generic_image.rb +2 -2
- data/lib/hydra/generic_user_attributes.rb +6 -4
- data/lib/hydra/model_mixins.rb +8 -3
- data/lib/hydra/model_mixins/rights_metadata.rb +357 -0
- data/lib/hydra/models/file_asset.rb +1 -1
- data/lib/hydra/mods_dataset.rb +5 -2
- data/lib/hydra/rights_metadata.rb +2 -2
- data/lib/hydra/superuser_attributes.rb +6 -5
- data/lib/mediashelf/active_fedora_helper.rb +1 -1
- data/lib/prev_next_links.rb +8 -3
- data/lib/user_attributes_loader.rb +22 -15
- data/lib/uva/mods_index_methods.rb +1 -1
- data/tasks/hydra-head.rake +4 -15
- data/tasks/hydra_jetty.rake +10 -1
- data/test_support/etc/Gemfile +13 -4
- data/test_support/features/support/paths.rb +5 -5
- data/test_support/spec/helpers/blacklight_helper_spec.rb +9 -5
- data/test_support/spec/helpers/generic_content_objects_helper_spec.rb +8 -0
- data/test_support/spec/helpers/hydra_fedora_metadata_helper_spec.rb +3 -0
- data/test_support/spec/helpers/hydra_helper_spec.rb +0 -1
- data/test_support/spec/models/generic_image_spec.rb +27 -30
- data/test_support/spec/models/user_spec.rb +9 -1
- data/test_support/spec/unit/rights_metadata_spec.rb +80 -0
- metadata +29 -111
- data/Gemfile.lock +0 -302
- data/test_support/etc/rvmrc +0 -32
- data/vendor/cache/RedCloth-4.2.9.gem +0 -0
- data/vendor/cache/actionmailer-3.2.3.gem +0 -0
- data/vendor/cache/actionpack-3.2.3.gem +0 -0
- data/vendor/cache/active-fedora-4.0.0.gem +0 -0
- data/vendor/cache/activemodel-3.2.3.gem +0 -0
- data/vendor/cache/activerecord-3.2.3.gem +0 -0
- data/vendor/cache/activeresource-3.2.3.gem +0 -0
- data/vendor/cache/activesupport-3.2.3.gem +0 -0
- data/vendor/cache/addressable-2.2.7.gem +0 -0
- data/vendor/cache/akami-1.0.0.gem +0 -0
- data/vendor/cache/arel-3.0.2.gem +0 -0
- data/vendor/cache/bcrypt-ruby-3.0.1.gem +0 -0
- data/vendor/cache/blacklight-3.3.2.gem +0 -0
- data/vendor/cache/block_helpers-0.3.3.gem +0 -0
- data/vendor/cache/builder-3.0.0.gem +0 -0
- data/vendor/cache/cancan-1.6.7.gem +0 -0
- data/vendor/cache/capybara-1.1.2.gem +0 -0
- data/vendor/cache/childprocess-0.3.1.gem +0 -0
- data/vendor/cache/chunky_png-1.2.5.gem +0 -0
- data/vendor/cache/compass-0.12.1.gem +0 -0
- data/vendor/cache/compass-rails-1.0.1.gem +0 -0
- data/vendor/cache/compass-susy-plugin-0.9.gem +0 -0
- data/vendor/cache/cucumber-1.1.9.gem +0 -0
- data/vendor/cache/cucumber-rails-1.3.0.gem +0 -0
- data/vendor/cache/daemons-1.1.8.gem +0 -0
- data/vendor/cache/devise-2.0.4.gem +0 -0
- data/vendor/cache/diff-lcs-1.1.3.gem +0 -0
- data/vendor/cache/equivalent-xml-0.2.9.gem +0 -0
- data/vendor/cache/erubis-2.7.0.gem +0 -0
- data/vendor/cache/factory_girl-2.6.4.gem +0 -0
- data/vendor/cache/fastercsv-1.5.4.gem +0 -0
- data/vendor/cache/ffi-1.0.11.gem +0 -0
- data/vendor/cache/fssm-0.2.9.gem +0 -0
- data/vendor/cache/gherkin-2.9.3.gem +0 -0
- data/vendor/cache/gyoku-0.4.4.gem +0 -0
- data/vendor/cache/hike-1.2.1.gem +0 -0
- data/vendor/cache/httpi-0.9.6.gem +0 -0
- data/vendor/cache/i18n-0.6.0.gem +0 -0
- data/vendor/cache/jettywrapper-1.2.1.gem +0 -0
- data/vendor/cache/journey-1.0.3.gem +0 -0
- data/vendor/cache/jquery-rails-2.0.2.gem +0 -0
- data/vendor/cache/json-1.6.6.gem +0 -0
- data/vendor/cache/kaminari-0.13.0.gem +0 -0
- data/vendor/cache/libwebsocket-0.1.3.gem +0 -0
- data/vendor/cache/logger-1.2.8.gem +0 -0
- data/vendor/cache/mail-2.4.4.gem +0 -0
- data/vendor/cache/marc-0.4.4.gem +0 -0
- data/vendor/cache/mediashelf-loggable-0.4.9.gem +0 -0
- data/vendor/cache/metaclass-0.0.1.gem +0 -0
- data/vendor/cache/mime-types-1.18.gem +0 -0
- data/vendor/cache/mocha-0.11.0.gem +0 -0
- data/vendor/cache/multi_json-1.3.2.gem +0 -0
- data/vendor/cache/multipart-post-1.1.2.gem +0 -0
- data/vendor/cache/nokogiri-1.5.2.gem +0 -0
- data/vendor/cache/nori-1.1.0.gem +0 -0
- data/vendor/cache/om-1.6.0.gem +0 -0
- data/vendor/cache/orm_adapter-0.0.7.gem +0 -0
- data/vendor/cache/polyglot-0.3.3.gem +0 -0
- data/vendor/cache/rack-1.4.1.gem +0 -0
- data/vendor/cache/rack-cache-1.2.gem +0 -0
- data/vendor/cache/rack-ssl-1.3.2.gem +0 -0
- data/vendor/cache/rack-test-0.6.1.gem +0 -0
- data/vendor/cache/rails-3.2.3.gem +0 -0
- data/vendor/cache/railties-3.2.3.gem +0 -0
- data/vendor/cache/rake-0.9.2.2.gem +0 -0
- data/vendor/cache/rdf-0.3.5.2.gem +0 -0
- data/vendor/cache/rdf-rdfxml-0.3.5.gem +0 -0
- data/vendor/cache/rdoc-3.12.gem +0 -0
- data/vendor/cache/rest-client-1.6.7.gem +0 -0
- data/vendor/cache/rsolr-1.0.8.gem +0 -0
- data/vendor/cache/rsolr-ext-1.0.3.gem +0 -0
- data/vendor/cache/rspec-2.9.0.gem +0 -0
- data/vendor/cache/rspec-core-2.9.0.gem +0 -0
- data/vendor/cache/rspec-expectations-2.9.1.gem +0 -0
- data/vendor/cache/rspec-mocks-2.9.0.gem +0 -0
- data/vendor/cache/rspec-rails-2.9.0.gem +0 -0
- data/vendor/cache/rubydora-0.5.8.gem +0 -0
- data/vendor/cache/rubyzip-0.9.7.gem +0 -0
- data/vendor/cache/sanitize-2.0.3.gem +0 -0
- data/vendor/cache/sass-3.1.16.gem +0 -0
- data/vendor/cache/sass-rails-3.2.5.gem +0 -0
- data/vendor/cache/savon-0.9.9.gem +0 -0
- data/vendor/cache/selenium-webdriver-2.21.2.gem +0 -0
- data/vendor/cache/solrizer-1.2.0.gem +0 -0
- data/vendor/cache/solrizer-fedora-2.0.0.gem +0 -0
- data/vendor/cache/sprockets-2.1.2.gem +0 -0
- data/vendor/cache/sqlite3-1.3.6.gem +0 -0
- data/vendor/cache/stomp-1.2.2.gem +0 -0
- data/vendor/cache/term-ansicolor-1.0.7.gem +0 -0
- data/vendor/cache/thor-0.14.6.gem +0 -0
- data/vendor/cache/tilt-1.3.3.gem +0 -0
- data/vendor/cache/treetop-1.4.10.gem +0 -0
- data/vendor/cache/tzinfo-0.3.33.gem +0 -0
- data/vendor/cache/unicode-0.4.2.gem +0 -0
- data/vendor/cache/warden-1.1.1.gem +0 -0
- data/vendor/cache/wasabi-2.1.0.gem +0 -0
- data/vendor/cache/xml-simple-1.1.1.gem +0 -0
- data/vendor/cache/xpath-0.1.4.gem +0 -0
- data/vendor/cache/yard-0.7.5.gem +0 -0
data/lib/prev_next_links.rb
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
# @deprecated no longer used. Will be removed no later than release 6.x
|
2
2
|
# Custom pagination renderer
|
3
3
|
# Call using will_paginate(@results, :renderer => 'PrevNextLinks')
|
4
|
+
require 'deprecation'
|
4
5
|
class PrevNextLinks < WillPaginate::LinkRenderer
|
6
|
+
extend Deprecation
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
self.deprecation_horizon = 'hydra-head 5.x'
|
9
|
+
|
10
|
+
def initialize(app)
|
11
|
+
Deprecation.warn("PrevNextLinks has been deprecated; it will be removed from HydraHead no later than release 6.")
|
12
|
+
@app = app
|
9
13
|
end
|
10
14
|
|
11
15
|
def to_html
|
@@ -24,5 +28,6 @@ class PrevNextLinks < WillPaginate::LinkRenderer
|
|
24
28
|
html = links.join(@options[:separator])
|
25
29
|
@options[:container] ? @template.content_tag(:div, html, html_attributes) : html
|
26
30
|
end
|
31
|
+
deprecation_deprecate :to_html
|
27
32
|
|
28
33
|
end
|
@@ -1,19 +1,26 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
# @deprecated This code is unused / no longer useful. It will be removed no later than release 6.x
|
2
|
+
# This middleware is for use in development mode, when User
|
3
|
+
# is removed/reloaded each request. This makes sure modules
|
4
|
+
# stay loaded.
|
5
|
+
require 'deprecation'
|
6
|
+
class UserAttributesLoader
|
7
|
+
extend Deprecation
|
8
|
+
|
9
|
+
self.deprecation_horizon = 'hydra-head 5.x'
|
10
|
+
|
11
|
+
def initialize(app)
|
12
|
+
Deprecation.warn("UserAttributesLoader has been deprecated; it will be removed from HydraHead no later than release 6.")
|
13
|
+
@app = app
|
14
|
+
end
|
10
15
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
+
def call(env)
|
17
|
+
User.class_eval do
|
18
|
+
unless ancestors.include?(Hydra::GenericUserAttributes)
|
19
|
+
include Hydra::GenericUserAttributes
|
16
20
|
end
|
17
|
-
@app.call(env)
|
18
21
|
end
|
22
|
+
@app.call(env)
|
19
23
|
end
|
24
|
+
deprecation_deprecate :call
|
25
|
+
|
26
|
+
end
|
data/tasks/hydra-head.rake
CHANGED
@@ -98,7 +98,7 @@ namespace :hyhead do
|
|
98
98
|
|
99
99
|
### Don't call this directly, use hyhead:cucumber
|
100
100
|
Cucumber::Rake::Task.new(:cmd) do |t|
|
101
|
-
t.cucumber_opts = "../../test_support/features --format
|
101
|
+
t.cucumber_opts = "../../test_support/features --format progress"
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
@@ -118,15 +118,11 @@ namespace :hyhead do
|
|
118
118
|
|
119
119
|
FileUtils.mkdir_p(path)
|
120
120
|
|
121
|
-
puts "Copying over .rvmrc file"
|
122
|
-
FileUtils.cp("./test_support/etc/rvmrc",File.join(path,".rvmrc"))
|
123
|
-
FileUtils.cd("tmp")
|
124
|
-
system("source ./test_app/.rvmrc")
|
125
|
-
|
126
121
|
puts "Installing rails, bundler and devise"
|
127
|
-
%x[gem install --no-rdoc --no-ri 'rails' -v "<
|
122
|
+
%x[gem install --no-rdoc --no-ri 'rails' -v "<4"]
|
128
123
|
%x[gem install --no-rdoc --no-ri 'bundler']
|
129
124
|
|
125
|
+
FileUtils.cd('tmp')
|
130
126
|
puts "Generating new rails app"
|
131
127
|
%x[rails new test_app]
|
132
128
|
errors << 'Error generating new rails test app' unless $?.success?
|
@@ -137,9 +133,6 @@ namespace :hyhead do
|
|
137
133
|
puts "Copying Gemfile from test_support/etc"
|
138
134
|
FileUtils.cp('../../test_support/etc/Gemfile','./Gemfile')
|
139
135
|
|
140
|
-
puts "Creating local vendor/cache dir and copying gems from hyhead-rails3 gemset"
|
141
|
-
FileUtils.cp_r(File.join('..','..','vendor','cache'), './vendor')
|
142
|
-
|
143
136
|
puts "Copying fixtures into test app spec/fixtures directory"
|
144
137
|
FileUtils.mkdir_p( File.join('.','spec') )
|
145
138
|
FileUtils.cp_r(File.join('..','..','test_support','fixtures'), File.join('.','spec','fixtures'))
|
@@ -158,7 +151,7 @@ namespace :hyhead do
|
|
158
151
|
errors << 'Error generating default blacklight install' unless $?.success?
|
159
152
|
|
160
153
|
puts "generating default hydra-head install"
|
161
|
-
puts %x[rails generate hydra:head -
|
154
|
+
puts %x[rails generate hydra:head -f] # using -f to force overwriting of solr.yml
|
162
155
|
errors << 'Error generating default hydra-head install' unless $?.success?
|
163
156
|
|
164
157
|
# set log_level to :warn in the test app's test environment. (:debug is too verbose)
|
@@ -168,12 +161,8 @@ namespace :hyhead do
|
|
168
161
|
puts "Running rake db:migrate"
|
169
162
|
%x[rake db:migrate]
|
170
163
|
raise "Errors: #{errors.join("; ")}" unless errors.empty?
|
171
|
-
|
172
|
-
|
173
164
|
|
174
165
|
FileUtils.cd('../../')
|
175
|
-
|
176
|
-
|
177
166
|
end
|
178
167
|
|
179
168
|
task :set_test_host_path do
|
data/tasks/hydra_jetty.rake
CHANGED
@@ -6,7 +6,11 @@ namespace :hydra do
|
|
6
6
|
namespace :jetty do
|
7
7
|
desc "Copies the default Solr & Fedora configs into the bundled Hydra Testing Server"
|
8
8
|
task :config do
|
9
|
+
Rake::Task["hydra:jetty:reset"].reenable
|
10
|
+
Rake::Task["hydra:jetty:reset"].invoke
|
11
|
+
Rake::Task["hydra:jetty:config_fedora"].reenable
|
9
12
|
Rake::Task["hydra:jetty:config_fedora"].invoke
|
13
|
+
Rake::Task["hydra:jetty:config_solr"].reenable
|
10
14
|
Rake::Task["hydra:jetty:config_solr"].invoke
|
11
15
|
end
|
12
16
|
|
@@ -28,7 +32,7 @@ namespace :hydra do
|
|
28
32
|
app_root = File.join(File.dirname(__FILE__),"..")
|
29
33
|
end
|
30
34
|
|
31
|
-
fcfg = File.join(app_root,"fedora_conf","conf","fedora.fcfg")
|
35
|
+
fcfg = File.join(app_root,"fedora_conf","conf","test","fedora.fcfg")
|
32
36
|
puts "PWD:: #{FileUtils.pwd}"
|
33
37
|
if File.exists?(fcfg)
|
34
38
|
puts "copying over fedora.fcfg"
|
@@ -41,5 +45,10 @@ namespace :hydra do
|
|
41
45
|
desc "Copies the default SOLR config files and starts up the fedora instance."
|
42
46
|
task :load => [:config, 'jetty:start']
|
43
47
|
|
48
|
+
desc "return development jetty to its pristine state, as pulled from git"
|
49
|
+
task :reset => ['jetty:stop'] do
|
50
|
+
system("cd jetty && git reset --hard HEAD && git clean -dfx & cd ..")
|
51
|
+
sleep 2
|
52
|
+
end
|
44
53
|
end
|
45
54
|
end
|
data/test_support/etc/Gemfile
CHANGED
@@ -5,11 +5,20 @@ source 'http://rubygems.org'
|
|
5
5
|
|
6
6
|
gem "rails", '~> 3.2.2'
|
7
7
|
|
8
|
-
gem '
|
8
|
+
gem 'blacklight', '~>3.4.1'
|
9
9
|
|
10
|
-
|
10
|
+
platforms :jruby do
|
11
|
+
gem 'jruby-openssl'
|
12
|
+
gem 'activerecord-jdbcsqlite3-adapter'
|
13
|
+
gem 'jdbc-sqlite3'
|
14
|
+
gem 'therubyrhino'
|
15
|
+
end
|
11
16
|
|
12
|
-
|
17
|
+
platforms :ruby do
|
18
|
+
gem 'sqlite3'
|
19
|
+
gem 'execjs'
|
20
|
+
gem 'therubyracer'
|
21
|
+
end
|
13
22
|
|
14
23
|
gem 'hydra-head', :path => '../../'
|
15
24
|
gem 'devise'
|
@@ -23,7 +32,7 @@ group :development, :test do
|
|
23
32
|
gem 'capybara'
|
24
33
|
gem 'factory_girl', '~> 2.6.0'
|
25
34
|
gem 'rest-client'
|
26
|
-
gem 'solrizer-fedora', '>=1.
|
35
|
+
gem 'solrizer-fedora', '>=2.1.0'
|
27
36
|
end
|
28
37
|
|
29
38
|
# Gems used only for assets and not required
|
@@ -12,7 +12,7 @@ module NavigationHelpers
|
|
12
12
|
when /the home\s?page/
|
13
13
|
'/'
|
14
14
|
when /the search page/
|
15
|
-
'/
|
15
|
+
'/'
|
16
16
|
when /logout/
|
17
17
|
destroy_user_session_path
|
18
18
|
when /my account info/
|
@@ -20,9 +20,9 @@ module NavigationHelpers
|
|
20
20
|
when /the base search page/
|
21
21
|
'/catalog?q=&search_field=search&action=index&controller=catalog&commit=search'
|
22
22
|
when /the document page for id (.+)/
|
23
|
-
catalog_path(
|
23
|
+
catalog_path($1)
|
24
24
|
when /the edit page for id (.+)/
|
25
|
-
edit_catalog_path(
|
25
|
+
edit_catalog_path($1)
|
26
26
|
when /the catalog index page/
|
27
27
|
catalog_index_path
|
28
28
|
# Add more mappings here.
|
@@ -32,9 +32,9 @@ module NavigationHelpers
|
|
32
32
|
# user_profile_path(User.find_by_login($1))
|
33
33
|
|
34
34
|
when /the edit document page for (.*)$/i
|
35
|
-
edit_catalog_path(
|
35
|
+
edit_catalog_path($1)
|
36
36
|
when /the show document page for (.*)$/i
|
37
|
-
catalog_path(
|
37
|
+
catalog_path($1)
|
38
38
|
when /the delete confirmation page for (.*)$/i
|
39
39
|
delete_catalog_path($1)
|
40
40
|
|
@@ -1,15 +1,12 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
2
|
|
3
3
|
describe BlacklightHelper do
|
4
|
-
it "should include HydraHelper" do
|
5
|
-
BlacklightHelper.included_modules.should include(HydraHelper)
|
6
|
-
end
|
7
4
|
|
8
5
|
describe "Overridden blacklight methods" do
|
9
6
|
describe "document_partial_name" do
|
10
7
|
|
11
|
-
|
12
|
-
|
8
|
+
it "Should lop off everything before the first colin after the slash" do
|
9
|
+
@config = Blacklight::Configuration.new.configure do |config|
|
13
10
|
config.show.display_type = 'has_model_s'
|
14
11
|
end
|
15
12
|
helper.stubs(:blacklight_config).returns(@config)
|
@@ -41,6 +38,13 @@ describe BlacklightHelper do
|
|
41
38
|
|
42
39
|
describe "SALT methods" do
|
43
40
|
describe "get_data_with_linked_label" do
|
41
|
+
before(:all) do
|
42
|
+
@orig_deprecation_behavior = Hydra::BlacklightHelperBehavior.deprecation_behavior
|
43
|
+
Hydra::BlacklightHelperBehavior.deprecation_behavior = :silence
|
44
|
+
end
|
45
|
+
after(:all) do
|
46
|
+
Hydra::BlacklightHelperBehavior.deprecation_behavior = @orig_deprecation_behavior
|
47
|
+
end
|
44
48
|
before(:each) do
|
45
49
|
@doc = {"field"=>["Item1","Item2","Item3"]}
|
46
50
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe GenericContentObjectsHelper do
|
4
|
+
it "should have a url for a pid" do
|
5
|
+
helper.datastream_disseminator_url('hydra:123', 'sampleDs').should match /http:\/\/127.0.0.1:898\d\/fedora-test\/get\/hydra:123\/sampleDs/
|
6
|
+
end
|
7
|
+
|
8
|
+
end
|
@@ -106,6 +106,9 @@ describe HydraFedoraMetadataHelper do
|
|
106
106
|
generated_html.should have_selector "textarea#subject_1.editable-edit.edit", :value => "topic2"
|
107
107
|
generated_html.should have_selector "a.destructive.field"
|
108
108
|
end
|
109
|
+
it "should make the text area required when the flag is set" do
|
110
|
+
helper.fedora_text_area(@resource, "simple_ds", "subject", :required => true).should have_selector "textarea#subject_0[required]"
|
111
|
+
end
|
109
112
|
it "should render an empty control if the field has no values" do
|
110
113
|
helper.fedora_text_area(@resource,"empty_ds","something").should have_selector "textarea#something_0.editable-edit.edit", :value => ""
|
111
114
|
end
|
@@ -3,61 +3,58 @@ require "active_fedora"
|
|
3
3
|
|
4
4
|
describe GenericImage do
|
5
5
|
|
6
|
-
|
7
|
-
# Fedora::Repository.stubs(:instance).returns(stub_everything())
|
8
|
-
@hydra_image = GenericImage.new
|
9
|
-
|
10
|
-
end
|
6
|
+
subject { GenericImage.new(:pid=>'test:pid')}
|
11
7
|
|
12
8
|
it "Should be a kind of ActiveFedora::Base" do
|
13
|
-
|
9
|
+
subject.should be_kind_of(ActiveFedora::Base)
|
14
10
|
end
|
15
11
|
|
16
12
|
it "should include Hydra Model Methods" do
|
17
|
-
|
18
|
-
|
13
|
+
subject.class.included_modules.should include(Hydra::ModelMethods)
|
14
|
+
subject.should respond_to(:apply_depositor_metadata)
|
19
15
|
end
|
20
16
|
|
21
17
|
it "should include Hydra Generic Image Methods" do
|
22
|
-
|
23
|
-
|
18
|
+
subject.class.included_modules.should include(Hydra::GenericImage)
|
19
|
+
subject.should respond_to(:derivation_options)
|
24
20
|
end
|
25
21
|
|
26
22
|
it "should have accessors for its default datastreams of content and original" do
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
23
|
+
subject.should respond_to(:has_content?)
|
24
|
+
subject.should respond_to(:content)
|
25
|
+
subject.should respond_to(:content=)
|
26
|
+
subject.should respond_to(:has_original?)
|
27
|
+
subject.should respond_to(:original)
|
28
|
+
subject.should respond_to(:original=)
|
33
29
|
end
|
34
30
|
|
35
31
|
it "should have accessors for its default datastreams of max, screen and thumbnail" do
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
32
|
+
subject.should respond_to(:has_max?)
|
33
|
+
subject.should respond_to(:max)
|
34
|
+
subject.should respond_to(:max=)
|
35
|
+
subject.should respond_to(:has_screen?)
|
36
|
+
subject.should respond_to(:screen)
|
37
|
+
subject.should respond_to(:screen=)
|
38
|
+
subject.should respond_to(:has_thumbnail?)
|
39
|
+
subject.should respond_to(:thumbnail)
|
40
|
+
subject.should respond_to(:thumbnail=)
|
45
41
|
end
|
46
42
|
|
47
43
|
it "should create a max datastream when setting max value to image file" do
|
48
44
|
f = File.new(File.join( File.dirname(__FILE__), "../../fixtures/image.jp2" ))
|
49
|
-
|
45
|
+
subject.max = f
|
50
46
|
end
|
51
47
|
|
52
48
|
describe '#content=' do
|
53
|
-
it "should create a content datastream when given an image file"
|
54
|
-
end
|
49
|
+
it "should create a content datastream when given an image file"
|
55
50
|
end
|
56
51
|
|
57
52
|
describe '#derive_all' do
|
58
|
-
it "should create a max, screen and thumbnail file"
|
59
|
-
end
|
53
|
+
it "should create a max, screen and thumbnail file"
|
60
54
|
end
|
61
55
|
|
56
|
+
its(:datastream_url) { should match /http:\/\/127.0.0.1:\d{2,5}\/fedora-test\/objects\/test:pid\/datastreams\/content\/content$/ }
|
57
|
+
its(:admin_site) { match /http:\/\/127.0.0.1:\d{2,5}\// }
|
58
|
+
|
62
59
|
|
63
60
|
end
|
@@ -2,8 +2,16 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
2
|
require "active_fedora"
|
3
3
|
|
4
4
|
describe User do
|
5
|
-
|
5
|
+
|
6
6
|
describe "superuser" do
|
7
|
+
before(:all) do
|
8
|
+
@orig_deprecation_behavior = Hydra::SuperuserAttributes.deprecation_behavior
|
9
|
+
Hydra::SuperuserAttributes.deprecation_behavior = :silence
|
10
|
+
end
|
11
|
+
after(:all) do
|
12
|
+
Hydra::SuperuserAttributes.deprecation_behavior = @orig_deprecation_behavior
|
13
|
+
end
|
14
|
+
|
7
15
|
before(:each) do
|
8
16
|
@user = User.create(:email=> "testuser@example.com", :password=> "password", :password_confirmation => "password")
|
9
17
|
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Hydra::ModelMixins::RightsMetadata do
|
4
|
+
subject { ModsAsset.new }
|
5
|
+
it "should have a set of permissions" do
|
6
|
+
subject.discover_groups=['group1', 'group2']
|
7
|
+
subject.edit_users=['user1']
|
8
|
+
subject.read_users=['user2', 'user3']
|
9
|
+
subject.permissions.should include({:type=>"group", :access=>"discover", :name=>"group1"},
|
10
|
+
{:type=>"group", :access=>"discover", :name=>"group2"},
|
11
|
+
{:type=>"user", :access=>"read", :name=>"user2"},
|
12
|
+
{:type=>"user", :access=>"read", :name=>"user3"},
|
13
|
+
{:type=>"user", :access=>"edit", :name=>"user1"})
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "updating permissions" do
|
17
|
+
it "should create new group permissions" do
|
18
|
+
subject.permissions = [{:name=>'group1', :access=>'discover', :type=>'group'}]
|
19
|
+
subject.permissions.should == [{:type=>'group', :access=>'discover', :name=>'group1'}]
|
20
|
+
end
|
21
|
+
it "should create new user permissions" do
|
22
|
+
subject.permissions = [{:name=>'user1', :access=>'discover', :type=>'user'}]
|
23
|
+
subject.permissions.should == [{:type=>'user', :access=>'discover', :name=>'user1'}]
|
24
|
+
end
|
25
|
+
it "should not replace existing groups" do
|
26
|
+
subject.permissions = [{:name=>'group1', :access=>'discover', :type=>'group'}]
|
27
|
+
subject.permissions = [{:name=>'group2', :access=>'discover', :type=>'group'}]
|
28
|
+
subject.permissions.should == [{:type=>'group', :access=>'discover', :name=>'group1'},
|
29
|
+
{:type=>'group', :access=>'discover', :name=>'group2'}]
|
30
|
+
end
|
31
|
+
it "should not replace existing users" do
|
32
|
+
subject.permissions = [{:name=>'user1', :access=>'discover', :type=>'user'}]
|
33
|
+
subject.permissions = [{:name=>'user2', :access=>'discover', :type=>'user'}]
|
34
|
+
subject.permissions.should == [{:type=>'user', :access=>'discover', :name=>'user1'},
|
35
|
+
{:type=>'user', :access=>'discover', :name=>'user2'}]
|
36
|
+
end
|
37
|
+
it "should update permissions on existing users" do
|
38
|
+
subject.permissions = [{:name=>'user1', :access=>'discover', :type=>'user'}]
|
39
|
+
subject.permissions = [{:name=>'user1', :access=>'edit', :type=>'user'}]
|
40
|
+
subject.permissions.should == [{:type=>'user', :access=>'edit', :name=>'user1'}]
|
41
|
+
end
|
42
|
+
it "should update permissions on existing groups" do
|
43
|
+
subject.permissions = [{:name=>'group1', :access=>'discover', :type=>'group'}]
|
44
|
+
subject.permissions = [{:name=>'group1', :access=>'edit', :type=>'group'}]
|
45
|
+
subject.permissions.should == [{:type=>'group', :access=>'edit', :name=>'group1'}]
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
context "with rightsMetadata" do
|
51
|
+
before do
|
52
|
+
subject.rightsMetadata.update_permissions("person"=>{"person1"=>"read","person2"=>"discover"}, "group"=>{'group-6' => 'read', "group-7"=>'read', 'group-8'=>'edit'})
|
53
|
+
subject.save
|
54
|
+
end
|
55
|
+
it "should have read groups accessor" do
|
56
|
+
subject.read_groups.should == ['group-6', 'group-7']
|
57
|
+
end
|
58
|
+
it "should have read groups string accessor" do
|
59
|
+
subject.read_groups_string.should == 'group-6, group-7'
|
60
|
+
end
|
61
|
+
it "should have read groups writer" do
|
62
|
+
subject.read_groups = ['group-2', 'group-3']
|
63
|
+
subject.rightsMetadata.groups.should == {'group-2' => 'read', 'group-3'=>'read', 'group-8' => 'edit'}
|
64
|
+
subject.rightsMetadata.individuals.should == {"person1"=>"read","person2"=>"discover"}
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should have read groups string writer" do
|
68
|
+
subject.read_groups_string = 'umg/up.dlt.staff, group-3'
|
69
|
+
subject.rightsMetadata.groups.should == {'umg/up.dlt.staff' => 'read', 'group-3'=>'read', 'group-8' => 'edit'}
|
70
|
+
subject.rightsMetadata.individuals.should == {"person1"=>"read","person2"=>"discover"}
|
71
|
+
end
|
72
|
+
it "should only revoke eligible groups" do
|
73
|
+
subject.set_read_groups(['group-2', 'group-3'], ['group-6'])
|
74
|
+
# 'group-7' is not eligible to be revoked
|
75
|
+
subject.rightsMetadata.groups.should == {'group-2' => 'read', 'group-3'=>'read', 'group-7' => 'read', 'group-8' => 'edit'}
|
76
|
+
subject.rightsMetadata.individuals.should == {"person1"=>"read","person2"=>"discover"}
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|