From 3ae5b4a1307207b8f6e39ad20a803445956f4ec4 Mon Sep 17 00:00:00 2001 From: Wiibaa Date: Sat, 15 Sep 2012 15:14:16 +0200 Subject: [PATCH] Convert test_base and test_xml --- spec/filters/noop.rb | 141 +++++++++++++++++++++++++++++++++++++++++++ spec/filters/xml.rb | 77 ++++++++++++++++++++++- 2 files changed, 215 insertions(+), 3 deletions(-) diff --git a/spec/filters/noop.rb b/spec/filters/noop.rb index 69423cc10..a40e05ea5 100644 --- a/spec/filters/noop.rb +++ b/spec/filters/noop.rb @@ -19,4 +19,145 @@ describe LogStash::Filters::NOOP do insist { subject["new_field"]} == ["new_value", "new_value_2"] end end + + describe "type parsing" do + config <<-CONFIG + filter { + noop { + type => "noop" + add_tag => ["test"] + } + } + CONFIG + + sample({"@type" => "noop"}) do + insist { subject.tags} == ["test"] + end + + sample({"@type" => "not_noop"}) do + insist { subject.tags} == [] + end + end + + describe "tags parsing with one tag" do + config <<-CONFIG + filter { + noop { + type => "noop" + tags => ["t1"] + add_tag => ["test"] + } + } + CONFIG + + sample({"@type" => "noop"}) do + insist { subject.tags} == [] + end + + sample({"@type" => "noop", "@tags" => ["t1", "t2"]}) do + insist { subject.tags} == ["t1", "t2", "test"] + end + end + + describe "tags parsing with multiple tags" do + config <<-CONFIG + filter { + noop { + type => "noop" + tags => ["t1", "t2"] + add_tag => ["test"] + } + } + CONFIG + + sample({"@type" => "noop"}) do + insist { subject.tags} == [] + end + + sample({"@type" => "noop", "@tags" => ["t1"]}) do + insist { subject.tags} == ["t1"] + end + + sample({"@type" => "noop", "@tags" => ["t1", "t2"]}) do + insist { subject.tags} == ["t1", "t2", "test"] + end + + sample({"@type" => "noop", "@tags" => ["t1", "t2", "t3"]}) do + insist { subject.tags} == ["t1", "t2", "t3", "test"] + end + end + + describe "exclude_tags with 1 tag" do + config <<-CONFIG + filter { + noop { + type => "noop" + tags => ["t1"] + add_tag => ["test"] + exclude_tags => ["t2"] + } + } + CONFIG + + sample({"@type" => "noop"}) do + insist { subject.tags} == [] + end + + sample({"@type" => "noop", "@tags" => ["t1"]}) do + insist { subject.tags} == ["t1", "test"] + end + + sample({"@type" => "noop", "@tags" => ["t1", "t2"]}) do + insist { subject.tags} == ["t1", "t2"] + end + end + + describe "exclude_tags with >1 tags" do + config <<-CONFIG + filter { + noop { + type => "noop" + tags => ["t1"] + add_tag => ["test"] + exclude_tags => ["t2", "t3"] + } + } + CONFIG + + sample({"@type" => "noop", "@tags" => ["t1", "t2", "t4"]}) do + insist { subject.tags} == ["t1", "t2", "t4"] + end + + sample({"@type" => "noop", "@tags" => ["t1", "t3", "t4"]}) do + insist { subject.tags} == ["t1", "t3", "t4"] + end + + sample({"@type" => "noop", "@tags" => ["t1", "t4", "t5"]}) do + insist { subject.tags} == ["t1", "t4", "t5", "test"] + end + end + + describe "remove_tag" do + config <<-CONFIG + filter { + noop { + type => "noop" + tags => ["t1"] + remove_tag => ["t2", "t3"] + } + } + CONFIG + + sample({"@type" => "noop", "@tags" => ["t4"]}) do + insist { subject.tags} == ["t4"] + end + + sample({"@type" => "noop", "@tags" => ["t1", "t2", "t3"]}) do + insist { subject.tags} == ["t1"] + end + + sample({"@type" => "noop", "@tags" => ["t1", "t2"]}) do + insist { subject.tags} == ["t1"] + end + end end diff --git a/spec/filters/xml.rb b/spec/filters/xml.rb index 3dbac531f..747b2aa3f 100644 --- a/spec/filters/xml.rb +++ b/spec/filters/xml.rb @@ -1,10 +1,81 @@ require "test_utils" require "logstash/filters/xml" -describe LogStash::Filters::Mutate do +describe LogStash::Filters::Xml do extend LogStash::RSpec - it "needs tests!" do - raise "I NEED TESTS" + it "needs MORE tests!" do + raise "I NEED MORE TESTS" + end + + describe "parse standard xml" do + config <<-CONFIG + filter { + xml { + raw => "data" + } + } + CONFIG + + sample({"@fields" => {"raw" => ''}}) do + reject { subject.tags}.include?("_xmlparsefailure") + insist { subject["data"]} == {"key" => "value"} + end + + #From parse xml with array as a value + sample({"@fields" => {"raw" => 'value1value2'}}) do + reject { subject.tags}.include?("_xmlparsefailure") + insist { subject["data"]} == {"key" => ["value1", "value2"]} + end + + #From parse xml with hash as a value + sample({"@fields" => {"raw" => 'value'}}) do + reject { subject.tags}.include?("_xmlparsefailure") + insist { subject["data"]} == {"key1" => [{"key2" => ["value"]}]} + end + + #From bad xml + sample({"@fields" => {"raw" => ' "data" + store_xml => false + } + } + CONFIG + + sample({"@fields" => {"raw" => ''}}) do + reject { subject.tags}.include?("_xmlparsefailure") + insist { subject["data"]} == nil + end + end + + describe "parse xml and store values with xpath" do + config <<-CONFIG + filter { + xml { + raw => "data" + xpath => [ "/foo/key/text()", "xpath_field" ] + } + } + CONFIG + + # Single value + sample({"@fields" => {"raw" => 'value'}}) do + reject { subject.tags}.include?("_xmlparsefailure") + insist { subject["xpath_field"]} == ["value"] + end + + #Multiple values + sample({"@fields" => {"raw" => 'value1value2'}}) do + reject { subject.tags}.include?("_xmlparsefailure") + insist { subject["xpath_field"]} == ["value1","value2"] + end end end