Merge branch 'master' of https://github.com/jgoodman/Freeside
[freeside.git] / rt / t / web / installer.t
1 use strict;
2 use warnings;
3
4 $ENV{RT_TEST_WEB_HANDLER} = 'plack+rt-server';
5 use RT::Test
6     tests       => undef,
7     nodb        => 1,
8     server_ok   => 1;
9
10 my ($base, $m) = RT::Test->started_ok;
11
12 $m->warning_like(qr/If this is a new installation of RT/,
13                  "Got startup warning");
14
15 $m->get_ok($base);
16 like $m->uri, qr/Install/, 'at installer';
17
18 diag "Testing language change";
19 {
20     $m->submit_form_ok(
21         {
22             with_fields => {
23                 Lang => 'fr',
24             },
25             button => 'ChangeLang',
26         },
27         'change language to french'
28     );
29     $m->content_like(qr/RT\s+pour\s+example\.com/i);
30     $m->submit_form_ok(
31         {
32             with_fields => {
33                 Lang => 'en',
34             },
35             button => 'ChangeLang',
36         },
37         'change language to english'
38     );
39     $m->content_like(qr/RT\s+for\s+example\.com/i);
40 }
41
42 diag "Walking through install screens setting defaults";
43 {
44     $m->click_ok('Run');
45
46     # Database type
47     $m->content_contains('DatabaseType');
48     $m->content_contains($_, "found database $_")
49         for qw(MySQL PostgreSQL Oracle SQLite);
50     $m->submit();
51
52     # Database details
53     $m->content_contains('DatabaseName');
54     if (RT->Config->Get('DatabaseType') eq 'SQLite') {
55         $m->submit;
56     } else {
57         $m->submit_form(with_fields => {
58             DatabaseAdmin         => $ENV{RT_DBA_USER},
59             DatabaseAdminPassword => $ENV{RT_DBA_PASSWORD},
60             DatabasePassword      => "rt_pass",
61         });
62     }
63     $m->content_contains('Connection succeeded');
64     $m->submit_form_ok({ button => 'Next' });
65
66     # Basic options
67     $m->submit_form_ok({
68         with_fields => {
69             Password    => 'password',
70         }
71     }, 'set root password');
72
73     # Mail options
74     $m->submit_form_ok({
75         with_fields => {
76             OwnerEmail  => 'admin@example.com',
77         },
78     }, 'set admin email');
79
80     # Mail addresses
81     $m->submit_form_ok({
82         with_fields => {
83             CorrespondAddress   => 'rt@example.com',
84             CommentAddress      => 'rt-comment@example.com',
85         },
86     }, 'set addresses');
87
88     # Initialize database
89     $m->content_contains('database');
90     $m->submit();
91
92     # Finish
93     $m->content_contains('/RT_SiteConfig.pm');
94     $m->content_contains('Finish');
95     $m->submit();
96
97     $m->content_contains('Login');
98     ok $m->login(), 'logged in';
99 }
100
101 RT::Test::__drop_database();
102 undef $m;
103 done_testing;