require "test_helper"
require "fluent/plugin/buf_file"
module Fluentd::Setting
class OutS3Test < ActiveSupport::TestCase
setup do
@klass = Fluentd::Setting::OutS3
@valid_attributes = {
s3_bucket: "bucketname"
}
@instance = @klass.new(@valid_attributes)
end
sub_test_case "#valid?" do
test "valid" do
assert_true(@instance.valid?)
end
test "invalid if s3_bucket is missing" do
instance = @klass.new({})
assert_false(instance.valid?)
end
end
test "#plugin_name" do
assert_equal("s3", @instance.plugin_name)
end
test "#plugin_type" do
assert_equal("output", @instance.plugin_type)
end
test "#to_config" do
assert do
@instance.to_config.to_s.include?("@type s3")
end
end
test "with assume_role_credentials" do
params = {
pattern: "s3.*",
s3_bucket: "bucketname",
assume_role_credentials: {
"0" => {
role_arn: "arn",
role_session_name: "session_name",
}
}
}
expected = <<-CONFIG.strip_heredoc
@type s3
s3_bucket bucketname
role_arn arn
role_session_name session_name
CONFIG
instance = @klass.new(params)
assert_equal(expected, instance.to_config.to_s)
end
test "with instance_profile_credentials" do
params = {
pattern: "s3.*",
s3_bucket: "bucketname",
instance_profile_credentials: {
"0" => {
port: 80
}
}
}
expected = <<-CONFIG.strip_heredoc
@type s3
s3_bucket bucketname
port 80
CONFIG
instance = @klass.new(params)
assert_equal(expected, instance.to_config.to_s)
end
test "with shared_credentials" do
params = {
pattern: "s3.*",
s3_bucket: "bucketname",
shared_credentials: {
"0" => {
path: "$HOME/.aws/credentials",
profile_name: "default",
}
}
}
expected = <<-CONFIG.strip_heredoc
@type s3
s3_bucket bucketname
path $HOME/.aws/credentials
profile_name default
CONFIG
instance = @klass.new(params)
assert_equal(expected, instance.to_config.to_s)
end
end
end