1use strict;
2use warnings;
3
4use RT::Test tests => undef;
5
6RT::Config->Set('ShredderStoragePath', RT::Test->temp_directory . '');
7
8my ( $baseurl, $agent ) = RT::Test->started_ok;
9
10diag("Test server running at $baseurl");
11
12$agent->login('root' => 'password');
13
14my $ticket_id;
15# Ticket created in block to avoid scope error on destroy
16{
17    my $ticket = RT::Test->create_ticket( Subject => 'test shredder', Queue => 1, );
18    ok( $ticket->Id, "created new ticket" );
19
20    $ticket_id = $ticket->id;
21}
22
23{
24    $agent->get_ok($baseurl . '/Admin/Tools/Shredder/');
25    $agent->submit_form_ok({
26        form_id     => 'shredder-search-form',
27        fields      => { Plugin => 'Tickets'},
28    }, "Select Tickets shredder plugin");
29
30    $agent->submit_form_ok({
31        form_id     => 'shredder-search-form',
32        fields      => {
33            'Tickets:query'  => 'id=' . $ticket_id,
34        },
35        button => 'Search',
36    }, "Search for ticket object");
37
38    $agent->submit_form_ok({
39        form_id     => 'shredder-search-form',
40        fields      => {
41            'WipeoutObject'     => 'RT::Ticket-example.com-' . $ticket_id,
42        },
43        button => 'Wipeout',
44    }, "Select and destroy ticket object");
45    $agent->text_contains('objects were successfuly removed', 'Found success message' );
46
47    my $ticket = RT::Ticket->new(RT->SystemUser);
48    my ($ret, $msg) = $ticket->Load($ticket_id);
49
50    ok !$ret, 'Ticket successfully shredded';
51}
52
53# Shred RT::User
54{
55    my $user = RT::Test->load_or_create_user( EmailAddress => 'test@example.com' );
56
57    my $id = $user->id;
58    ok $id;
59
60    $agent->get_ok($baseurl . '/Admin/Tools/Shredder/');
61    $agent->submit_form_ok({
62        form_id     => 'shredder-search-form',
63        fields      => { Plugin => 'Users'},
64    }, "Select Users shredder plugin");
65
66    $agent->submit_form_ok({
67        form_id     => 'shredder-search-form',
68        fields      => {
69            'Users:email'  => 'test@example.com',
70            'Users:status' => 'Enabled',
71        },
72        button => 'Search',
73    }, "Search for user");
74
75    $agent->submit_form_ok({
76        form_id     => 'shredder-search-form',
77        fields      => {
78            'WipeoutObject'     => 'RT::User-test@example.com',
79        },
80        button => 'Wipeout',
81    }, "Select and destroy searched user");
82    $agent->text_contains('objects were successfuly removed', 'Found success message' );
83
84    my ($ret, $msg) = $user->Load($id);
85    ok !$ret, 'User successfully shredded';
86}
87
88done_testing();
89