# frozen_string_literal: true require "spec_helper" RSpec.describe Savon::LogMessage do it "returns the message if it's not XML" do message = log_message("hello", [:password], :pretty_print).to_s expect(message).to eq("hello") end it "returns the message if it shouldn't be filtered or pretty printed" do Nokogiri.expects(:XML).never message = log_message("", [], false).to_s expect(message).to eq("") end it "pretty prints a given message" do message = log_message("hello", [], :pretty_print).to_s expect(message).to include("\n") expect(message).to include("\n ") end it "filters tags in a given message without pretty printing" do message = log_message("secret", [:password], false).to_s expect(message).to include("***FILTERED***") expect(message).to_not include("\n ***FILTERED***") # no pretty printing end it "filters tags in a given message with pretty printing" do message = log_message("secret", [:password], true).to_s expect(message).to include("\n ***FILTERED***") end it "properly applies Proc filter" do filter = Proc.new do |document| document.xpath('//password').each do |node| node.content = "FILTERED" end end message = log_message("secret", [filter], false).to_s expect(message).to include("FILTERED") end def log_message(*args) Savon::LogMessage.new(*args) end end