# encoding: utf-8 require 'test_helper' class PackageTest < ActiveSupport::TestCase test 'packages' do tests = [ # test 1 { :zpm => ' UnitTestSample 1.0.1 Znuny GmbH http://znuny.org/ ABC some description YWJjw6TDtsO8w58= YWJjw6TDtsO8w58= Y2xhc3MgQ3JlYXRlQmFzZSA8IEFjdGl2ZVJlY29yZDo6TWlncmF0aW9uDQogIGRlZiBzZWxmLnVw DQogICBjcmVhdGVfdGFibGUgOnNhbXBsZV90YWJsZXMgZG8gfHR8DQogICAgICB0LmNvbHVtbiA6 bmFtZSwgICAgICAgICAgIDpzdHJpbmcsIDpsaW1pdCA9PiAxNTAsICA6bnVsbCA9PiB0cnVlDQog ICAgICB0LmNvbHVtbiA6ZGF0YSwgICAgICAgICAgIDpzdHJpbmcsIDpsaW1pdCA9PiA1MDAwLCA6 bnVsbCA9PiB0cnVlDQogICAgZW5kDQogIGVuZA0KDQogIGRlZiBzZWxmLmRvd24NCiAgICBkcm9w X3RhYmxlIDpzYW1wbGVfdGFibGVzDQogIGVuZA0KZW5k ', :action => 'install', :result => true, :verify => { :package => { :name => 'UnitTestSample', :version => '1.0.1', }, :check_files => [ { :location => 'test.txt', :result => true, }, { :location => 'test2.txt', :result => false, }, { :location => 'some/dir/test.txt', :result => true, }, ], }, }, # test 2 { :zpm => ' UnitTestSample 1.0.1 Znuny GmbH http://znuny.org/ ABC some description YWJjw6TDtsO8w58= ', :action => 'install', :result => false, }, # test 3 { :zpm => ' UnitTestSample 1.0.0 Znuny GmbH http://znuny.org/ ABC some description YWJjw6TDtsO8w58= ', :action => 'install', :result => false, }, # test 4 { :zpm => ' UnitTestSample 1.0.2 Znuny GmbH http://znuny.org/ ABC some description YWJjw6TDtsO8w58= YWJjw6TDtsO8w58= Y2xhc3MgQ3JlYXRlQmFzZSA8IEFjdGl2ZVJlY29yZDo6TWlncmF0aW9uDQogIGRlZiBzZWxmLnVw DQogICBjcmVhdGVfdGFibGUgOnNhbXBsZV90YWJsZXMgZG8gfHR8DQogICAgICB0LmNvbHVtbiA6 bmFtZSwgICAgICAgICAgIDpzdHJpbmcsIDpsaW1pdCA9PiAxNTAsICA6bnVsbCA9PiB0cnVlDQog ICAgICB0LmNvbHVtbiA6ZGF0YSwgICAgICAgICAgIDpzdHJpbmcsIDpsaW1pdCA9PiA1MDAwLCA6 bnVsbCA9PiB0cnVlDQogICAgZW5kDQogIGVuZA0KDQogIGRlZiBzZWxmLmRvd24NCiAgICBkcm9w X3RhYmxlIDpzYW1wbGVfdGFibGVzDQogIGVuZA0KZW5k ', :action => 'install', :result => true, :verify => { :package => { :name => 'UnitTestSample', :version => '1.0.2', }, :check_files => [ { :location => 'test.txt2', :result => true, }, { :location => 'test.txt', :result => false, }, { :location => 'test2.txt', :result => false, }, { :location => 'some/dir/test.txt2', :result => true, }, ], }, }, # test 4 { :name => 'UnitTestSample', :version => '1.0.2', :action => 'uninstall', :result => true, :verify => { :check_files => [ { :location => 'test.txt', :result => false, }, { :location => 'test2.txt', :result => false, }, ], }, }, ] tests.each { |test| if test[:action] == 'install' begin success = Package.install_string( test[:zpm] ) rescue => e puts 'ERROR: ' + e.inspect success = false end if test[:result] assert( success, "install package not successful" ) else assert( !success, "install package successful but should not" ) end elsif test[:action] == 'uninstall' if test[:zpm] begin success = Package.uninstall_string( test[:zpm] ) rescue success = false end else begin success = Package.uninstall_name( test[:name], test[:version] ) rescue success = false end end if test[:result] assert( success, "uninstall package not successful" ) else assert( !success, "uninstall package successful but should not" ) end end if test[:verify] && test[:verify][:package] exists = Package.where( :name => test[:verify][:package][:name], :version => test[:verify][:package][:version] ).first assert( exists, "package '#{test[:verify][:package][:name]}' is not installed" ) end if test[:verify] && test[:verify][:check_files] test[:verify][:check_files].each {|item| exists = File.exist?( item[:location] ) if item[:result] assert( exists, "'#{item[:location]}' exists" ) else assert( !exists, "'#{item[:location]}' doesn't exists" ) end } end } end end