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