8b870a8b11c59c40e15559ce3b6b36ee12530a65
[freeside.git] / rt / t / web / rest-non-ascii-subject.t
1 # Test ticket creation with REST using non ascii subject
2 use strict;
3 use warnings;
4 use RT::Test tests => 9;
5
6 use Encode;
7 # \x{XX} where XX is less than 255 is not treated as unicode code point
8 my $subject = Encode::decode('latin1', "Sujet accentu\x{e9}");
9 my $text = Encode::decode('latin1', "Contenu accentu\x{e9}");
10
11 my ($baseurl, $m) = RT::Test->started_ok;
12
13 my $queue = RT::Test->load_or_create_queue(Name => 'General');
14 ok($queue->Id, "loaded the General queue");
15
16 my $content = "id: ticket/new
17 Queue: General
18 Requestor: root
19 Subject: $subject
20 Cc:
21 AdminCc:
22 Owner:
23 Status: new
24 Priority:
25 InitialPriority:
26 FinalPriority:
27 TimeEstimated:
28 Starts: 2009-03-10 16:14:55
29 Due: 2009-03-10 16:14:55
30 Text: $text";
31
32 $m->post("$baseurl/REST/1.0/ticket/new", [
33     user    => 'root',
34     pass    => 'password',
35 # error message from HTTP::Message: content must be bytes
36     content => Encode::encode_utf8($content),
37 ], Content_Type => 'form-data' );
38
39 my ($id) = $m->content =~ /Ticket (\d+) created/;
40 ok($id, "got ticket #$id");
41
42 my $ticket = RT::Ticket->new(RT->SystemUser);
43 $ticket->Load($id);
44 is($ticket->Id, $id, "loaded the REST-created ticket");
45 is($ticket->Subject, $subject, "ticket subject successfully set");
46
47 my $attach = $ticket->Transactions->First->Attachments->First;
48 is($attach->Subject, $subject, "attachement subject successfully set");
49 is($attach->GetHeader('Subject'), $subject, "attachement header subject successfully set");