File: interface.t

package info (click to toggle)
request-tracker4 4.4.7%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 62,888 kB
  • sloc: javascript: 130,444; perl: 65,442; sh: 1,350; makefile: 480; python: 37; php: 30
file content (103 lines) | stat: -rw-r--r-- 3,129 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
use strict;
use warnings;

use RT::Test tests => undef, config => 'Set($DevelMode, 1);', actual_server => 1;

my ( $baseurl, $m ) = RT::Test->started_ok;

my $queue = RT::Test->load_or_create_queue( Name => 'General' );
my $cf    = RT::Test->load_or_create_custom_field( Name => 'Interface', Type => 'FreeformSingle', Queue => $queue->Id );

my $scrip = RT::Scrip->new( RT->SystemUser );
my ( $ret, $msg ) = $scrip->Create(
    Queue             => $queue->id,
    ScripCondition    => 'On Create',
    ScripAction       => 'User Defined',
    CustomPrepareCode => 'return 1',
    CustomCommitCode  => q{
        $self->TicketObj->AddCustomFieldValue( Field => 'Interface', Value => RT->CurrentInterface );
    },
    Template => 'Blank',
);
ok( $ret, $msg );


diag 'Test API interface';
my $ticket = RT::Ticket->new( RT->SystemUser );
( $ret, undef, $msg ) = $ticket->Create( Queue => $queue, Subject => 'Test API interface' );
ok( $ret, $msg );
is( $ticket->FirstCustomFieldValue('Interface'), 'API', 'Interface is set to API' );


diag 'Test CLI interface';
my $template = RT::Template->new( RT->SystemUser );
$template->Create( Name => 'CLICreateTicket', Content => <<'EOF');
===Create-Ticket: test
Queue: General
Subject: Test CLI interface
Content: test
ENDOFCONTENT
EOF

my $root = RT::Test->load_or_create_user( Name => 'root' );
$root->SetGecos( ( getpwuid($<) )[0] );

system(
    "$RT::BinPath/rt-crontool", '--search',      'RT::Search::FromSQL',       '--search-arg',
    "id = " . $ticket->Id,      '--action',      'RT::Action::CreateTickets', '--template',
    $template->Id,              '--transaction', 'first',
) && die $?;

$ticket = RT::Test->last_ticket;
is( $ticket->Subject,                            'Test CLI interface', 'Created ticket via rt-crontool' );
is( $ticket->FirstCustomFieldValue('Interface'), 'CLI',                'Interface is set to CLI' );


diag 'Test Email interface';
my ( $status, $id ) = RT::Test->send_via_mailgate_and_http(<<'EOF');
From: root@localhost
Subject: Test Email interface

Test
EOF
is( $status >> 8, 0, "The mail gateway exited normally" );
ok( $id, "Created ticket" );
$ticket = RT::Test->last_ticket;
is( $ticket->FirstCustomFieldValue('Interface'), 'Email', 'Interface is set to Email' );


diag 'Test Web interface';
ok( $m->login(), 'Logged in' );
$m->goto_create_ticket( $queue->Id );
$m->submit_form( form_name => 'TicketCreate', fields => { Subject => 'Test Web interface' }, button => 'SubmitTicket' );
$ticket = RT::Test->last_ticket;
is( $ticket->FirstCustomFieldValue('Interface'), 'Web', 'Interface is set to Web' );


diag 'Test REST interface';
my $content = "id: ticket/new
Queue: General
Requestor: root
Subject: Test REST interface
Cc:
AdminCc:
Text: Test
";

$m->post(
    "$baseurl/REST/1.0/ticket/new",
    [
        user    => 'root',
        pass    => 'password',
        content => $content,
    ],
    Content_Type => 'form-data'
);

($id) = $m->content =~ /Ticket (\d+) created/;
ok( $id, "Created ticket #$id" );

$ticket->Load($id);
is( $ticket->FirstCustomFieldValue('Interface'), 'REST', 'Interface is set to REST' );

done_testing;