rt 4.2.14 (#13852)
[freeside.git] / rt / t / web / login.t
1 use strict;
2 use warnings;
3
4 use RT::Test;
5
6 RT::Config->Set(AllowLoginPasswordAutoComplete => 1);
7
8 my ( $baseurl, $m ) = RT::Test->started_ok;
9
10 my $ticket = RT::Test->create_ticket(
11     Subject => 'ticket_foo',
12     Queue   => 'General',
13 );
14
15 my ( $user, $pass ) = ( 'root', 'password' );
16
17 diag "normal login";
18 {
19     $m->get($baseurl);
20     $m->title_is('Login');
21     is( $m->uri, $baseurl, "right url" );
22     $m->content_lacks('autocomplete="off"');
23
24     $m->submit_form(
25         form_id => 'login',
26         fields  => {
27             user => $user,
28             pass => 'wrong pass',
29         }
30     );
31     $m->content_contains( "Your username or password is incorrect",
32         'login error message' );
33     $m->warning_like( qr/FAILED LOGIN for root/,
34         "got failed login warning" );
35
36     $m->submit_form(
37         form_id => 'login',
38         fields  => {
39             user => $user,
40             pass => $pass,
41         }
42     );
43
44     $m->title_is( 'RT at a glance', 'logged in' );
45
46     $m->follow_link_ok( { text => 'Logout' }, 'follow logout' );
47     $m->title_is( 'Logout', 'logout' );
48 }
49
50 diag "tangent login";
51
52 {
53     $m->get( $baseurl . '/Ticket/Display.html?id=1' );
54     $m->title_is('Login');
55     $m->submit_form(
56         form_id => 'login',
57         fields  => {
58             user => $user,
59             pass => $pass,
60         }
61     );
62     like( $m->uri, qr{/Ticket/Display\.html}, 'normal ticket page' );
63     $m->follow_link_ok( { text => 'Logout' }, 'follow logout' );
64 }
65
66 diag "mobile login with not mobile client";
67 {
68     $m->get( $baseurl . '/m' );
69     is( $m->uri, $baseurl . '/m', "right url" );
70     $m->content_contains( "/m/index.html?NotMobile=1", 'mobile login' );
71
72     $m->submit_form(
73         form_id => 'login',
74         fields  => {
75             user => $user,
76             pass => 'wrong pass',
77         }
78     );
79     $m->content_contains( "Your username or password is incorrect",
80         'login error message' );
81     $m->warning_like( qr/FAILED LOGIN for root/,
82         "got failed login warning" );
83
84     $m->submit_form(
85         form_id => 'login',
86         fields  => {
87             user => $user,
88             pass => $pass,
89         }
90     );
91     like( $m->uri, qr{\Q$baseurl/m\E}, "mobile url" );
92     $m->follow_link_ok( { text => 'Logout' }, 'follow logout' );
93     $m->content_contains( "/m/index.html?NotMobile=1",
94         'back to mobile login page' );
95     $m->content_lacks( 'Logout', 'really logout' );
96 }
97
98
99 diag "mobile normal login";
100 {
101
102     # default browser in android 2.3.6
103     $m->agent(
104 "Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus One Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
105     );
106
107     $m->get($baseurl);
108     is( $m->uri, $baseurl, "right url" );
109     $m->content_contains( "/m/index.html?NotMobile=1", 'mobile login' );
110     $m->submit_form(
111         form_id => 'login',
112         fields  => {
113             user => $user,
114             pass => $pass,
115         }
116     );
117     is( $m->uri, $baseurl . '/m/', "mobile url" );
118     $m->follow_link_ok( { text => 'Logout' }, 'follow logout' );
119     $m->content_contains( "/m/index.html?NotMobile=1", 'back to mobile login page' );
120     $m->content_lacks( 'Logout', 'really logout' );
121 }
122
123 diag "mobile tangent login";
124 {
125     $m->get( $baseurl . '/Ticket/Display.html?id=1' );
126     $m->content_contains( "/m/index.html?NotMobile=1", 'mobile login' );
127     $m->submit_form(
128         form_id => 'login',
129         fields  => {
130             user => $user,
131             pass => $pass,
132         }
133     );
134     like( $m->uri, qr{/m/ticket/show}, 'mobile ticket page' );
135 }
136