add content parser tests

This commit is contained in:
Dominik Richter 2015-10-26 15:50:57 +01:00
parent c8bba59588
commit 95242bf9c2
2 changed files with 47 additions and 15 deletions

View file

@ -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

View 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