1
0
Fork 0
mirror of https://github.com/nishiki/manage-password.git synced 2024-10-27 10:43:20 +00:00

unittest: fix for mpw

This commit is contained in:
nishiki 2015-02-12 23:03:01 +01:00
parent 21ef7659fc
commit 0708c3d4c0
4 changed files with 102 additions and 216 deletions

View file

@ -29,6 +29,8 @@ module MPW
# @args: password -> the GPG key password
# @rtrn: true if data has been decrypted
def decrypt(password=nil)
@data = []
if File.exist?(@file_gpg) and not File.zero?(@file_gpg)
crypto = GPGME::Crypto.new(armor: true)
data_decrypt = crypto.decrypt(IO.read(@file_gpg), password: password).read.force_encoding('utf-8')
@ -165,7 +167,7 @@ module MPW
CSV.open(file, 'w', write_headers: true,
headers: ['name', 'group', 'protocol', 'host', 'user', 'password', 'port', 'comment']) do |csv|
@data.each do |item|
csv << [item.id, item.group, item.protocol, item.host, item.user, item.password, item.port, item.comment]
csv << [item.name, item.group, item.protocol, item.host, item.user, item.password, item.port, item.comment]
end
end
@ -212,7 +214,7 @@ module MPW
group: row['group'],
host: row['host'],
protocol: row['protocol'],
login: row['login'],
user: row['user'],
password: row['password'],
port: row['port'],
comment: row['comment'],
@ -229,7 +231,7 @@ module MPW
group: row['group'],
host: row['host'],
protocol: row['protocol'],
login: row['login'],
user: row['user'],
password: row['password'],
port: row['port'],
comment: row['comment'],

View file

@ -1,3 +1,3 @@
name,group,protocol,host,login,password,port,comment
test_name_csv,test_group_csv,test_protocol_csv,test_host_csv,test_login_csv,test_password_csv,44,test_comment_csv
test_name_update_csv,test_group_update_csv,test_protocol_update_csv,test_host_update_csv,test_login_update_csv,test_password_update_csv,45,test_comment_update_csv
name,group,protocol,host,user,password,port,comment
test_name,test_group,test_protocol,test_host,test_user,test_password,42,test_comment
test_name_update,test_group_update,test_protocol_update,test_host_update,test_user_update,test_password_update,43,test_comment_update

1 name group protocol host login user password port comment
2 test_name_csv test_name test_group_csv test_group test_protocol_csv test_protocol test_host_csv test_host test_login_csv test_user test_password_csv test_password 44 42 test_comment_csv test_comment
3 test_name_update_csv test_name_update test_group_update_csv test_group_update test_protocol_update_csv test_protocol_update test_host_update_csv test_host_update test_login_update_csv test_user_update test_password_update_csv test_password_update 45 43 test_comment_update_csv test_comment_update

View file

@ -5,7 +5,7 @@ XWas7vpy0HerhOYd:
group: test_group
host: test_host
protocol: test_protocol
login: test_login
user: test_user
password: test_password
port: 42
comment: test_comment
@ -16,7 +16,7 @@ D7URyJENLa91jt0b:
group: test_group_update
host: test_host_update
protocol: test_protocol_update
login: test_login_update
user: test_user_update
password: test_password_update
port: 43
comment: test_comment_update

View file

