1# -- 2# Copyright (C) 2001-2020 OTRS AG, https://otrs.com/ 3# -- 4# This software comes with ABSOLUTELY NO WARRANTY. For details, see 5# the enclosed file COPYING for license information (GPL). If you 6# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt. 7# -- 8 9use strict; 10use warnings; 11use utf8; 12 13use vars (qw($Self)); 14 15use Kernel::GenericInterface::Debugger; 16use Kernel::GenericInterface::Operation; 17 18# get helper object 19# skip SSL certificate verification 20$Kernel::OM->ObjectParamAdd( 21 'Kernel::System::UnitTest::Helper' => { 22 SkipSSLVerify => 1, 23 }, 24); 25my $Helper = $Kernel::OM->Get('Kernel::System::UnitTest::Helper'); 26 27my $DebuggerObject = Kernel::GenericInterface::Debugger->new( 28 DebuggerConfig => { 29 DebugThreshold => 'debug', 30 TestMode => 1, 31 }, 32 WebserviceID => 1, 33 CommunicationType => 'Provider', 34); 35 36# create a operation instance 37my $OperationObject = Kernel::GenericInterface::Operation->new( 38 DebuggerObject => $DebuggerObject, 39 WebserviceID => 1, 40 Operation => 'Test', 41 OperationType => 'Test::Test', 42); 43$Self->Is( 44 ref $OperationObject, 45 'Kernel::GenericInterface::Operation', 46 'OperationObject was correctly instantiated', 47); 48 49my @OperationTests = ( 50 { 51 Data => { 52 one => 'one', 53 two => 'two', 54 three => 'three', 55 four => 'four', 56 five => 'five', 57 }, 58 ResultData => { 59 one => 'one', 60 two => 'two', 61 three => 'three', 62 four => 'four', 63 five => 'five', 64 }, 65 ResultSuccess => 1, 66 }, 67 { 68 Data => [], 69 ResultData => undef, 70 ResultSuccess => 0, 71 }, 72 { 73 Data => undef, 74 ResultData => undef, 75 ResultSuccess => 1, 76 }, 77 { 78 Data => {}, 79 ResultData => {}, 80 ResultSuccess => 1, 81 }, 82 { 83 Data => { 84 TestError => 123, 85 ErrorData => { 86 Value1 => 1, 87 Value2 => 2, 88 Value3 => 3, 89 }, 90 }, 91 ResultData => { 92 ErrorData => { 93 Value1 => 1, 94 Value2 => 2, 95 Value3 => 3, 96 }, 97 }, 98 ResultErrorMessage => 'Error message for error code: 123', 99 ResultSuccess => 0, 100 }, 101); 102 103my $Counter; 104for my $Test (@OperationTests) { 105 $Counter++; 106 my $OperationResult = $OperationObject->Run( 107 Data => $Test->{Data}, 108 ); 109 110 # check if function return correct status 111 $Self->Is( 112 $OperationResult->{Success}, 113 $Test->{ResultSuccess}, 114 'Test data set ' . $Counter . ' Test: Success.', 115 ); 116 117 # check if function return correct data 118 $Self->IsDeeply( 119 $OperationResult->{Data}, 120 $Test->{ResultData}, 121 'Test data set ' . $Counter . ' Test: Data Structure.', 122 ); 123 124 if ( !$OperationResult->{Success} && $Test->{ResultErrorMessage} ) { 125 $Self->Is( 126 $OperationResult->{ErrorMessage}, 127 $Test->{ResultErrorMessage}, 128 'Test data set ' . $Counter . ' Test: Error Message.', 129 ); 130 } 131} 132 1331; 134