|
@@ -1,390 +0,0 @@
|
|
|
-# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
|
|
|
-
|
|
|
-require 'integration_test_helper'
|
|
|
-
|
|
|
-class PackageTest < ActiveSupport::TestCase
|
|
|
-
|
|
|
- test 'packages' do
|
|
|
- tests = [
|
|
|
-
|
|
|
- # test 1 - normal install
|
|
|
- {
|
|
|
- zpm: '{
|
|
|
- "name": "UnitTestSample",
|
|
|
- "version": "1.0.1",
|
|
|
- "vendor": "Zammad GmbH",
|
|
|
- "license": "ABC",
|
|
|
- "url": "http://zammad.org/",
|
|
|
- "description": [
|
|
|
- {
|
|
|
- "language": "en",
|
|
|
- "text": "some description"
|
|
|
- }
|
|
|
- ],
|
|
|
- "files": [
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "test.txt",
|
|
|
- "content": "YWJjw6TDtsO8w58="
|
|
|
- },
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "some/dir/test.txt",
|
|
|
- "content": "YWJjw6TDtsO8w58="
|
|
|
- },
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "db/addon/unit_test_sample/20121212000001_create_base.rb",
|
|
|
- "content": "Y2xhc3MgQ3JlYXRlQmFzZSA8IEFjdGl2ZVJlY29yZDo6TWlncmF0aW9uWzQuMl0NCiAgZGVmIHNlbGYudXANCiAgIGNyZWF0ZV90YWJsZSA6c2FtcGxlX3RhYmxlcyBkbyB8dHwNCiAgICAgIHQuY29sdW1uIDpuYW1lLCAgICAgICAgICAgOnN0cmluZywgOmxpbWl0ID0+IDE1MCwgIDpudWxsID0+IHRydWUNCiAgICAgIHQuY29sdW1uIDpkYXRhLCAgICAgICAgICAgOnN0cmluZywgOmxpbWl0ID0+IDUwMDAsIDpudWxsID0+IHRydWUNCiAgICBlbmQNCiAgZW5kDQoNCiAgZGVmIHNlbGYuZG93bg0KICAgIGRyb3BfdGFibGUgOnNhbXBsZV90YWJsZXMNCiAgZW5kDQplbmQ="
|
|
|
- }
|
|
|
- ]
|
|
|
-}',
|
|
|
- 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 - renstall
|
|
|
- {
|
|
|
- action: 'reinstall',
|
|
|
- name: 'UnitTestSample',
|
|
|
- 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 3 - try to install same package again / should not work
|
|
|
- {
|
|
|
- zpm: '{
|
|
|
- "name": "UnitTestSample",
|
|
|
- "version": "1.0.1",
|
|
|
- "vendor": "Zammad GmbH",
|
|
|
- "license": "ABC",
|
|
|
- "url": "http://zammad.org/",
|
|
|
- "description": [
|
|
|
- {
|
|
|
- "language": "en",
|
|
|
- "text": "some description"
|
|
|
- }
|
|
|
- ],
|
|
|
- "files": [
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "test.txt",
|
|
|
- "content": "YWJjw6TDtsO8w58="
|
|
|
- }
|
|
|
- ]
|
|
|
-}',
|
|
|
- action: 'install',
|
|
|
- result: false,
|
|
|
- },
|
|
|
-
|
|
|
- # test 4 - try to install lower version / should not work
|
|
|
- {
|
|
|
- zpm: '{
|
|
|
- "name": "UnitTestSample",
|
|
|
- "version": "1.0.0",
|
|
|
- "vendor": "Zammad GmbH",
|
|
|
- "license": "ABC",
|
|
|
- "url": "http://zammad.org/",
|
|
|
- "description": [
|
|
|
- {
|
|
|
- "language": "en",
|
|
|
- "text": "some description"
|
|
|
- }
|
|
|
- ],
|
|
|
- "files": [
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "test.txt",
|
|
|
- "content": "YWJjw6TDtsO8w58="
|
|
|
- }
|
|
|
- ]
|
|
|
-}',
|
|
|
- action: 'install',
|
|
|
- result: false,
|
|
|
- },
|
|
|
-
|
|
|
- # test 5 - upgrade 7 should work
|
|
|
- {
|
|
|
- zpm: '{
|
|
|
- "name": "UnitTestSample",
|
|
|
- "version": "1.0.2",
|
|
|
- "vendor": "Zammad GmbH",
|
|
|
- "license": "ABC",
|
|
|
- "url": "http://zammad.org/",
|
|
|
- "description": [
|
|
|
- {
|
|
|
- "language": "en",
|
|
|
- "text": "some description"
|
|
|
- }
|
|
|
- ],
|
|
|
- "files": [
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "test.txt2",
|
|
|
- "content": "YWJjw6TDtsO8w58="
|
|
|
- },
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "some/dir/test.txt2",
|
|
|
- "content": "YWJjw6TDtsO8w58="
|
|
|
- },
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "db/addon/unit_test_sample/20121212000001_create_base.rb",
|
|
|
- "content": "Y2xhc3MgQ3JlYXRlQmFzZSA8IEFjdGl2ZVJlY29yZDo6TWlncmF0aW9uWzQuMl0NCiAgZGVmIHNlbGYudXANCiAgIGNyZWF0ZV90YWJsZSA6c2FtcGxlX3RhYmxlcyBkbyB8dHwNCiAgICAgIHQuY29sdW1uIDpuYW1lLCAgICAgICAgICAgOnN0cmluZywgOmxpbWl0ID0+IDE1MCwgIDpudWxsID0+IHRydWUNCiAgICAgIHQuY29sdW1uIDpkYXRhLCAgICAgICAgICAgOnN0cmluZywgOmxpbWl0ID0+IDUwMDAsIDpudWxsID0+IHRydWUNCiAgICBlbmQNCiAgZW5kDQoNCiAgZGVmIHNlbGYuZG93bg0KICAgIGRyb3BfdGFibGUgOnNhbXBsZV90YWJsZXMNCiAgZW5kDQplbmQ="
|
|
|
- }
|
|
|
- ]
|
|
|
-}',
|
|
|
- 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 6 - 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 7 - check auto_install mechanism
|
|
|
- {
|
|
|
- zpm: '{
|
|
|
- "name": "UnitTestSample",
|
|
|
- "version": "1.0.2",
|
|
|
- "vendor": "Zammad GmbH",
|
|
|
- "license": "ABC",
|
|
|
- "url": "http://zammad.org/",
|
|
|
- "description": [
|
|
|
- {
|
|
|
- "language": "en",
|
|
|
- "text": "some description"
|
|
|
- }
|
|
|
- ],
|
|
|
- "files": [
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "test.txt2",
|
|
|
- "content": "YWJjw6TDtsO8w58="
|
|
|
- },
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "some/dir/test.txt2",
|
|
|
- "content": "YWJjw6TDtsO8w58="
|
|
|
- },
|
|
|
- {
|
|
|
- "permission": "644",
|
|
|
- "location": "db/addon/unit_test_sample/20121212000001_create_base.rb",
|
|
|
- "content": "Y2xhc3MgQ3JlYXRlQmFzZSA8IEFjdGl2ZVJlY29yZDo6TWlncmF0aW9uWzQuMl0NCiAgZGVmIHNlbGYudXANCiAgIGNyZWF0ZV90YWJsZSA6c2FtcGxlX3RhYmxlcyBkbyB8dHwNCiAgICAgIHQuY29sdW1uIDpuYW1lLCAgICAgICAgICAgOnN0cmluZywgOmxpbWl0ID0+IDE1MCwgIDpudWxsID0+IHRydWUNCiAgICAgIHQuY29sdW1uIDpkYXRhLCAgICAgICAgICAgOnN0cmluZywgOmxpbWl0ID0+IDUwMDAsIDpudWxsID0+IHRydWUNCiAgICBlbmQNCiAgZW5kDQoNCiAgZGVmIHNlbGYuZG93bg0KICAgIGRyb3BfdGFibGUgOnNhbXBsZV90YWJsZXMNCiAgZW5kDQplbmQ="
|
|
|
- }
|
|
|
- ]
|
|
|
-}',
|
|
|
- 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 8 - 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 do |test|
|
|
|
- case test[:action]
|
|
|
- when 'install'
|
|
|
- begin
|
|
|
- package = Package.install(string: test[:zpm])
|
|
|
- rescue => e
|
|
|
- puts "ERROR: #{e.inspect}"
|
|
|
- end
|
|
|
- if test[:result]
|
|
|
- assert(package, 'install package not successful')
|
|
|
- issues = package.verify
|
|
|
- assert_not(issues, 'package verify not successful')
|
|
|
- else
|
|
|
- assert_not(package, 'install package successful but should not')
|
|
|
- end
|
|
|
- when 'reinstall'
|
|
|
- begin
|
|
|
- package = Package.reinstall(test[:name])
|
|
|
- rescue
|
|
|
- package = false
|
|
|
- end
|
|
|
- if test[:result]
|
|
|
- assert(package, 'reinstall package not successful')
|
|
|
- issues = package.verify
|
|
|
- assert_not(issues, 'package verify not successful')
|
|
|
- else
|
|
|
- assert_not(package, 'reinstall package successful but should not')
|
|
|
- end
|
|
|
- when 'uninstall'
|
|
|
- if test[:zpm]
|
|
|
- begin
|
|
|
- package = Package.uninstall(string: test[:zpm])
|
|
|
- rescue
|
|
|
- package = false
|
|
|
- end
|
|
|
- else
|
|
|
- begin
|
|
|
- package = Package.uninstall(name: test[:name], version: test[:version])
|
|
|
- rescue
|
|
|
- package = false
|
|
|
- end
|
|
|
- end
|
|
|
- if test[:result]
|
|
|
- assert(package, 'uninstall package not successful')
|
|
|
- else
|
|
|
- assert_not(package, 'uninstall package successful but should not')
|
|
|
- end
|
|
|
- when 'auto_install'
|
|
|
- if test[:zpm]
|
|
|
-
|
|
|
- FileUtils.mkdir_p(Rails.root.join('auto_install'))
|
|
|
-
|
|
|
- location = Rails.root.join('auto_install/unittest.zpm')
|
|
|
- file = File.new(location, 'wb')
|
|
|
- file.write(test[:zpm])
|
|
|
- file.close
|
|
|
- end
|
|
|
- begin
|
|
|
- Package.auto_install
|
|
|
- rescue
|
|
|
- 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
|
|
|
- next if !test[:verify]
|
|
|
- next if !test[:verify][:check_files]
|
|
|
-
|
|
|
- test[:verify][:check_files].each do |item|
|
|
|
- exists = File.exist?(item[:location])
|
|
|
- if item[:result]
|
|
|
- assert(exists, "'#{item[:location]}' exists")
|
|
|
- else
|
|
|
- assert_not(exists, "'#{item[:location]}' doesn't exists")
|
|
|
- end
|
|
|
- end
|
|
|
- end
|
|
|
-
|
|
|
- end
|
|
|
-end
|