ensure filename is sent by store_for_attachment
test plan: - with and without inst-fs enabled, - ensure both sis import upload paths work (both a multipart upload and a raw post) flag=none fixes FOO-4400 Change-Id: I2e868989ec4552cc53ed980c24b22578cada6f0c Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/344058 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Xander Moffatt <xmoffatt@instructure.com> QA-Review: Xander Moffatt <xmoffatt@instructure.com> Product-Review: Xander Moffatt <xmoffatt@instructure.com>
This commit is contained in:
parent
81f0da52db
commit
119052fd73
|
@ -20,16 +20,16 @@
|
|||
class Attachments::Storage
|
||||
def self.store_for_attachment(attachment, data)
|
||||
if InstFS.enabled?
|
||||
attachment.filename ||= detect_filename(data)
|
||||
instfs_uuid = InstFS.direct_upload(
|
||||
file_object: data,
|
||||
file_name: attachment.display_name
|
||||
file_name: attachment.display_name.presence || attachment.filename || "attachment"
|
||||
)
|
||||
attachment.instfs_uuid = instfs_uuid
|
||||
attachment.md5 = Digest::SHA2.new(512).file(data).hexdigest if digest_file? data
|
||||
|
||||
# populate attachment fields if they were not already set
|
||||
attachment.size ||= data.size
|
||||
attachment.filename ||= detect_filename(data)
|
||||
attachment.content_type ||= attachment.detect_mimetype(data)
|
||||
attachment.workflow_state = "processed"
|
||||
else
|
||||
|
|
|
@ -63,7 +63,7 @@ class SisBatch < ActiveRecord::Base
|
|||
# If you are going to change any settings on the batch before it's processed,
|
||||
# do it in the block passed into this method, so that the changes are saved
|
||||
# before the batch is marked created and eligible for processing.
|
||||
def self.create_with_attachment(account, import_type, attachment, user = nil)
|
||||
def self.create_with_attachment(account, import_type, file_obj, user = nil)
|
||||
account.shard.activate do
|
||||
batch = SisBatch.new
|
||||
batch.account = account
|
||||
|
@ -73,7 +73,7 @@ class SisBatch < ActiveRecord::Base
|
|||
batch.user = user
|
||||
batch.save
|
||||
|
||||
att = Attachment.create_data_attachment(batch, attachment)
|
||||
att = Attachment.create_data_attachment(batch, file_obj, file_obj.original_filename)
|
||||
batch.attachment = att
|
||||
|
||||
yield batch if block_given?
|
||||
|
|
|
@ -33,6 +33,12 @@ describe Attachments::Storage do
|
|||
expect(@attachment.instfs_uuid).to eq(@uuid)
|
||||
end
|
||||
|
||||
it "infers a filename for direct_upload" do
|
||||
att = Attachment.new
|
||||
expect(InstFS).to receive(:direct_upload).with(file_object: @file, file_name: "a.png")
|
||||
Attachments::Storage.store_for_attachment(att, @file)
|
||||
end
|
||||
|
||||
it "calls attachment_fu methods if inst-fs is not enabled" do
|
||||
allow(InstFS).to receive(:enabled?).and_return(false)
|
||||
expect(@attachment).to receive(:uploaded_data=)
|
||||
|
|
Loading…
Reference in New Issue