require 'spec_helper' describe 'tripleo::haproxy::endpoint' do let(:title) { 'neutron' } let :pre_condition do 'include haproxy' end let :params do { :public_virtual_ip => '192.168.0.1', :internal_ip => '10.0.0.1', :service_port => 9696, :ip_addresses => ['10.0.0.2', '10.0.0.3', '10.0.0.4'], :server_names => ['controller1', 'controller2', 'controller3'], :public_ssl_port => 19696, :member_options => [ 'check', 'inter 2000', 'rise 2', 'fall 5' ], :haproxy_listen_bind_param => ['transparent'], } end shared_examples_for 'tripleo haproxy endpoint' do context 'with basic parameters to configure neutron binding' do it 'should configure haproxy' do is_expected.to contain_haproxy__listen('neutron').with( :collect_exported => false, :bind => { "10.0.0.1:9696" => ["transparent"], "192.168.0.1:9696" => ["transparent"] }, :options => {'option' => [], 'timeout client' => '90m', 'timeout server' => '90m', }, ) end end context 'with dual-stack' do before :each do params.merge!({ :public_virtual_ip => ['fd00:fd00:fd00:2000::14', '192.168.0.1'], }) end it 'should configure haproxy' do is_expected.to contain_haproxy__listen('neutron').with( :collect_exported => false, :bind => { "10.0.0.1:9696" => ["transparent"], "fd00:fd00:fd00:2000::14:9696" => ["transparent"], "192.168.0.1:9696" => ["transparent"] }, ) end end context 'with userlist' do before :each do params.merge!({ :authorized_userlist => 'starwars', }) end let :pre_condition do 'include haproxy ::tripleo::haproxy::userlist {"starwars": users => ["leia password sister"]} ' end it 'should configure an ACL' do is_expected.to compile.with_all_deps is_expected.to contain_haproxy__listen('neutron').with( :options => { 'option' => [], 'timeout client' => '90m', 'timeout server' => '90m', 'acl' => 'acl Authneutron http_auth(starwars)', 'http-request' => 'auth realm neutron if !Authneutron', } ) end end end on_supported_os.each do |os, facts| context "on #{os}" do let(:facts) do facts.merge({}) end it_behaves_like 'tripleo haproxy endpoint' end end end