diff --git a/data/os/FreeBSD.yaml b/data/os/FreeBSD.yaml index c5ad86ac..88b68e91 100644 --- a/data/os/FreeBSD.yaml +++ b/data/os/FreeBSD.yaml @@ -1,9 +1,9 @@ --- -openldap::client::package: "openldap24-client" +openldap::client::package: "openldap26-client" openldap::client::file: "/usr/local/etc/openldap/ldap.conf" openldap::server::confdir: "/usr/local/etc/openldap/slapd.d" openldap::server::conffile: "/usr/local/etc/openldap/slapd.conf" -openldap::server::package: "openldap24-server" +openldap::server::package: "openldap26-server" openldap::server::escape_ldapi_ifs: true openldap::server::ldapi_ifs: - "/var/run/openldap/ldapi" diff --git a/lib/puppet/provider/openldap_database/olc.rb b/lib/puppet/provider/openldap_database/olc.rb index 2abf4d55..a9ce8dda 100644 --- a/lib/puppet/provider/openldap_database/olc.rb +++ b/lib/puppet/provider/openldap_database/olc.rb @@ -49,7 +49,7 @@ def self.instances when %r{^olcRelay: } relay = line.split[1] when %r{^olcReadOnly: }i - readonly = line.split[1] + readonly = line.split[1] == 'TRUE' ? :true : :false when %r{^olcSizeLimit: }i sizelimit = line.split[1] when %r{^olcDbMaxSize: }i diff --git a/lib/puppet/type/openldap_database.rb b/lib/puppet/type/openldap_database.rb index ab8947ac..5cf8ac18 100644 --- a/lib/puppet/type/openldap_database.rb +++ b/lib/puppet/type/openldap_database.rb @@ -159,6 +159,8 @@ def should_to_s(_newvalue) newproperty(:readonly) do desc 'Puts the database into read-only mode.' + newvalues(:true, :false) + defaultto(:false) end newproperty(:sizelimit) do diff --git a/spec/unit/puppet/provider/openldap_database/olc_spec.rb b/spec/unit/puppet/provider/openldap_database/olc_spec.rb new file mode 100644 index 00000000..c1468c87 --- /dev/null +++ b/spec/unit/puppet/provider/openldap_database/olc_spec.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Puppet::Type.type(:openldap_database).provider(:olc) do + let(:params) do + { + suffix: 'dc=example,dc=com', + backend: 'mdb', + readonly: false, + # provider: described_class.name, + } + end + + let(:resource) do + Puppet::Type.type(:openldap_database).new(params) + end + let(:provider) do + resource.provider + end + + before do + allow(described_class).to receive(:slapcat).with('(|(olcDatabase=monitor)(olcDatabase={0}config)(&(objectClass=olcDatabaseConfig)(|(objectClass=olcBdbConfig)(objectClass=olcHdbConfig)(objectClass=olcMdbConfig)(objectClass=olcMonitorConfig)(objectClass=olcRelayConfig)(objectClass=olcLDAPConfig))))').and_return(<<~SLAPCAT) + dn: olcDatabase={1}mdb,cn=config + olcDatabase: {1}mdb + olcReadOnly: FALSE + SLAPCAT + allow(provider).to receive(:slapcat) + allow(provider).to receive(:ldapmodify) + allow(provider).to receive(:ldapadd) + # allow(described_class).to receive(:slapcat) + # allow(described_class).to receive(:ldapmodify) + # allow(described_class).to receive(:ldapadd) + end + + describe 'when creating' do + context 'with readonly set to false' do + it 'parses olcReadOnly as false' do + provider.create + expect(described_class.instances.first.readonly).to eq :false + # expect(described_class.instances.first.readonly).to eq(:false) + end + end + + context 'with readonly set to true' do + let(:params) do + super().merge({ readonly: true }) + end + + it 'parses olcReadonly' do + expect(described_class.instances.first.readonly).to eq(:true) + end + end + end +end