Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow spaces in targets of olcAccess statements #357

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

towo
Copy link
Member

@towo towo commented Aug 25, 2022

Pull Request (PR) description

Since it's entirely possible to have a distinguished name of style

o=My Cool Organization

even for the root of the database, we really need to respect the proper
handling of spacey arguments to olcAccess (with the relevant quotes
around them).

This Pull Request (PR) fixes the following issues

n/a

Since it's entirely possible to have a distinguished name of style

`o=My Cool Organization`

even for the root of the database, we really need to respect the proper
handling of spacey arguments to olcAccess (with the relevant quotes
around them).
@smortex smortex linked an issue Aug 25, 2022 that may be closed by this pull request
Comment on lines +16 to +25

it 'handles target with spaces with prefix' do
access = described_class.new(name: '0 on dn.subtree="cn=Some String,dc=example,dc=com"', access: 'by dn="cn=admin,dc=example,dc=com" write by anonymous auth')
expect(access[:access]).to eq([['by dn="cn=admin,dc=example,dc=com" write', 'by anonymous auth']])
end

it 'handles target with spaces without prefix' do
access = described_class.new(name: '0 on "cn=Some String,dc=example,dc=com"', access: 'by dn="cn=admin,dc=example,dc=com" write by anonymous auth')
expect(access[:access]).to eq([['by dn="cn=admin,dc=example,dc=com" write', 'by anonymous auth']])
end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These tests are not related to the above change 🤨

For some reason i can't push to your branch:

spec/unit/puppet/provider/openldap_acess/olc_spec.rb

# frozen_string_literal: true

require 'spec_helper'

describe Puppet::Type.type(:openldap_access).provider(:olc) do
  describe '::instances' do
    context 'with Debian defaults' do
      before do
        expect(described_class).to receive(:slapcat).with('(olcAccess=*)').and_return(<<~SLAPCAT)
          # Debian defaults
          dn: olcDatabase={-1}frontend,cn=config
          olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
          olcAccess: {1}to dn.exact="" by * read
          olcAccess: {2}to dn.base="cn=Subschema" by * read

          dn: olcDatabase={0}config,cn=config
          olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break

          dn: olcDatabase={1}mdb,cn=config
          olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
          olcAccess: {1}to attrs=shadowLastChange by self write by * read
          olcAccess: {2}to * by * read
        SLAPCAT
      end

      it 'parses olcAccess' do
        expect(described_class.instances.size).to eq(7)
      end
    end

    context 'with spaces' do
      before do
        expect(described_class).to receive(:slapcat).with('(olcAccess=*)').and_return(<<~SLAPCAT)
          dn: olcDatabase={-1}frontend,cn=config
          olcAccess: {0}to dn.base="cn=Sub Schema" by * read
        SLAPCAT
      end

      it 'parses olcAccess' do
        expect(described_class.instances.size).to eq(1)
      end
    end
  end
end

Can you check and add this?

@towo towo marked this pull request as draft August 31, 2022 07:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Setting limits fails for groups with spaces in their name
2 participants