Checksum is always the same via WebDAV #1384
This commit is contained in:
parent
a5d793b50f
commit
2c4f451de7
@ -603,16 +603,6 @@ module RedmineDmsf
|
||||
|
||||
if new_revision.save
|
||||
new_revision.copy_file_content request.body
|
||||
# Digest
|
||||
sha = Digest::SHA256.new
|
||||
if request.body.respond_to?(:read)
|
||||
while (buffer = request.body.read(8192))
|
||||
sha.update buffer
|
||||
end
|
||||
else
|
||||
sha.update request.body
|
||||
end
|
||||
new_revision.digest = sha.hexdigest
|
||||
new_revision.save
|
||||
# Notifications
|
||||
DmsfMailer.deliver_files_updated project, [f]
|
||||
|
||||
@ -48,7 +48,9 @@ class DmsfCreateDigest
|
||||
end
|
||||
|
||||
def dmsf_create_digests
|
||||
revisions = DmsfFileRevision.where(['digest IS NULL OR length(digest) < ?', @force_sha256 ? 64 : 32])
|
||||
revisions = DmsfFileRevision.where(['digest IS NULL OR digest = ? OR length(digest) < ?',
|
||||
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', # Wrong version when uploading a document via WebDAV #1385
|
||||
@force_sha256 ? 64 : 32])
|
||||
count = revisions.count
|
||||
n = 0
|
||||
revisions.each_with_index do |rev, i|
|
||||
|
||||
@ -339,4 +339,15 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
|
||||
end
|
||||
end
|
||||
|
||||
def test_put_digest
|
||||
assert_difference '@file1.dmsf_file_revisions.count', +1 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: '1234',
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :created
|
||||
end
|
||||
@file1.last_revision.reload
|
||||
sha = Digest::SHA256.file(@file1.last_revision.disk_file)
|
||||
assert_equal sha, @file1.last_revision.digest
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user