mirror of
https://github.com/inspec/inspec
synced 2024-11-23 05:03:07 +00:00
add content parser tests
This commit is contained in:
parent
c8bba59588
commit
95242bf9c2
2 changed files with 47 additions and 15 deletions
|
@ -5,25 +5,11 @@
|
|||
module ContentParser
|
||||
# parse etc/passwd file
|
||||
def parse_passwd(content)
|
||||
content.split("\n").map do |line|
|
||||
content.to_s.split("\n").map do |line|
|
||||
parse_passwd_line(line)
|
||||
end
|
||||
end
|
||||
|
||||
# parse a etc/passwd line
|
||||
def parse_passwd_line(line)
|
||||
x = line.split(':')
|
||||
{
|
||||
'name' => x.at(0),
|
||||
'password' => x.at(1),
|
||||
'uid' => x.at(2),
|
||||
'gid' => x.at(3),
|
||||
'desc' => x.at(4),
|
||||
'home' => x.at(5),
|
||||
'shell' => x.at(6),
|
||||
}
|
||||
end
|
||||
|
||||
def parse_comment_line(raw, opts)
|
||||
idx_nl = raw.index("\n")
|
||||
idx_comment = raw.index(opts[:comment_char])
|
||||
|
@ -46,4 +32,20 @@ module ContentParser
|
|||
end
|
||||
[line, idx_nl]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# parse a etc/passwd line
|
||||
def parse_passwd_line(line)
|
||||
x = line.split(':')
|
||||
{
|
||||
'name' => x.at(0),
|
||||
'password' => x.at(1),
|
||||
'uid' => x.at(2),
|
||||
'gid' => x.at(3),
|
||||
'desc' => x.at(4),
|
||||
'home' => x.at(5),
|
||||
'shell' => x.at(6),
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
30
test/unit/utils/content_parser_test.rb
Normal file
30
test/unit/utils/content_parser_test.rb
Normal file
|
@ -0,0 +1,30 @@
|
|||
# encoding: utf-8
|
||||
# author: Dominik Richter
|
||||
# author: Christoph Hartmann
|
||||
|
||||
describe ContentParser do
|
||||
let (:parser) { Class.new() { include ContentParser }.new }
|
||||
|
||||
describe '#parse_passwd' do
|
||||
it 'parses nil content' do
|
||||
parser.parse_passwd(nil).must_equal([])
|
||||
end
|
||||
|
||||
it 'parses an empty passwd line' do
|
||||
parser.parse_passwd('').must_equal([])
|
||||
end
|
||||
|
||||
it 'parses a valid passwd line' do
|
||||
info = [{
|
||||
"name"=>"root",
|
||||
"password"=>"x",
|
||||
"uid"=>"0",
|
||||
"gid"=>"0",
|
||||
"desc"=>"root",
|
||||
"home"=>"/root",
|
||||
"shell"=>"/bin/sh"
|
||||
}]
|
||||
parser.parse_passwd('root:x:0:0:root:/root:/bin/sh').must_equal(info)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue