require File.expand_path(File.dirname(__FILE__) + '/spec_helper') module Owasp module Esapi module Sanitizer describe Xss do let(:filter) {Owasp::Esapi::Sanitizer::Xss.new} it "should leave untouched untainted strings" do untainted = "This is an unoffensive string" output = filter.sanitize(untainted) output.should == untainted end it "should sanitize the '<' character" do false_positive_tainted = "I am a supposed to be a tainted < string" output = filter.sanitize(false_positive_tainted) output.should == false_positive_tainted.gsub("<", "<") end it "should sanitize the '>' character" do false_positive_tainted = "I am a supposed to be a tainted > string" output = filter.sanitize(false_positive_tainted) output.should == false_positive_tainted.gsub(">", ">") end it "should sanitize the '&' character" do false_positive_tainted = "I am a supposed to be a tainted & string" output = filter.sanitize(false_positive_tainted) output.should == false_positive_tainted.gsub("&", "&") end it "should sanitize the '\"' character" do false_positive_tainted = "I am a supposed to be a tainted \" string" output = filter.sanitize(false_positive_tainted) output.should == false_positive_tainted.gsub("\"", """) end it "should sanitize the '\'' character" do false_positive_tainted = "I am a supposed to be a tainted \' string" output = filter.sanitize(false_positive_tainted) output.should == false_positive_tainted.gsub("\'", "'") end it "should sanitize the '/' character" do false_positive_tainted = "I am a supposed to be a tainted / string" output = filter.sanitize(false_positive_tainted) output.should == false_positive_tainted.gsub("/", "/") end it "shoud sanitize an injecting up attack pattern" do taint = "" output = filter.sanitize(taint) output.should == taint.gsub("<", "<").gsub(">", ">").gsub("\'", "'").gsub("/", "/") end it "shoud sanitize an injecting up attack pattern" do taint = "/>" output = filter.sanitize(taint) output.should == taint.gsub("<", "<").gsub(">", ">").gsub("\'", "'").gsub("/", "/") end end end end end