From fcaf530a5f1c1b3f355d5541b73291ad8cf15a46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 4 Jan 2016 10:07:32 +0100 Subject: [PATCH] Fail if differentiator includes slash Make heka::input::logstreamer fail if the differentiator parameter includes a slash character. Change-Id: Iff87ee8eef2b18a3e84591f7dc05d7c360aef86b Related-bug: #1530326 --- .../heka/manifests/input/logstreamer.pp | 4 ++ .../spec/defines/heka_input_logstream_spec.rb | 39 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 deployment_scripts/puppet/modules/heka/spec/defines/heka_input_logstream_spec.rb diff --git a/deployment_scripts/puppet/modules/heka/manifests/input/logstreamer.pp b/deployment_scripts/puppet/modules/heka/manifests/input/logstreamer.pp index 304e40423..446c11edc 100644 --- a/deployment_scripts/puppet/modules/heka/manifests/input/logstreamer.pp +++ b/deployment_scripts/puppet/modules/heka/manifests/input/logstreamer.pp @@ -25,6 +25,10 @@ define heka::input::logstreamer( include heka::params + if $differentiator and ('/' in $differentiator) { + fail('differentiator contains a slash character') + } + file { "${config_dir}/logstreamer-${title}.toml": ensure => $ensure, content => template('heka/input/logstreamer.toml.erb'), diff --git a/deployment_scripts/puppet/modules/heka/spec/defines/heka_input_logstream_spec.rb b/deployment_scripts/puppet/modules/heka/spec/defines/heka_input_logstream_spec.rb new file mode 100644 index 000000000..8df371cf5 --- /dev/null +++ b/deployment_scripts/puppet/modules/heka/spec/defines/heka_input_logstream_spec.rb @@ -0,0 +1,39 @@ +# Copyright 2015 Mirantis, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +require 'spec_helper' + +describe 'heka::input::logstreamer' do + let(:facts) do + {:kernel => 'Linux', :operatingsystem => 'Ubuntu', + :osfamily => 'Debian'} + end + + describe 'with required params' do + let(:title) { :foo } + let(:params) do + {:config_dir => '/etc/heka', + :decoder => 'decoder'} + end + it { is_expected.to contain_file('/etc/heka/logstreamer-foo.toml') } + end + + describe 'differentiator including a slash' do + let(:title) { :foo } + let(:params) do + {:config_dir => '/etc/heka', + :decoder => 'decoder', :differentiator => '["test", "/"]'} + end + it { is_expected.to raise_error(Puppet::Error, /slash/) } + end +end