Sha256: 20bee037d40b828ad8d512520d662a68865a9d189c9ce25763581733ea3fef35

Contents?: true

Size: 1.75 KB

Versions: 12

Compression:

Stored size: 1.75 KB

Contents

require 'spec_helper'
require 'certmeister/policy/blackhole'
require 'certmeister/policy/noop'

require 'certmeister/policy/chain_any'

describe Certmeister::Policy::ChainAny do

  it "must be configured with a list of policies" do
    expected_error = "enumerable collection of policies required"
    expect { Certmeister::Policy::ChainAny.new }.to raise_error(ArgumentError)
    expect { Certmeister::Policy::ChainAny.new(Certmeister::Policy::Noop.new) }.to raise_error(ArgumentError, expected_error)
    expect { Certmeister::Policy::ChainAny.new([]) }.to raise_error(ArgumentError, expected_error)
  end

  it "demands a request" do
    policy = Certmeister::Policy::ChainAny.new([Certmeister::Policy::Noop.new])
    expect { policy.authenticate }.to raise_error(ArgumentError)
  end

  it "authenticates a request that any of its chained policies authenticate" do
    policy = Certmeister::Policy::ChainAny.new([Certmeister::Policy::Blackhole.new, Certmeister::Policy::Noop.new, Certmeister::Policy::Blackhole.new])
    response = policy.authenticate({anything: 'something'})
    expect(response).to be_authenticated
  end

  it "refuses a request that none of its chained policies refuses" do
    policy = Certmeister::Policy::ChainAny.new([ Certmeister::Policy::Blackhole.new, Certmeister::Policy::Blackhole.new])
    response = policy.authenticate({anything: 'something'})
    expect(response).to_not be_authenticated
  end

  it "uses the error message of the first encountered refusal in the chain" do
    policy = Certmeister::Policy::ChainAny.new([
      Certmeister::Policy::Domain.new(['unmatched.com']),
      Certmeister::Policy::Blackhole.new,
    ])
    response = policy.authenticate({cn: 'wrongdomain.com'})
    expect(response.error).to eql 'cn in unknown domain'
  end

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
certmeister-2.3.2 spec/certmeister/policy/chain_any_spec.rb
certmeister-2.3.1 spec/certmeister/policy/chain_any_spec.rb
certmeister-2.3.0 spec/certmeister/policy/chain_any_spec.rb
certmeister-2.2.0 spec/certmeister/policy/chain_any_spec.rb
certmeister-2.1.0 spec/certmeister/policy/chain_any_spec.rb
certmeister-2.0.0 spec/certmeister/policy/chain_any_spec.rb
certmeister-1.2.1 spec/certmeister/policy/chain_any_spec.rb
certmeister-1.2.0 spec/certmeister/policy/chain_any_spec.rb
certmeister-1.1.0 spec/certmeister/policy/chain_any_spec.rb
certmeister-1.0.1 spec/certmeister/policy/chain_any_spec.rb
certmeister-1.0.0 spec/certmeister/policy/chain_any_spec.rb
certmeister-0.4.1 spec/certmeister/policy/chain_any_spec.rb