diff --git a/setup/test/tests/test.header_functions.php b/setup/test/tests/test.header_functions.php new file mode 100644 index 0000000000000000000000000000000000000000..b64a1c400946e590e01a8742d47d9a09ffefbd46 --- /dev/null +++ b/setup/test/tests/test.header_functions.php @@ -0,0 +1,112 @@ +<?php +require_once "class.test.php"; +define('INCLUDE_DIR', realpath(dirname(__file__).'/../../../include').'/'); +define('PEAR_DIR', INCLUDE_DIR.'/pear/'); +require_once INCLUDE_DIR."class.mailparse.php"; + +abstract class Priorities { + const HIGH_PRIORITY = 1; + const NORMAL_PRIORITY = 2; + const LOW_PRIORITY = 3; + const NO_PRIORITY = 0; +} + +class TestHeaderFunctions extends Test { + var $name = "Email Header Function Algorithm Regression Tests."; + + function testMailParsePriority() { + $func_class_method = array('Mail_Parse','parsePriority'); + $strlen_base = strlen($this->h()); + + foreach ( array ( + 'X-Priority: isNAN' => Priorities::NO_PRIORITY, // input => output + 'X-Priority: 1' => Priorities::LOW_PRIORITY, + 'X-Priority: 2' => Priorities::LOW_PRIORITY, + 'X-Priority: 3' => Priorities::NORMAL_PRIORITY, + 'X-Priority: 4' => Priorities::NORMAL_PRIORITY, + 'X-Priority: 5' => Priorities::HIGH_PRIORITY, + 'X-Priority: 6' => Priorities::HIGH_PRIORITY, + 'No priority set' => Priorities::NO_PRIORITY, + 'Priority: normal' => Priorities::NORMAL_PRIORITY, + 'xyz-priority: high' => Priorities::HIGH_PRIORITY, + 'Priority: high' => Priorities::HIGH_PRIORITY, + 'priority: low' => Priorities::LOW_PRIORITY, + 'x-priority: 1000' => Priorities::LOW_PRIORITY, // only matches first 1, not the full 1000 + 'priority: 3' => Priorities::NORMAL_PRIORITY, + 'IPM-Importance: low' => Priorities::LOW_PRIORITY, + 'My-Importance: URGENT' => Priorities::HIGH_PRIORITY, + 'Urgency: High' => Priorities::NO_PRIORITY, //urgency doesn't match.. maybe it should? + 'X-Importance: 5' => Priorities::HIGH_PRIORITY, + '' => Priorities::NO_PRIORITY + ) as $priority => $response ) { + $this->assert(is_int($response), "Setup fail, function should only return Integer values"); + //get header + $header = $this->h($priority); + + if(strlen($priority)){ + $this->assert((strlen($header) > $strlen_base), "Setup fail, function h not returning correct string length"); + } + if (! (call_user_func_array ($func_class_method , array($header) ) == $response)){ + //TODO: make line number dynamic + $this->fail ( "class.mailparse.php", 351, "Algorithm mistake: $priority should return $response!" ); + }else{ + $this->pass(); + } + } + + } + + /** + * Generate some header text to test with. Allows insertion of a known header variable + * + * @param string $setPriority + * @return string + */ + function h($setPriority = "") { + return <<<HEADER +Delivered-To: clonemeagain@gmail.com +Received: by 10.69.18.42 with SMTP id gj10csp88238pbd; +Fri, 20 Dec 2013 10:08:25 -0800 (PST) +X-Received: by 10.224.13.80 with SMTP id b16mr16256982qaa.73.1387562904239; +Fri, 20 Dec 2013 10:08:24 -0800 (PST) +Return-Path: <noreply@github.com> +Received: from github-smtp2a-ext-cp1-prd.iad.github.net (github-smtp2-ext5.iad.github.net. [192.30.252.196]) +by mx.google.com with ESMTPS id k3si6568083qao.74.2013.12.20.10.08.23 +for <clonemeagain@gmail.com> +(version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); +Fri, 20 Dec 2013 10:08:23 -0800 (PST) +Received-SPF: pass (google.com: domain of noreply@github.com designates 192.30.252.196 as permitted sender) client-ip=192.30.252.196; +Authentication-Results: mx.google.com; +spf=pass (google.com: domain of noreply@github.com designates 192.30.252.196 as permitted sender) smtp.mail=noreply@github.com +Date: Fri, 20 Dec 2013 10:08:23 -0800 +From: Jared Hancock <notifications@github.com> +Reply-To: "osTicket/osTicket-1.8" <reply+i-BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISH@reply.github.com> +To: "osTicket/osTicket-1.8" <osTicket-1.8@noreply.github.com> +Cc: clonemeagain <clonemeagain@gmail.com> +Message-ID: <osTicket/osTicket-1.8/pull/336/issue_event/82864993@github.com> +In-Reply-To: <osTicket/osTicket-1.8/pull/336@github.com> +References: <osTicket/osTicket-1.8/pull/336@github.com> +Subject: Re: [osTicket-1.8] Landing page inline image correction (#336) +Mime-Version: 1.0 +Content-Type: multipart/alternative; +boundary="--==_mimepart_52b4879729712_d621217cfc567e3"; +charset=UTF-8 +Content-Transfer-Encoding: 7bit +Precedence: list +X-GitHub-Recipient: clonemeagain +X-GitHub-Reason: author +List-ID: osTicket/osTicket-1.8 <osTicket-1.8.osTicket.github.com> +List-Archive: https://github.com/osTicket/osTicket-1.8 +List-Post: <mailto:reply+i-BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISH@reply.github.com> +List-Unsubscribe: <mailto:unsub+i-BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISH@reply.github.com>, +<https://github.com/notifications/unsubscribe/BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISH-BUNCHORANDOMGIBBERIBBERISHBUNCHORANDOMGIBBERIBBERISHBUNCHORANDOMGIBBERIBBERISH> +X-Auto-Response-Suppress: All +X-GitHub-Recipient-Address: clonemeagain@gmail.com +$setPriority + +HEADER; + } + +} +return 'TestHeaderFunctions'; +?>