zammad/test/browser/aaa_getting_started_test.rb

337 lines
8.2 KiB
Ruby

# encoding: utf-8
require 'browser_test_helper'
class AaaGettingStartedTest < TestCase
def test_a_getting_started
#return # TODO: temp disable
if !ENV['MAILBOX_INIT']
#raise "Need MAILBOX_INIT as ENV variable like export MAILBOX_INIT='unittest01@znuny.com:somepass'"
puts "NOTICE: Need MAILBOX_INIT as ENV variable like export MAILBOX_INIT='unittest01@znuny.com:somepass'"
return
end
mailbox_user = ENV['MAILBOX_INIT'].split(':')[0]
mailbox_password = ENV['MAILBOX_INIT'].split(':')[1]
@browser = browser_instance
location( url: browser_url )
watch_for(
css: '.setup.wizard',
value: 'setup new system',
)
click( css: '.js-start .btn--primary' )
watch_for(
css: '.setup.wizard',
value: 'admin',
)
set(
css: '.js-admin input[name="firstname"]',
value: 'Test Master',
)
set(
css: '.js-admin input[name="lastname"]',
value: 'Agent',
)
set(
css: '.js-admin input[name="email"]',
value: 'master@example.com',
)
set(
css: '.js-admin input[name="firstname"]',
value: 'Test Master',
)
set(
css: '.js-admin input[name="password"]',
value: 'test1234äöüß',
)
set(
css: '.js-admin input[name="password_confirm"]',
value: 'test1234äöüß',
)
click( css: '.js-admin .btn--success' )
# getting started - base
watch_for(
css: '.js-base h2',
value: 'Organization',
)
set(
css: '.js-base input[name="organization"]',
value: 'Some Organization',
)
set(
css: '.js-base input[name="url"]',
value: 'some host',
)
click(
css: '.js-base .btn--primary',
)
watch_for(
css: 'body',
value: 'A URL looks like',
)
set(
css: '.js-base input[name="url"]',
value: browser_url,
)
click(
css: '.js-base .btn--primary',
)
# getting started - email notification
watch_for(
css: '.js-outbound h2',
value: 'Email Notification',
)
location_check(
url: '#getting_started/email_notification',
)
click(
css: '.js-outbound .btn--primary',
)
# getting started - create email account
watch_for(
css: '.js-channel h2',
value: 'Connect Channels',
)
location_check(
url: '#getting_started/channel',
)
click(
css: '.js-channel .email .provider_name',
)
set(
css: '.js-intro input[name="realname"]',
value: 'Some Realname',
)
set(
css: '.js-intro input[name="email"]',
value: mailbox_user,
)
set(
css: '.js-intro input[name="password"]',
value: mailbox_password,
)
click(
css: '.js-intro .btn--primary',
)
watch_for(
css: 'body',
value: 'verify',
timeout: 20,
)
watch_for(
css: 'body',
value: 'invite',
timeout: 100,
)
# invite agent1
location_check(
url: '#getting_started/agents',
)
set(
css: '.js-agent input[name="firstname"]',
value: 'Agent 1',
)
set(
css: '.js-agent input[name="lastname"]',
value: 'Test',
)
set(
css: '.js-agent input[name="email"]',
value: 'agent1@example.com',
)
# not needed since we hide group selections if only one group exists
#click(
# css: '.js-agent input[name="group_ids"][value="1"]',
#)
click(
css: '.js-agent .btn--success',
)
watch_for(
css: 'body',
value: 'Invitation sent',
)
location_check(
url: '#getting_started/agents',
)
click(
css: '.js-agent .btn--primary',
)
watch_for(
css: 'body',
value: 'My Stats',
)
location_check(
url: '#clues',
#url: '#dashboard',
)
end
def test_b_accounts_auto
#return # TODO: temp disable
accounts = []
(1..10).each {|count|
next if !ENV["MAILBOX_AUTO#{count}"]
mailbox_user = ENV["MAILBOX_AUTO#{count}"].split(':')[0]
mailbox_password = ENV["MAILBOX_AUTO#{count}"].split(':')[1]
account = {
realname: 'auto account',
email: mailbox_user,
password: mailbox_password,
}
accounts.push account
}
if accounts.empty?
#raise "Need min. MAILBOX_AUTO1 as ENV variable like export MAILBOX_AUTO1='nicole.braun2015@gmail.com:somepass'"
puts "NOTICE: Need min. MAILBOX_AUTO1 as ENV variable like export MAILBOX_AUTO1='nicole.braun2015@gmail.com:somepass'"
return
end
@browser = browser_instance
login(
username: 'master@example.com',
password: 'test',
url: browser_url,
)
accounts.each {|account|
# getting started - auto mail
location( url: browser_url + '/#getting_started/channel' )
click(
css: '.js-channel .email .provider_name',
)
set(
css: '.js-intro input[name="realname"]',
value: account[:realname],
)
set(
css: '.js-intro input[name="email"]',
value: account[:email],
)
set(
css: '.js-intro input[name="password"]',
value: account[:password],
)
click(
css: '.js-intro .btn--primary',
)
watch_for(
css: 'body',
value: 'verify',
timeout: 20,
)
watch_for(
css: 'body',
value: 'invite',
timeout: 100,
)
location_check(
url: '#getting_started/agents',
)
}
end
def test_b_accounts_manual
#return # TODO: temp disable
accounts = []
(1..10).each {|count|
next if !ENV["MAILBOX_MANUAL#{count}"]
mailbox_user = ENV["MAILBOX_MANUAL#{count}"].split(':')[0]
mailbox_password = ENV["MAILBOX_MANUAL#{count}"].split(':')[1]
mailbox_inbound = ENV["MAILBOX_MANUAL#{count}"].split(':')[2]
mailbox_outbound = ENV["MAILBOX_MANUAL#{count}"].split(':')[3]
account = {
realname: 'manual account',
email: mailbox_user,
password: mailbox_password,
inbound: {
'options::host' => mailbox_inbound,
},
outbound: {
'options::host' => mailbox_outbound,
},
}
accounts.push account
}
if accounts.empty?
#raise "Need min. MAILBOX_MANUAL1 as ENV variable like export MAILBOX_MANUAL1='nicole.bauer2015@yahoo.de:somepass:imap.mail.yahoo.com:smtp.mail.yahoo.com'"
puts "NOTICE: Need min. MAILBOX_MANUAL1 as ENV variable like export MAILBOX_MANUAL1='nicole.bauer2015@yahoo.de:somepass:imap.mail.yahoo.com:smtp.mail.yahoo.com'"
return
end
@browser = browser_instance
login(
username: 'master@example.com',
password: 'test',
url: browser_url,
)
accounts.each {|account|
# getting started - manual mail
location( url: browser_url + '/#getting_started/channel' )
click(
css: '.js-channel .email .provider_name',
)
set(
css: '.js-intro input[name="realname"]',
value: account[:realname],
)
set(
css: '.js-intro input[name="email"]',
value: account[:email],
)
set(
css: '.js-intro input[name="password"]',
value: account[:password],
)
click(
css: '.js-intro .btn--primary',
)
watch_for(
css: '.js-inbound h2',
value: 'inbound',
timeout: 220,
)
watch_for(
css: '.js-inbound',
value: 'manual',
)
set(
css: '.js-inbound input[name="options::host"]',
value: account[:inbound]['options::host'],
)
click(
css: '.js-inbound .btn--primary',
)
watch_for(
css: '.js-outbound h2',
value: 'outbound',
)
select(
css: '.js-outbound select[name="adapter"]',
value: 'SMTP - configure your own outgoing SMTP settings',
)
set(
css: '.js-outbound input[name="options::host"]',
value: account[:outbound]['options::host'],
)
click(
css: '.js-outbound .btn--primary',
)
watch_for(
css: 'body',
value: 'verify',
)
watch_for(
css: 'body',
value: 'invite',
timeout: 190,
)
location_check(
url: '#getting_started/agents',
)
}
end
end