RT 4.0.22
[freeside.git] / rt / t / security / CVE-2011-5092-prefs.t
1 use strict;
2 use warnings;
3
4 use RT::Test tests => undef;
5
6 my ($base, $m) = RT::Test->started_ok;
7
8 my $user = RT::Test->load_or_create_user(
9     Name            => 'ausername',
10     EmailAddress    => 'user@example.com',
11     Password        => 'password',
12     Privileged      => 1,
13 );
14
15 ok $user->id, 'created user';
16
17 ok(
18     RT::Test->set_rights(
19         { Principal => 'privileged', Right => [qw(ModifySelf ShowTicket)] },
20     ),
21     "granted ModifySelf to privileged"
22 );
23
24 $m->login('ausername');
25
26 {
27     $m->get_ok("$base/Prefs/Other.html");
28     my $style = '../css/base';
29     $m->submit_form_ok({
30         with_fields => {
31             WebDefaultStylesheet => $style,
32         },
33         button      => 'Update',
34     }, 'update prefs');
35     is(RT->Config->Get('WebDefaultStylesheet', $user), $style, 'set preference');
36
37     SKIP: {
38         skip "RT::User->Stylesheet wasn't backported", 1 unless $user->can("Stylesheet");
39         is $user->Stylesheet, RT->Config->Get('WebDefaultStylesheet'), '$user->Stylesheet is the default';
40     }
41
42     $m->get_ok($base);
43     $m->content_unlike(qr/<link.+?\Q$style\E/, "lack .. path in page <link>");
44     $m->content_contains( RT->Config->Get('WebDefaultStylesheet') );
45 }
46
47 {
48     $m->get_ok("$base/Prefs/Other.html");
49     my $format = '/../../m/_elements/full_site_link';
50     $m->submit_form_ok({
51         form_name   => 'ModifyPreferences',
52         fields      => {
53             UsernameFormat => $format,
54         },
55         button      => 'Update',
56     }, 'update prefs');
57     $m->content_contains('saved');
58
59     my $ticket = RT::Test->create_ticket(
60         Queue       => 'General',
61         Subject     => 'test ticket',
62         Requestor   => 'user@example.com',
63     );
64     ok $ticket->id, 'created ticket';
65     $m->get_ok($base . "/Ticket/Display.html?id=" . $ticket->id);
66     $m->content_lacks('NotMobile', "lacks NotMobile");
67     $m->next_warning_like(qr/UsernameFormat/, 'caught UsernameFormat warning');
68 }
69
70 {
71     $m->get_ok("$base/Helpers/Toggle/ShowRequestor?Status=/../../../Elements/Logo;Requestor=root");
72     $m->content_lacks('logo', "didn't display /Elements/Logo");
73     $m->content_contains('Results.html', "found link to search results");
74 }
75
76 undef $m;
77 done_testing;