[". d41d8cd98f00b204e9800998ecf8427e 0:34:foo.txt\n", 1, 34],
[". d41d8cd98f00b204e9800998ecf8427e 0:34:foo.txt 0:30:foo.txt 0:30:foo1.txt 0:30:foo2.txt 0:30:foo3.txt 0:30:foo4.txt\n", 5, 184],
[". d41d8cd98f00b204e9800998ecf8427e 0:0:.\n", 0, 0]
- ].each do |t|
- test "file stats on create collection with #{t[0]}" do
+ ].each do |manifest, count, size|
+ test "file stats on create collection with #{manifest}" do
act_as_system_user do
- c = Collection.create(manifest_text: t[0])
- assert_equal t[1], c.file_count
- assert_equal t[2], c.file_size_total
+ c = Collection.create(manifest_text: manifest)
+ assert_equal count, c.file_count
+ assert_equal size, c.file_size_total
end
end
end
test "file stats cannot be changed unless through manifest change" do
act_as_system_user do
+ # Direct changes to file stats should be ignored
c = Collection.create(manifest_text: ". d41d8cd98f00b204e9800998ecf8427e 0:34:foo.txt\n")
- assert c.valid?
c.file_count = 6
c.file_size_total = 30
- assert !c.valid?
- c.reload
+ assert c.valid?
assert_equal 1, c.file_count
assert_equal 34, c.file_size_total
- c.update(manifest_text: ". d41d8cd98f00b204e9800998ecf8427e 0:10:foo.txt 0:10:foo2.txt\n")
+
+ # File stats specified on create should be ignored and overwritten
+ c = Collection.create(manifest_text: ". d41d8cd98f00b204e9800998ecf8427e 0:34:foo.txt\n", file_count: 10, file_size_total: 10)
+ assert c.valid?
+ assert_equal 1, c.file_count
+ assert_equal 34, c.file_size_total
+
+ # Updating the manifest should change file stats
+ c.update_attributes(manifest_text: ". d41d8cd98f00b204e9800998ecf8427e 0:34:foo.txt 0:34:foo2.txt\n")
assert c.valid?
- c.reload
assert_equal 2, c.file_count
- assert_equal 20, c.file_size_total
+ assert_equal 68, c.file_size_total
+
+ # Updating file stats and the manifest should use manifest values
+ c.update_attributes(manifest_text: ". d41d8cd98f00b204e9800998ecf8427e 0:34:foo.txt\n", file_count:10, file_size_total: 10)
+ assert c.valid?
+ assert_equal 1, c.file_count
+ assert_equal 34, c.file_size_total
+
+ # Updating just the file stats should be ignored
+ c.update_attributes(file_count: 10, file_size_total: 10)
+ assert c.valid?
+ assert_equal 1, c.file_count
+ assert_equal 34, c.file_size_total
end
end
end
test "auto-create version after idle setting" do
- Rails.configuration.collection_versioning = true
- Rails.configuration.preserve_version_if_idle = 600 # 10 minutes
+ Rails.configuration.Collections["CollectionVersioning"] = true
+ Rails.configuration.Collections["PreserveVersionIfIdle"] = 600 # 10 minutes
act_as_user users(:active) do
# Set up initial collection
c = create_collection 'foo', Encoding::US_ASCII
end
test "preserve_version=false assignment is ignored while being true and not producing a new version" do
- Rails.configuration.collection_versioning = true
- Rails.configuration.preserve_version_if_idle = 3600
+ Rails.configuration.Collections["CollectionVersioning"] = true
+ Rails.configuration.Collections["PreserveVersionIfIdle"] = 3600
act_as_user users(:active) do
# Set up initial collection
c = create_collection 'foo', Encoding::US_ASCII
end
test "uuid updates on current version make older versions update their pointers" do
- Rails.configuration.collection_versioning = true
- Rails.configuration.preserve_version_if_idle = 0
+ Rails.configuration.Collections["CollectionVersioning"] = true
+ Rails.configuration.Collections["PreserveVersionIfIdle"] = 0
act_as_system_user do
# Set up initial collection
c = create_collection 'foo', Encoding::US_ASCII
end
test "older versions' modified_at indicate when they're created" do
- Rails.configuration.collection_versioning = true
- Rails.configuration.preserve_version_if_idle = 0
+ Rails.configuration.Collections["CollectionVersioning"] = true
+ Rails.configuration.Collections["PreserveVersionIfIdle"] = 0
act_as_user users(:active) do
# Set up initial collection
c = create_collection 'foo', Encoding::US_ASCII
end
test "past versions should not be directly updatable" do
- Rails.configuration.collection_versioning = true
- Rails.configuration.preserve_version_if_idle = 0
+ Rails.configuration.Collections["CollectionVersioning"] = true
+ Rails.configuration.Collections["PreserveVersionIfIdle"] = 0
act_as_system_user do
# Set up initial collection
c = create_collection 'foo', Encoding::US_ASCII
assert c_old.invalid?
c_old.reload
# Now disable collection versioning, it should behave the same way
- Rails.configuration.collection_versioning = false
+ Rails.configuration.Collections["CollectionVersioning"] = false
c_old.name = 'this was foo'
assert c_old.invalid?
end
['is_trashed', true, false],
].each do |attr, first_val, second_val|
test "sync #{attr} with older versions" do
- Rails.configuration.collection_versioning = true
- Rails.configuration.preserve_version_if_idle = 0
+ Rails.configuration.Collections["CollectionVersioning"] = true
+ Rails.configuration.Collections["PreserveVersionIfIdle"] = 0
act_as_system_user do
# Set up initial collection
c = create_collection 'foo', Encoding::US_ASCII
[false, 'replication_desired', 5, false],
].each do |versioning, attr, val, new_version_expected|
test "update #{attr} with versioning #{versioning ? '' : 'not '}enabled should #{new_version_expected ? '' : 'not '}create a new version" do
- Rails.configuration.collection_versioning = versioning
- Rails.configuration.preserve_version_if_idle = 0
+ Rails.configuration.Collections["CollectionVersioning"] = versioning
+ Rails.configuration.Collections["PreserveVersionIfIdle"] = 0
act_as_user users(:active) do
# Create initial collection
c = create_collection 'foo', Encoding::US_ASCII
end
test 'current_version_uuid is ignored during update' do
- Rails.configuration.collection_versioning = true
- Rails.configuration.preserve_version_if_idle = 0
+ Rails.configuration.Collections["CollectionVersioning"] = true
+ Rails.configuration.Collections["PreserveVersionIfIdle"] = 0
act_as_user users(:active) do
# Create 1st collection
col1 = create_collection 'foo', Encoding::US_ASCII
end
test 'with versioning enabled, simultaneous updates increment version correctly' do
- Rails.configuration.collection_versioning = true
- Rails.configuration.preserve_version_if_idle = 0
+ Rails.configuration.Collections["CollectionVersioning"] = true
+ Rails.configuration.Collections["PreserveVersionIfIdle"] = 0
act_as_user users(:active) do
# Create initial collection
col = create_collection 'foo', Encoding::US_ASCII
[0, 2, 4, nil].each do |ask|
test "set replication_desired to #{ask.inspect}" do
- Rails.configuration.default_collection_replication = 2
+ Rails.configuration.Collections["DefaultReplication"] = 2
act_as_user users(:active) do
c = collections(:replication_undesired_unconfirmed)
c.update_attributes replication_desired: ask
name: 'foo',
trash_at: db_current_time + 1.years)
sig_exp = /\+A[0-9a-f]{40}\@([0-9]+)/.match(c.signed_manifest_text)[1].to_i
- expect_max_sig_exp = db_current_time.to_i + Rails.configuration.blob_signature_ttl
+ expect_max_sig_exp = db_current_time.to_i + Rails.configuration.Collections["BlobSigningTTL"]
assert_operator c.trash_at.to_i, :>, expect_max_sig_exp
assert_operator sig_exp.to_i, :<=, expect_max_sig_exp
end
test test_name do
act_as_user users(:active) do
min_exp = (db_current_time +
- Rails.configuration.blob_signature_ttl.seconds)
+ Rails.configuration.Collections["BlobSigningTTL"].seconds)
if fixture_name == :expired_collection
# Fixture-finder shorthand doesn't find trashed collections
# because they're not in the default scope.
end
test 'default trash interval > blob signature ttl' do
- Rails.configuration.default_trash_lifetime = 86400 * 21 # 3 weeks
+ Rails.configuration.Collections["DefaultTrashLifetime"] = 86400 * 21 # 3 weeks
start = db_current_time
act_as_user users(:active) do
c = Collection.create!(manifest_text: '', name: 'foo')