require 'rubygems'
gem 'minitest'
#require 'minitest/autorun'
require 'minitest/spec'
require 'hiera'
require 'hiera/backend/wrapper_backend'

class Hiera
  module Backend
    describe Wrapper_backend do
      hiera_config=YAML.load_file("test/etc/hiera_bl_and_wl.yaml")

      before do
        Config.load(hiera_config)
        @new_out,@new_err = capture_subprocess_io do
          @backend=Wrapper_backend.new()
        end
      end

      it "Should announce its creation" do
        assert_equal("",@new_out)
        assert_match(/Hiera WRAP backend starting/,@new_err)
      end

      it "lookup should fail when not found in either backend" do
        result=""
        out,err = capture_subprocess_io do
          result=@backend.lookup("no_such_key",{},nil, :priority)
        end
        assert_equal(nil,result)
      end

      # cases:
      # bl, wl, result
      # 00 -> reject
      # 01 -> found
      # 10 -> reject
      # 11 -> reject*
      # proove a few multi-backend cases?

      it "lookup of bl should not return value" do
        result = ""
        out,err = capture_subprocess_io do
          result=@backend.lookup("bl",{},nil, :priority)
        end
        assert_equal(nil,result)
      end 

      it "lookup of wl should return value" do
        result = ""
        out,err = capture_subprocess_io do
          result=@backend.lookup("wl",{},nil, :priority)
        end
        assert_equal("should_be_allowed",result)
      end 

      it "lookup of black_and_white should not return value" do
        result=""
        out,err = capture_subprocess_io do
          result=@backend.lookup("black_and_white",{},nil, :priority)
        end
        assert_equal(nil,result)
      end 

    end
  end
end