From ea10d24c386707505e506f81162af3084f51de04 Mon Sep 17 00:00:00 2001 From: Thorsten Eckel Date: Wed, 13 Jan 2016 16:59:26 +0100 Subject: [PATCH 1/4] Current state of browser test. --- test/integration/otrs_import_browser_test.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/integration/otrs_import_browser_test.rb b/test/integration/otrs_import_browser_test.rb index 816f56d47..d7e386a1f 100644 --- a/test/integration/otrs_import_browser_test.rb +++ b/test/integration/otrs_import_browser_test.rb @@ -20,11 +20,21 @@ class OtrsImportBrowserTest < TestCase click(css: 'a[href="#import/otrs"]') + click(css: 'a.js-download') + + click(css: 'a.js-otrs-link') + set( css: '#otrs-link', value: import_url ) + exists( + css: 'svg.icon-checkmark' + ) + + click(css: 'a.js-migration-start') + watch_for( css: 'body', value: 'xxxx', From 437023ac79bebcf74501fe466015ab9e29dbe3a0 Mon Sep 17 00:00:00 2001 From: Thorsten Eckel Date: Wed, 13 Jan 2016 17:14:28 +0100 Subject: [PATCH 2/4] Fixed bug: Invalid API keys are validated as correct. --- app/controllers/import_otrs_controller.rb | 31 +++++++++++++++-------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/app/controllers/import_otrs_controller.rb b/app/controllers/import_otrs_controller.rb index 7b84208a2..24a174659 100644 --- a/app/controllers/import_otrs_controller.rb +++ b/app/controllers/import_otrs_controller.rb @@ -22,9 +22,7 @@ class ImportOtrsController < ApplicationController 'Connection refused' => 'Connection refused!', } - url_parts = params[:url].split(';') - - response = UserAgent.request( url_parts[0] ) + response = UserAgent.request( params[:url] ) if !response.success? && response.code.to_s !~ /^40.$/ message_human = '' @@ -44,16 +42,27 @@ class ImportOtrsController < ApplicationController result = {} if response.body =~ /zammad migrator/ - key_parts = url_parts[1].split('=') + migrator_response = JSON.parse(response.body) - Setting.set('import_backend', 'otrs') - Setting.set('import_otrs_endpoint', url_parts[0]) - Setting.set('import_otrs_endpoint_key', key_parts[1]) + if migrator_response['Success'] == 1 - result = { - result: 'ok', - url: params[:url], - } + url_parts = params[:url].split(';') + key_parts = url_parts[1].split('=') + + Setting.set('import_backend', 'otrs') + Setting.set('import_otrs_endpoint', url_parts[0]) + Setting.set('import_otrs_endpoint_key', key_parts[1]) + + result = { + result: 'ok', + url: params[:url], + } + else + result = { + result: 'invalid', + message_human: migrator_response['Error'] + } + end elsif response.body =~ /(otrs\sag|otrs\.com|otrs\.org)/i result = { result: 'invalid', From e779f459b413205b9b3745da27e67961e5c91bca Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 13 Jan 2016 17:33:08 +0100 Subject: [PATCH 3/4] Improved finish of import. --- .../app/controllers/import_otrs.coffee | 8 ++++++-- lib/import/otrs.rb | 5 +++++ test/integration/otrs_import_browser_test.rb | 20 +++++-------------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/app/assets/javascripts/app/controllers/import_otrs.coffee b/app/assets/javascripts/app/controllers/import_otrs.coffee index 2d04674a5..887737c97 100644 --- a/app/assets/javascripts/app/controllers/import_otrs.coffee +++ b/app/assets/javascripts/app/controllers/import_otrs.coffee @@ -18,6 +18,12 @@ class Index extends App.ControllerContent @fetch() + @bind('import:finished', => + console.log('import:finished') + @Config.set('system_init_done', true) + @navigate '#' + ) + fetch: -> # get data @@ -79,7 +85,6 @@ class Index extends App.ControllerContent success: (data, status, xhr) => # validate form - console.log(data) if data.result is 'ok' @urlStatus.attr('data-state', 'success') @linkErrorMessage.text('') @@ -103,7 +108,6 @@ class Index extends App.ControllerContent success: (data, status, xhr) => # validate form - console.log(data) if data.result is 'ok' @delay( @updateMigration, 3000 ) ) diff --git a/lib/import/otrs.rb b/lib/import/otrs.rb index 98c9cd80b..0ec12c2ba 100644 --- a/lib/import/otrs.rb +++ b/lib/import/otrs.rb @@ -412,6 +412,11 @@ module Import::OTRS Setting.set('system_init_done', true) Setting.set('import_mode', false) + # broadcast import finish + Sessions.broadcast( + event: 'import:finished', + ) + true end diff --git a/test/integration/otrs_import_browser_test.rb b/test/integration/otrs_import_browser_test.rb index d7e386a1f..3bbcf81e6 100644 --- a/test/integration/otrs_import_browser_test.rb +++ b/test/integration/otrs_import_browser_test.rb @@ -20,9 +20,9 @@ class OtrsImportBrowserTest < TestCase click(css: 'a[href="#import/otrs"]') - click(css: 'a.js-download') + click(css: '.js-download') - click(css: 'a.js-otrs-link') + click(css: '.js-otrs-link') set( css: '#otrs-link', @@ -33,24 +33,14 @@ class OtrsImportBrowserTest < TestCase css: 'svg.icon-checkmark' ) - click(css: 'a.js-migration-start') + click(css: '.js-migration-start') watch_for( css: 'body', - value: 'xxxx', - timeout: 10, + value: 'login', + timeout: 300, ) - # click import - - # click otrs - - # enter otrs url + key - - # watch for import start - - # watch for import end - end end From 896f33b4ce7990d7d6f0311ecb39c124950569f2 Mon Sep 17 00:00:00 2001 From: Thorsten Eckel Date: Wed, 13 Jan 2016 18:00:43 +0100 Subject: [PATCH 4/4] Added browser test for invalid API key. --- test/integration/otrs_import_browser_test.rb | 24 ++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/test/integration/otrs_import_browser_test.rb b/test/integration/otrs_import_browser_test.rb index 3bbcf81e6..4f59578aa 100644 --- a/test/integration/otrs_import_browser_test.rb +++ b/test/integration/otrs_import_browser_test.rb @@ -11,8 +11,6 @@ class OtrsImportBrowserTest < TestCase fail "ERROR: Need IMPORT_BT_OTRS_ENDPOINT_KEY - hint IMPORT_BT_OTRS_ENDPOINT_KEY='01234567899876543210'" end - import_url = "#{ENV['IMPORT_BT_OTRS_ENDPOINT']};Key=#{ENV['IMPORT_BT_OTRS_ENDPOINT_KEY']}" - @browser = browser_instance location(url: browser_url) @@ -24,13 +22,31 @@ class OtrsImportBrowserTest < TestCase click(css: '.js-otrs-link') + invalid_key_url = "#{ENV['IMPORT_BT_OTRS_ENDPOINT']};Key=31337" + + set( + css: '#otrs-link', + value: invalid_key_url + ) + + sleep 5 + + watch_for( + css: '.otrs-link-error', + value: 'Invalid API key.', + ) + + import_url = "#{ENV['IMPORT_BT_OTRS_ENDPOINT']};Key=#{ENV['IMPORT_BT_OTRS_ENDPOINT_KEY']}" set( css: '#otrs-link', value: import_url ) - exists( - css: 'svg.icon-checkmark' + sleep 5 + + watch_for_disappear( + css: '.otrs-link-error', + value: 'Invalid API key.', ) click(css: '.js-migration-start')