Sha256: 5f036d1a71ca11558aef140c497807bf2c7a5a8bf3cdf94076e42ce6d3919d65

Contents?: true

Size: 1.71 KB

Versions: 17

Compression:

Stored size: 1.71 KB

Contents

# encoding: utf-8
require "logstash/devutils/rspec/spec_helper"
require "logstash/outputs/s3/write_bucket_permission_validator"
require "aws-sdk"

describe LogStash::Outputs::S3::WriteBucketPermissionValidator do
  let(:logger) { spy(:logger ) }
  let(:bucket_name) { "foobar" }
  let(:obj) { double("s3_object") }
  let(:client) { Aws::S3::Client.new(stub_responses: true) }
  let(:bucket) { Aws::S3::Bucket.new(bucket_name, :client => client) }
  let(:upload_options) { {} }

  subject { described_class.new(logger) }

  before do
    expect(bucket).to receive(:object).with(any_args).and_return(obj)
  end

  context 'when using upload_options' do
    let(:upload_options) {{ :server_side_encryption => true }}
    it 'they are passed through to upload_file' do
      expect(obj).to receive(:upload_file).with(anything, upload_options)
      expect(obj).to receive(:delete).and_return(true)
      expect(subject.valid?(bucket, upload_options)).to be_truthy
    end

  end

  context "when permissions are sufficient" do
    it "returns true" do
      expect(obj).to receive(:upload_file).with(any_args).and_return(true)
      expect(obj).to receive(:delete).and_return(true)
      expect(subject.valid?(bucket, upload_options)).to be_truthy
    end

    it "hides delete errors" do
      expect(obj).to receive(:upload_file).with(any_args).and_return(true)
      expect(obj).to receive(:delete).and_raise(StandardError)
      expect(subject.valid?(bucket, upload_options)).to be_truthy
    end
  end

  context "when permission aren't sufficient" do
    it "returns false" do
      expect(obj).to receive(:upload_file).with(any_args).and_raise(StandardError)
      expect(subject.valid?(bucket, upload_options)).to be_falsey
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
logstash-output-s3-4.4.1 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.4.0 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.3.7 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.3.6 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.3.5 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.3.4 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.3.3 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.3.2 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.3.1 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.3.0 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.2.0 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.1.10 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.1.9 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.1.8 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.1.7 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.1.6 spec/outputs/s3/write_bucket_permission_validator_spec.rb
logstash-output-s3-4.1.5 spec/outputs/s3/write_bucket_permission_validator_spec.rb