@ -1,13 +1,14 @@
#!/usr/bin/ruby
require_relative '../lib/MPW'
require_relative '../lib/Item'
require 'test/unit'
require 'yaml'
require 'csv'
class TestMPW < Test::Unit::TestCase
def setup
@fixture_file = 'files/fixtures.yml'
fixture_file = 'files/fixtures.yml'
file_gpg = 'test.gpg'
key = ENV['MPW_TEST_KEY']
@ -19,45 +20,47 @@ class TestMPW < Test::Unit::TestCase
end
File.delete(file_gpg) if File.exist?(file_gpg)
@mpw = MPW::MPW.new(file_gpg, key)
@fixtures = YAML.load_file(@fixture_file)
@fixtures = YAML.load_file(fixture_file)
end
def test_01_import_yaml
import_file = 'files/test_import.yml'
assert(@mpw.import(import_file, :yaml))
assert_equal(2, @mpw.search.length)
assert_equal(2, @mpw.list.length)
result = @mpw.search[0]
assert_equal(@fixtures['add']['name'], result['name'])
assert_equal(@fixtures['add']['group'], result['group'])
assert_equal(@fixtures['add']['host'], result['host'])
assert_equal(@fixtures['add']['protocol'], result['protocol'])
assert_equal(@fixtures['add']['login'], result['login'])
assert_equal(@fixtures['add']['password'], result['password'])
assert_equal(@fixtures['add']['port'].to_i, result['port'])
assert_equal(@fixtures['add']['comment'], result['comment'])
item = @mpw.list[0]
assert_equal(@fixtures['add_new']['name'], item.name)
assert_equal(@fixtures['add_new']['group'], item.group)
assert_equal(@fixtures['add_new']['host'], item.host)
assert_equal(@fixtures['add_new']['protocol'], item.protocol)
assert_equal(@fixtures['add_new']['user'], item.user)
assert_equal(@fixtures['add_new']['password'], item.password)
assert_equal(@fixtures['add_new']['port'].to_i, item.port)
assert_equal(@fixtures['add_new']['comment'], item.comment)
end
def test_02_export_yaml
import_file = 'files/test_import.yml'
export_file = 'test_export.yml'
assert(@mpw.import(@fixture_file))
assert_equal(2, @mpw.search.length)
assert(@mpw.import(import_file))
assert_equal(2, @mpw.list.length)
assert(@mpw.export(export_file, :yaml))
export = YAML::load_file(export_file)
assert_equal(2, export.length)
result = export.values[0]
assert_equal(@fixtures['add']['name'], result['name'])
assert_equal(@fixtures['add']['group'], result['group'])
assert_equal(@fixtures['add']['host'], result['host'])
assert_equal(@fixtures['add']['protocol'], result['protocol'])
assert_equal(@fixtures['add']['login'], result['login'])
assert_equal(@fixtures['add']['password'], result['password'])
assert_equal(@fixtures['add']['port'].to_i, result['port'])
assert_equal(@fixtures['add']['comment'], result['comment'])
assert_equal(@fixtures['add_new']['name'], result['name'])
assert_equal(@fixtures['add_new']['group'], result['group'])
assert_equal(@fixtures['add_new']['host'], result['host'])
assert_equal(@fixtures['add_new']['protocol'], result['protocol'])
assert_equal(@fixtures['add_new']['user'], result['user'])
assert_equal(@fixtures['add_new']['password'], result['password'])
assert_equal(@fixtures['add_new']['port'].to_i, result['port'])
assert_equal(@fixtures['add_new']['comment'], result['comment'])
File.unlink(export_file)
end
@ -66,155 +69,73 @@ class TestMPW < Test::Unit::TestCase
import_file = 'files/test_import.csv'
assert(@mpw.import(import_file, :csv))
assert_equal(2, @mpw.search.length)
assert_equal(2, @mpw.list.length)
import = CSV.parse(File.read(import_file), headers: true)
result = @mpw.search[0]
assert_equal(import[0]['name'], result['name'])
assert_equal(import[0]['group'], result['group'])
assert_equal(import[0]['host'], result['host'])
assert_equal(import[0]['protocol'], result['protocol'])
assert_equal(import[0]['login'], result['login'])
assert_equal(import[0]['password'], result['password'])
assert_equal(import[0]['port'].to_i, result['port'])
assert_equal(import[0]['comment'], result['comment'])
item = @mpw.list[0]
assert_equal(import[0]['name'], item.name)
assert_equal(import[0]['group'], item.group)
assert_equal(import[0]['host'], item.host)
assert_equal(import[0]['protocol'], item.protocol)
assert_equal(import[0]['user'], item.user)
assert_equal(import[0]['password'], item.password)
assert_equal(import[0]['port'].to_i, item.port)
assert_equal(import[0]['comment'], item.comment)
end
def test_04_export_csv
import_file = 'files/test_import.csv'
export_file = 'test_export.csv'
assert(@mpw.import(@fixture_file))
assert_equal(2, @mpw.search.length)
assert(@mpw.import(import_file, :csv))
assert_equal(2, @mpw.list.length)
assert(@mpw.export(export_file, :csv))
export = CSV.parse(File.read(export_file), headers: true)
assert_equal(2, export.length)
result = export[0]
assert_equal(@fixtures['add']['name'], result['name'])
assert_equal(@fixtures['add']['group'], result['group'])
assert_equal(@fixtures['add']['host'], result['host'])
assert_equal(@fixtures['add']['protocol'], result['protocol'])
assert_equal(@fixtures['add']['login'], result['login'])
assert_equal(@fixtures['add']['password'], result['password'])
assert_equal(@fixtures['add']['port'], result['port'])
assert_equal(@fixtures['add']['comment'], result['comment'])
assert_equal(@fixtures['add_new']['name'], result['name'])
assert_equal(@fixtures['add_new']['group'], result['group'])
assert_equal(@fixtures['add_new']['host'], result['host'])
assert_equal(@fixtures['add_new']['protocol'], result['protocol'])
assert_equal(@fixtures['add_new']['user'], result['user'])
assert_equal(@fixtures['add_new']['password'], result['password'])
assert_equal(@fixtures['add_new']['port'], result['port'])
assert_equal(@fixtures['add_new']['comment'], result['comment'])
File.unlink(export_file)
end
def test_05_add
assert(@mpw.update(@fixtures['add']['name'],
@fixtures['add']['group'],
@fixtures['add']['host'],
@fixtures['add']['protocol'],
@fixtures['add']['login'],
@fixtures['add']['password'],
@fixtures['add']['port'],
@fixtures['add']['comment']))
def test_05_add_item
data = {name: @fixtures['add_new']['name'],
group: @fixtures['add_new']['group'],
host: @fixtures['add_new']['host'],
protocol: @fixtures['add_new']['protocol'],
user: @fixtures['add_new']['user'],
password: @fixtures['add_new']['password'],
port: @fixtures['add_new']['port'],
comment: @fixtures['add_new']['comment'],
}
assert_equal(1, @mpw.search.length)
item = MPW::Item.new(data)
result = @mpw.search[0]
assert_equal(@fixtures['add']['name'], result['name'])
assert_equal(@fixtures['add']['group'], result['group'])
assert_equal(@fixtures['add']['host'], result['host'])
assert_equal(@fixtures['add']['protocol'], result['protocol'])
assert_equal(@fixtures['add']['login'], result['login'])
assert_equal(@fixtures['add']['password'], result['password'])
assert_equal(@fixtures['add']['port'].to_i, result['port'])
assert_equal(@fixtures['add']['comment'], result['comment'])
assert(!item.nil?)
assert(!item.empty?)
assert(@mpw.update(@fixtures['add']['name'],
@fixtures['add']['group'],
@fixtures['add']['host'],
@fixtures['add']['protocol'],
@fixtures['add']['login'],
@fixtures['add']['password'],
@fixtures['add']['port'],
@fixtures['add']['comment']))
assert(@mpw.add(item))
assert_equal(1, @mpw.list.length)
assert_equal(2, @mpw.search.length)
end
def test_06_add_empty_name
assert(!@mpw.update('',
@fixtures['add']['group'],
@fixtures['add']['host'],
@fixtures['add']['protocol'],
@fixtures['add']['login'],
@fixtures['add']['password'],
@fixtures['add']['port'],
@fixtures['add']['comment']))
assert_equal(0, @mpw.search.length)
end
def test_07_update_empty
assert(@mpw.import(@fixture_file, :yaml))
assert_equal(2, @mpw.search.length)
id = @mpw.search[0]['id']
assert(@mpw.update('','', '','','','','', '', id))
result = @mpw.search_by_id(id)
assert_equal(@fixtures['add']['name'], result['name'])
assert_equal(@fixtures['add']['group'], result['group'])
assert_equal(@fixtures['add']['host'], result['host'])
assert_equal(@fixtures['add']['protocol'], result['protocol'])
assert_equal(@fixtures['add']['login'], result['login'])
assert_equal(@fixtures['add']['password'], result['password'])
assert_equal(@fixtures['add']['port'].to_i, result['port'])
assert_equal(@fixtures['add']['comment'], result['comment'])
end
def test_08_update
assert(@mpw.import(@fixture_file, :yaml))
assert_equal(2, @mpw.search.length)
id = @mpw.search[0]['id']
assert(@mpw.update(@fixtures['update']['name'],
@fixtures['update']['group'],
@fixtures['update']['host'],
@fixtures['update']['protocol'],
@fixtures['update']['login'],
@fixtures['update']['password'],
@fixtures['update']['port'],
@fixtures['update']['comment'],
id))
assert_equal(2, @mpw.search.length)
result = @mpw.search_by_id(id)
assert_equal(@fixtures['update']['name'], result['name'])
assert_equal(@fixtures['update']['group'], result['group'])
assert_equal(@fixtures['update']['host'], result['host'])
assert_equal(@fixtures['update']['protocol'], result['protocol'])
assert_equal(@fixtures['update']['login'], result['login'])
assert_equal(@fixtures['update']['password'], result['password'])
assert_equal(@fixtures['update']['port'].to_i, result['port'])
assert_equal(@fixtures['update']['comment'], result['comment'])
end
def test_09_remove
assert(@mpw.import(@fixture_file, :yaml))
assert_equal(2, @mpw.search.length)
id = @mpw.search[0]['id']
assert(@mpw.remove(id))
assert_equal(1, @mpw.search.length)
end
def test_10_remove_noexistent
assert(@mpw.import(@fixture_file, :yaml))
assert_equal(2, @mpw.search.length)
assert(!@mpw.remove('TEST_NOEXISTENT_ID'))
assert_equal(2, @mpw.search.length)
item = @mpw.list[0]
assert_equal(@fixtures['add_new']['name'], item.name)
assert_equal(@fixtures['add_new']['group'], item.group)
assert_equal(@fixtures['add_new']['host'], item.host)
assert_equal(@fixtures['add_new']['protocol'], item.protocol)
assert_equal(@fixtures['add_new']['user'], item.user)
assert_equal(@fixtures['add_new']['password'], item.password)
assert_equal(@fixtures['add_new']['port'].to_i, item.port)
assert_equal(@fixtures['add_new']['comment'], item.comment)
end
def test_11_encrypt_empty_file
@ -222,75 +143,38 @@ class TestMPW < Test::Unit::TestCase
end
def test_12_encrypt
assert(@mpw.import(@fixture_file, :yaml))
assert_equal(2, @mpw.search.length)
import_file = 'files/test_import.yml'
assert(@mpw.import(import_file, :yaml))
assert_equal(2, @mpw.list.length)
assert(@mpw.encrypt)
end
def test_13_decrypt_empty_file
assert(@mpw.decrypt)
assert_equal(0, @mpw.search.length)
assert_equal(0, @mpw.list.length)
end
def test_14_decrypt
assert(@mpw.import(@fixture_file, :yaml))
assert_equal(2, @mpw.search.length)
import_file = 'files/test_import.yml'
assert(@mpw.import(import_file, :yaml))
assert_equal(2, @mpw.list.length)
assert(@mpw.encrypt)
assert(@mpw.decrypt)
assert_equal(2, @mpw.search.length)
assert_equal(2, @mpw.list.length)
result = @mpw.search[0]
assert_equal(@fixtures['add']['name'], result['name'])
assert_equal(@fixtures['add']['group'], result['group'])
assert_equal(@fixtures['add']['host'], result['host'])
assert_equal(@fixtures['add']['protocol'], result['protocol'])
assert_equal(@fixtures['add']['login'], result['login'])
assert_equal(@fixtures['add']['password'], result['password'])
assert_equal(@fixtures['add']['port'].to_i, result['port'])
assert_equal(@fixtures['add']['comment'], result['comment'])
end
def test_15_sync_local_empty
import_file = 'files/test_import.yml'
data = []
YAML.load_file(import_file).each_value { |v| data.push(v) }
@mpw.sync(data, 0)
result = @mpw.search[0]
assert_equal(@fixtures['add']['name'], result['name'])
assert_equal(@fixtures['add']['group'], result['group'])
assert_equal(@fixtures['add']['host'], result['host'])
assert_equal(@fixtures['add']['protocol'], result['protocol'])
assert_equal(@fixtures['add']['login'], result['login'])
assert_equal(@fixtures['add']['password'], result['password'])
assert_equal(@fixtures['add']['port'].to_i, result['port'])
assert_equal(@fixtures['add']['comment'], result['comment'])
assert_equal(2, @mpw.search.length)
end
def test_16_sync_remote_outdated_and_local_empty
import_file = 'files/test_import.yml'
data = []
YAML.load_file(import_file).each_value { |v| data.push(v) }
assert(@mpw.sync(data, Time.now.to_i))
assert_equal(0, @mpw.search.length)
end
def test_17_sync_empty_data
assert(@mpw.import(@fixture_file, :yaml))
assert_equal(2, @mpw.search.length)
assert(@mpw.sync([], 0))
assert_equal(2, @mpw.search.length)
item = @mpw.list[0]
assert_equal(@fixtures['add_new']['name'], item.name)
assert_equal(@fixtures['add_new']['group'], item.group)
assert_equal(@fixtures['add_new']['host'], item.host)
assert_equal(@fixtures['add_new']['protocol'], item.protocol)
assert_equal(@fixtures['add_new']['user'], item.user)
assert_equal(@fixtures['add_new']['password'], item.password)
assert_equal(@fixtures['add_new']['port'].to_i, item.port)
assert_equal(@fixtures['add_new']['comment'], item.comment)
end
end