RT 4.0.22
[freeside.git] / rt / t / security / CVE-2011-5092-datetimeformat.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        => 'user',
10     Password    => 'password',
11     Privileged  => 1,
12 );
13
14 ok $user->id, 'created user';
15
16 ok(
17     RT::Test->set_rights(
18         { Principal => 'privileged', Right => [qw(ModifySelf ShowTicket)] },
19     ),
20     "granted ModifySelf to privileged"
21 );
22
23 my $ticket = RT::Test->create_ticket(
24     Queue   => 'General',
25     Subject => 'testing',
26 );
27
28 ok $ticket->id, 'created ticket';
29
30 $m->login('user');
31 $m->get_ok("$base/Prefs/Other.html");
32 my $format = 'Formatters';
33 $m->submit_form_ok({
34     form_name   => 'ModifyPreferences',
35     fields      => {
36         DateTimeFormat  => $format,
37     },
38     button      => 'Update',
39 }, 'update prefs');
40 is $user->Preferences(RT->System, {})->{DateTimeFormat}, $format, 'set preference';
41
42 $m->no_warnings_ok;
43 $m->get_ok("$base/Ticket/Display.html?id=" . $ticket->id);
44 $m->next_warning_like(qr/Invalid date formatter.+?\Q$format\E/, 'invalid formatter warning');
45 $m->content_lacks($_, "lacks formatter in page") for @RT::Date::FORMATTERS;
46
47 undef $m;
48 done_testing;