4 use RT::Test plan => 'no_plan';
9 # Ensure we're logged in for the final warnings check
12 # Force the warnings check before we stop the server
15 RT::Test->stop_server;
18 diag "Continuous + Fallback";
20 RT->Config->Set( DevelMode => 0 );
21 RT->Config->Set( WebRemoteUserAuth => 1 );
22 RT->Config->Set( WebRemoteUserAuthContinuous => 1 );
23 RT->Config->Set( WebFallbackToRTLogin => 1 );
24 RT->Config->Set( WebRemoteUserAutocreate => 0 );
26 my ( $url, $m ) = RT::Test->started_ok( basic_auth => 'anon' );
33 # First request gets the login form
34 $m->get_ok($url, "No basic auth is OK");
35 $m->content_like(qr/Login/, "Login form");
37 # Log in using RT's form
43 }, "Submitted login form");
44 ok $m->logged_in_as("root"), "Logged in as root";
46 # Still logged in on another request without REMOTE_USER
47 $m->follow_link_ok({ text => 'My Tickets' });
48 ok $m->logged_in_as("root"), "Logged in as root";
50 ok $m->logout, "Logged out";
52 # We're definitely logged out?
54 $m->content_like(qr/Login/, "Login form");
62 # Automatically logged in as root without Login page
64 ok $m->logged_in_as("root"), "Logged in as root";
66 # Still logged in on another request
67 $m->follow_link_ok({ text => 'My Tickets' });
68 ok $m->logged_in_as("root"), "Still logged in as root";
70 # Drop credentials and...
73 # ...see if RT notices
75 is $m->status, 403, "403 Forbidden from RT";
77 # Next request gets us the login form
79 $m->content_like(qr/Login/, "Login form");
82 diag "External auth with invalid user, login internally";
84 # REMOTE_USER of invalid
87 # Login internally via the login link
88 $m->get("$url/Search/Build.html");
89 is $m->status, 403, "403 Forbidden";
90 $m->follow_link_ok({ url_regex => qr'NoAuth/Login\.html' }, "follow logout link");
91 $m->content_like(qr/Login/, "Login form");
93 # Log in using RT's form
99 }, "Submitted login form");
100 ok $m->logged_in_as("root"), "Logged in as root";
101 like $m->uri, qr'Search/Build\.html', "at our originally requested page";
103 # Still logged in on another request
104 $m->follow_link_ok({ text => 'Tools' });
105 ok $m->logged_in_as("root"), "Logged in as root";
107 ok $m->logout, "Logged out";
109 $m->next_warning_like(qr/Couldn't find internal user for 'invalid'/, "found warning for first request");
110 $m->next_warning_like(qr/Couldn't find internal user for 'invalid'/, "found warning for second request");
118 RT->Config->Set( DevelMode => 0 );
119 RT->Config->Set( WebRemoteUserAuth => 1 );
120 RT->Config->Set( WebRemoteUserContinuous => 0 );
121 RT->Config->Set( WebFallbackToRTLogin => 0 );
122 RT->Config->Set( WebRemoteUserAutocreate => 0 );
124 my ( $url, $m ) = RT::Test->started_ok( basic_auth => 'anon' );
126 diag "No remote user";
130 is $m->status, 403, "Forbidden";
136 diag "WebRemoteUserAutocreate";
138 RT->Config->Set( DevelMode => 0 );
139 RT->Config->Set( WebRemoteUserAuth => 1 );
140 RT->Config->Set( WebRemoteUserContinuous => 1 );
141 RT->Config->Set( WebFallbackToRTLogin => 0 );
142 RT->Config->Set( WebRemoteUserAutocreate => 1 );
143 RT->Config->Set( UserAutocreateDefaultsOnLogin => { Organization => "BPS" } );
145 my ( $url, $m ) = RT::Test->started_ok( basic_auth => 'anon' );
149 $m->auth("anewuser");
151 ok $m->logged_in_as("anewuser"), "Logged in as anewuser";
153 my $user = RT::User->new( RT->SystemUser );
154 $user->Load("anewuser");
155 ok $user->id, "Found newly created user";
156 is $user->Organization, "BPS", "Found Organization from UserAutocreateDefaultsOnLogin hash";
157 ok $user->Privileged, "Privileged by default";
162 UserAutocreateDefaultsOnLogin => {
164 EmailAddress => 'foo@example.com',
167 ( $url, $m ) = RT::Test->started_ok( basic_auth => 'anon' );
169 diag "Create unprivileged users";
173 ok $m->logged_in_as("unpriv"), "Logged in as an unpriv user";
174 like $m->uri->path, RT->Config->Get('SelfServiceRegex'), "SelfService URL";
176 my $user = RT::User->new( RT->SystemUser );
177 $user->Load("unpriv");
178 ok $user->id, "Found newly created user";
179 ok !$user->Privileged, "Unprivileged per config";
180 is $user->EmailAddress, 'foo@example.com', "Email address per config";
183 diag "User creation failure";
185 $m->auth("conflicting");
187 is $m->status, 403, "Forbidden";
188 $m->next_warning_like(qr/Couldn't auto-create user 'conflicting' when attempting WebRemoteUser: Email address in use/, 'found failed auth warning');
190 my $user = RT::User->new( RT->SystemUser );
191 $user->Load("conflicting");
192 ok !$user->id, "Couldn't find conflicting user";