import rt 3.8.7
[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 => 7;
6
7 local $RT::Test::SKIP_REQUEST_WORK_AROUND = 1;
8
9 use Encode;
10 # \x{XX} where XX is less than 255 is not treated as unicode code point
11 my $subject = Encode::decode('latin1', "Sujet accentu\x{e9}");
12 my $text = Encode::decode('latin1', "Contenu accentu\x{e9}");
13
14 my ($baseurl, $m) = RT::Test->started_ok;
15
16 my $queue = RT::Test->load_or_create_queue(Name => 'General');
17 ok($queue->Id, "loaded the General queue");
18
19 my $content = "id: ticket/new
20 Queue: General
21 Requestor: root
22 Subject: $subject
23 Cc:
24 AdminCc:
25 Owner:
26 Status: new
27 Priority:
28 InitialPriority:
29 FinalPriority:
30 TimeEstimated:
31 Starts: 2009-03-10 16:14:55
32 Due: 2009-03-10 16:14:55
33 Text: $text";
34
35 $m->post("$baseurl/REST/1.0/ticket/new", [
36     user    => 'root',
37     pass    => 'password',
38 # error message from HTTP::Message: content must be bytes
39     content => Encode::encode_utf8($content),
40 ], Content_Type => 'form-data' );
41
42 my ($id) = $m->content =~ /Ticket (\d+) created/;
43 ok($id, "got ticket #$id");
44
45 my $ticket = RT::Ticket->new($RT::SystemUser);
46 $ticket->Load($id);
47 is($ticket->Id, $id, "loaded the REST-created ticket");
48 is($ticket->Subject, $subject, "ticket subject successfully set");
49
50 my $attach = $ticket->Transactions->First->Attachments->First;
51 is($attach->Subject, $subject, "attachement subject successfully set");
52 TODO: {
53     local $TODO = "Not fixed yet, but not a regression";
54     is($attach->GetHeader('Subject'), $subject, "attachement header subject successfully set");
55 }