inspec/test/unit/resources/mount_test.rb
Markus Grobelin 221db7e132 mount resource: fix for Device-/Sharenames and Mountpoints including … (#2257)
* mount resource: fix for Device-/Sharenames and Mountpoints including whitespaces

Device-/Sharenames and Mountpoints on Linux may include whitespaces (\040), e.g. /etc/fstab entry like:

```//fileserver.corp.internal/Research\040&\040Development /mnt/Research\040&\040Development cifs OTHER_OPTS```

... results in a mount line like:

```//fileserver.corp.internal/Research & Development on /mnt/Research & Development type cifs (OTHER_OPTS)```

The Linux mount command replaces \040 with whitspace automatically, so this should be tributed.

I used a control like this:

```
    describe mount('/mnt/Research & Development') do
      it { should be_mounted }
      its('device') { should eq  '//fileserver.corp.internal/Research & Development' }
    end
```

Before:

```
  ×  whitespaces-1: Mount with whitespace within sharename and mountpoint. (1 failed)
     ✔  Mount /mnt/Research & Development should be mounted
     ×  Mount /mnt/Research & Development device should eq "//fileserver.corp.internal/Research & Development"

     expected: "//fileserver.corp.internal/Research & Development"
          got: "//fileserver.corp.internal/Research"

     (compared using ==)
```

After:

```
  ✔  whitespaces-01: Mount with whitespace within sharename and mountpoint.
     ✔  Mount /mnt/Research & Development should be mounted
     ✔  Mount /mnt/Research & Development device should eq "//fileserver.corp.internal/Research & Development"
```

Signed-off-by: Markus Grobelin <grobi@koppzu.de>

* mounts_with_whitespaces: make lint happy

Signed-off-by: Markus Grobelin <grobi@koppzu.de>

* mount resource: added parentheses as suggested by https://github.com/chef/inspec/pull/2257/files

Signed-off-by: Markus Grobelin <grobi@koppzu.de>

* mount resource: fix for Device-/Sharenames and Mountpoints including whitespaces
Signed-off-by: Markus Grobelin <grobi@koppzu.de>
2017-11-01 12:01:21 +01:00

35 lines
1.2 KiB
Ruby

# encoding: utf-8
# author: Christoph Hartmann
# author: Dominik Richter
require 'helper'
require 'inspec/resource'
describe Inspec::Resources::FileResource do
let(:root_resource) { load_resource('mount', '/') }
it 'parses the mount data properly' do
root_resource.send(:device).must_equal('/dev/xvda1')
root_resource.send(:type).must_equal('ext4')
root_resource.send(:options).must_equal(['rw','discard'])
root_resource.send(:count).must_equal(1)
end
let(:iso_resource) { load_resource('mount', '/mnt/iso-disk') }
it 'parses the mount data properly' do
iso_resource.send(:device).must_equal('/root/alpine-3.3.0-x86_64_2.iso')
iso_resource.send(:type).must_equal('iso9660')
iso_resource.send(:options).must_equal(['ro'])
iso_resource.send(:count).must_equal(2)
end
let(:ws_resource) { load_resource('mount', '/mnt/Research & Development') }
it 'parses the mount data properly even if whitespaces are included' do
ws_resource.send(:device).must_equal('//fileserver.corp.internal/Research & Development')
ws_resource.send(:type).must_equal('cifs')
ws_resource.send(:options).must_equal(['rw','vers=1.0'])
ws_resource.send(:count).must_equal(1)
end
end