DEV: Clean up S3 specs, stubs, and helpers

Extracted commonly used spec helpers into spec/support/uploads_helpers.rb, removed unused stubs and let definitions. Makes it easier to write new S3-related specs without copy and pasting setup steps from other specs.
This commit is contained in:
Jarek Radosz
2020-09-14 13:32:25 +02:00
committed by Daniel Waterworth
parent 50d53508b1
commit e00abbe1b7
38 changed files with 237 additions and 444 deletions

View File

@@ -369,10 +369,7 @@ describe BackupRestore::UploadsRestorer do
context "currently stored on S3" do
before do
SiteSetting.s3_upload_bucket = "s3-upload-bucket"
SiteSetting.s3_access_key_id = "s3-access-key-id"
SiteSetting.s3_secret_access_key = "s3-secret-access-key"
SiteSetting.enable_s3_uploads = true
setup_s3
end
let!(:store_class) { FileStore::S3Store }

View File

@@ -72,15 +72,8 @@ describe ShrinkUploadedImage do
let(:upload) { Fabricate(:s3_image_upload, width: 200, height: 200) }
before do
SiteSetting.enable_s3_uploads = true
SiteSetting.s3_access_key_id = "fakeid7974664"
SiteSetting.s3_secret_access_key = "fakesecretid7974664"
store = FileStore::S3Store.new
s3_helper = store.instance_variable_get(:@s3_helper)
client = Aws::S3::Client.new(stub_responses: true)
s3_helper.stubs(:s3_client).returns(client)
Discourse.stubs(:store).returns(store)
setup_s3
stub_s3_store
end
it "resizes the image" do

View File

@@ -30,7 +30,12 @@ describe TopicUploadSecurityManager do
let(:category) { Fabricate(:private_category, group: group) }
context "when secure media is enabled" do
before { enable_secure_media }
before do
setup_s3
SiteSetting.secure_media = true
[upload, upload2, upload3].each { |upl| stub_upload(upl) }
end
it "does not change any upload statuses or update ACLs or rebake" do
expect_upload_status_not_to_change
@@ -57,7 +62,12 @@ describe TopicUploadSecurityManager do
let(:topic) { Fabricate(:private_message_topic, category: category, user: user) }
context "when secure media is enabled" do
before { enable_secure_media }
before do
setup_s3
SiteSetting.secure_media = true
[upload, upload2, upload3].each { |upl| stub_upload(upl) }
end
it "does not change any upload statuses or update ACLs or rebake" do
expect_upload_status_not_to_change
@@ -82,7 +92,12 @@ describe TopicUploadSecurityManager do
context "when the topic is public" do
context "when secure media is enabled" do
before { enable_secure_media }
before do
setup_s3
SiteSetting.secure_media = true
[upload, upload2, upload3].each { |upl| stub_upload(upl) }
end
context "when login required is enabled" do
before do
@@ -111,7 +126,10 @@ describe TopicUploadSecurityManager do
let!(:upload3) { Fabricate(:upload) }
before do
enable_secure_media
setup_s3
SiteSetting.secure_media = true
[upload, upload2, upload3].each { |upl| stub_upload(upl) }
end
context "when this is the first post the upload has appeared in" do
@@ -155,24 +173,6 @@ describe TopicUploadSecurityManager do
end
end
def enable_secure_media
SiteSetting.enable_s3_uploads = true
SiteSetting.s3_upload_bucket = "s3-upload-bucket"
SiteSetting.s3_access_key_id = "some key"
SiteSetting.s3_secret_access_key = "some secrets3_region key"
SiteSetting.secure_media = true
stub_request(:head, "https://#{SiteSetting.s3_upload_bucket}.s3.amazonaws.com/")
# because the ACLs will be changing...
[upload, upload2, upload3].each do |upl|
stub_request(
:put,
"https://#{SiteSetting.s3_upload_bucket}.s3.amazonaws.com/original/1X/#{upl.sha1}.#{upl.extension}?acl"
)
end
end
def expect_upload_status_not_to_change
Post.any_instance.expects(:rebake!).never
subject.run

View File

@@ -193,7 +193,9 @@ RSpec.describe UploadCreator do
let(:opts) { { type: "composer" } }
before do
enable_s3_uploads
setup_s3
stub_s3_store
SiteSetting.secure_media = true
SiteSetting.authorized_extensions = 'pdf|svg|jpg'
end
@@ -221,7 +223,8 @@ RSpec.describe UploadCreator do
let(:opts) { { type: "composer" } }
before do
enable_s3_uploads
setup_s3
stub_s3_store
end
it 'should store the file and return etag' do
@@ -280,7 +283,9 @@ RSpec.describe UploadCreator do
context "when SiteSetting.secure_media is enabled" do
before do
enable_s3_uploads
setup_s3
stub_s3_store
SiteSetting.secure_media = true
end
@@ -298,7 +303,9 @@ RSpec.describe UploadCreator do
context "when SiteSetting.secure_media enabled" do
before do
enable_s3_uploads
setup_s3
stub_s3_store
SiteSetting.secure_media = true
end
@@ -434,18 +441,4 @@ RSpec.describe UploadCreator do
end
end
end
def enable_s3_uploads
SiteSetting.s3_upload_bucket = "s3-upload-bucket"
SiteSetting.s3_access_key_id = "s3-access-key-id"
SiteSetting.s3_secret_access_key = "s3-secret-access-key"
SiteSetting.s3_region = 'us-west-1'
SiteSetting.enable_s3_uploads = true
store = FileStore::S3Store.new
s3_helper = store.instance_variable_get(:@s3_helper)
client = Aws::S3::Client.new(stub_responses: true)
s3_helper.stubs(:s3_client).returns(client)
Discourse.stubs(:store).returns(store)
end
end

View File

@@ -12,10 +12,7 @@ RSpec.describe UploadSecurity do
context "when secure media is enabled" do
before do
SiteSetting.enable_s3_uploads = true
SiteSetting.s3_upload_bucket = "s3-upload-bucket"
SiteSetting.s3_access_key_id = "some key"
SiteSetting.s3_secret_access_key = "some secrets3_region key"
setup_s3
SiteSetting.secure_media = true
end