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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
# --
# Copyright (C) 2001-2021 OTRS AG, https://otrs.com/
# Copyright (C) 2021 Znuny GmbH, https://znuny.org/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
## no critic (Modules::RequireExplicitPackage)
use strict;
use warnings;
use utf8;
use vars (qw($Self));
use Kernel::System::PostMaster;
$Kernel::OM->ObjectParamAdd(
'Kernel::System::UnitTest::Helper' => {
RestoreDatabase => 1,
UseTmpArticleDir => 1,
},
);
my $HelperObject = $Kernel::OM->Get('Kernel::System::UnitTest::Helper');
my $ConfigObject = $Kernel::OM->Get('Kernel::Config');
my $MainObject = $Kernel::OM->Get('Kernel::System::Main');
my $ArticleObject = $Kernel::OM->Get('Kernel::System::Ticket::Article');
for my $Backend (qw(DB FS)) {
# Change the article storage backend.
$HelperObject->ConfigSettingChange(
Key => 'Ticket::Article::Backend::MIMEBase::ArticleStorage',
Value => 'Kernel::System::Ticket::Article::Backend::MIMEBase::ArticleStorage' . $Backend,
);
# Re-create article backend object for every run, in order to reflect the article storage backend change.
my $ArticleBackendObject = $ArticleObject->BackendForChannel( ChannelName => 'Email' );
my $Location = $ConfigObject->Get('Home')
. '/scripts/test/sample/EmailParser/EmptyEmail.eml';
my $ContentRef = $MainObject->FileRead(
Location => $Location,
Mode => 'binmode',
Result => 'ARRAY',
);
my $TicketID;
{
my $CommunicationLogObject = $Kernel::OM->Create(
'Kernel::System::CommunicationLog',
ObjectParams => {
Transport => 'Email',
Direction => 'Incoming',
},
);
$CommunicationLogObject->ObjectLogStart( ObjectLogType => 'Message' );
my $PostMasterObject = Kernel::System::PostMaster->new(
CommunicationLogObject => $CommunicationLogObject,
Email => $ContentRef,
);
my @Return = $PostMasterObject->Run();
$TicketID = $Return[1];
$CommunicationLogObject->ObjectLogStop(
ObjectLogType => 'Message',
Status => 'Successful',
);
$CommunicationLogObject->CommunicationStop(
Status => 'Successful',
);
}
$Self->True(
$TicketID,
"$Backend - Ticket created"
);
my @ArticleIDs = map { $_->{ArticleID} } $ArticleObject->ArticleList( TicketID => $TicketID );
$Self->True(
$ArticleIDs[0],
"$Backend - Article created"
);
my %Article = $ArticleBackendObject->ArticleGet(
ArticleID => $ArticleIDs[0],
TicketID => $TicketID,
);
$Self->Is(
$Article{Body} // '', # Oracle stores '' as undef.
'',
'Empty article body found'
);
my %Attachments = $ArticleBackendObject->ArticleAttachmentIndex(
ArticleID => $ArticleIDs[0],
);
$Self->IsDeeply(
$Attachments{2},
{
'ContentAlternative' => '',
'ContentID' => '',
'ContentType' => 'application/x-download; name="=?UTF-8?Q?=C5=81atwa_sprawa.txt?="',
'Disposition' => 'attachment',
'Filename' => 'Łatwa_sprawa.txt',
'FilesizeRaw' => 0
},
"$Backend - Attachment filename"
);
}
# cleanup is done by RestoreDatabase.
1;
|