# encoding: utf-8 require 'test_helper' class PackageTest < ActiveSupport::TestCase test 'packages' do tests = [ # test 1 - normal install { :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 - try to install same package again / should not work { :zpm => ' UnitTestSample 1.0.1 Znuny GmbH http://znuny.org/ ABC some description YWJjw6TDtsO8w58= ', :action => 'install', :result => false, }, # test 3 - try to install lower version / should not work { :zpm => ' UnitTestSample 1.0.0 Znuny GmbH http://znuny.org/ ABC some description YWJjw6TDtsO8w58= ', :action => 'install', :result => false, }, # test 4 - upgrade 7 should work { :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 - uninstall package / should work { :name => 'UnitTestSample', :version => '1.0.2', :action => 'uninstall', :result => true, :verify => { :check_files => [ { :location => 'test.txt', :result => false, }, { :location => 'test2.txt', :result => false, }, ], }, }, # test 5 - check auto_install mechanism { :zpm => ' UnitTestSample 1.0.2 Znuny GmbH http://znuny.org/ ABC some description YWJjw6TDtsO8w58= YWJjw6TDtsO8w58= Y2xhc3MgQ3JlYXRlQmFzZSA8IEFjdGl2ZVJlY29yZDo6TWlncmF0aW9uDQogIGRlZiBzZWxmLnVw DQogICBjcmVhdGVfdGFibGUgOnNhbXBsZV90YWJsZXMgZG8gfHR8DQogICAgICB0LmNvbHVtbiA6 bmFtZSwgICAgICAgICAgIDpzdHJpbmcsIDpsaW1pdCA9PiAxNTAsICA6bnVsbCA9PiB0cnVlDQog ICAgICB0LmNvbHVtbiA6ZGF0YSwgICAgICAgICAgIDpzdHJpbmcsIDpsaW1pdCA9PiA1MDAwLCA6 bnVsbCA9PiB0cnVlDQogICAgZW5kDQogIGVuZA0KDQogIGRlZiBzZWxmLmRvd24NCiAgICBkcm9w X3RhYmxlIDpzYW1wbGVfdGFibGVzDQogIGVuZA0KZW5k ', :action => 'auto_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 6 - check uninstall / should work { :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], :version => 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 elsif test[:action] == 'auto_install' if test[:zpm] if !File.exist?( Rails.root.to_s + '/auto_install/' ) Dir.mkdir( Rails.root.to_s + '/auto_install/', 0755) end location = Rails.root.to_s + '/auto_install/unittest.zpm' file = File.new( location, 'wb' ) file.write( test[:zpm] ) file.close end begin success = Package.auto_install() rescue success = false end if test[:zpm] File.delete( location ) 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