!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/laravel-crm/vendor/webklex/php-imap/tests/   drwxrwxrwx
Free 13.24 GB of 57.97 GB (22.83%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     MessageTest.php (13.63 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/*
* File: MessageTest.php
* Category: -
* Author: M.Goldenbaum
* Created: 28.12.22 18:11
* Updated: -
*
* Description:
*  -
*/

namespace Tests;

use 
PHPUnit\Framework\MockObject\MockObject;
use 
PHPUnit\Framework\TestCase;
use 
ReflectionException;
use 
Webklex\PHPIMAP\Attachment;
use 
Webklex\PHPIMAP\Attribute;
use 
Webklex\PHPIMAP\Client;
use 
Webklex\PHPIMAP\Connection\Protocols\Response;
use 
Webklex\PHPIMAP\Exceptions\EventNotFoundException;
use 
Webklex\PHPIMAP\Exceptions\InvalidMessageDateException;
use 
Webklex\PHPIMAP\Exceptions\MessageContentFetchingException;
use 
Webklex\PHPIMAP\Exceptions\MessageFlagException;
use 
Webklex\PHPIMAP\Exceptions\MessageNotFoundException;
use 
Webklex\PHPIMAP\Exceptions\MessageSizeFetchingException;
use 
Webklex\PHPIMAP\Exceptions\ResponseException;
use 
Webklex\PHPIMAP\IMAP;
use 
Webklex\PHPIMAP\Message;
use 
Webklex\PHPIMAP\Connection\Protocols\ImapProtocol;
use 
Webklex\PHPIMAP\Exceptions\AuthFailedException;
use 
Webklex\PHPIMAP\Exceptions\ConnectionFailedException;
use 
Webklex\PHPIMAP\Exceptions\ImapBadRequestException;
use 
Webklex\PHPIMAP\Exceptions\ImapServerErrorException;
use 
Webklex\PHPIMAP\Exceptions\MaskNotFoundException;
use 
Webklex\PHPIMAP\Exceptions\RuntimeException;

class 
MessageTest extends TestCase {

    
/** @var Message $message */
    
protected Message $message;

    
/** @var Client $client */
    
protected Client $client;

    
/** @var MockObject ImapProtocol mockup */
    
protected MockObject $protocol;

    
/**
     * Setup the test environment.
     *
     * @return void
     * @throws MaskNotFoundException
     */
    
public function setUp(): void {
        
$this->client = new Client([
                                       
'protocol'   => 'imap',
                                       
'encryption' => 'ssl',
                                       
'username'   => 'foo@domain.tld',
                                       
'password'   => 'bar',
                                       
'proxy'      => [
                                           
'socket'          => null,
                                           
'request_fulluri' => false,
                                           
'username'        => null,
                                           
'password'        => null,
                                       ],
                                   ]);
    }

    
/**
     * Message test
     *
     * @return void
     * @throws AuthFailedException
     * @throws ConnectionFailedException
     * @throws EventNotFoundException
     * @throws ImapBadRequestException
     * @throws ImapServerErrorException
     * @throws InvalidMessageDateException
     * @throws MessageContentFetchingException
     * @throws MessageFlagException
     * @throws MessageNotFoundException
     * @throws MessageSizeFetchingException
     * @throws ReflectionException
     * @throws ResponseException
     * @throws RuntimeException
     */
    
public function testMessage(): void {
        
$this->createNewProtocolMockup();

        
$email file_get_contents(implode(DIRECTORY_SEPARATOR, [__DIR__"messages""1366671050@github.com.eml"]));
        if(!
str_contains($email"\r\n")){
            
$email str_replace("\n""\r\n"$email);
        }

        
$raw_header substr($email0strpos($email"\r\n\r\n"));
        
$raw_body substr($emailstrlen($raw_header)+8);

        
$this->protocol->expects($this->any())->method('getUid')->willReturn(Response::empty()->setResult(22));
        
$this->protocol->expects($this->any())->method('getMessageNumber')->willReturn(Response::empty()->setResult(21));
        
$this->protocol->expects($this->any())->method('flags')->willReturn(Response::empty()->setResult([22 => [=> "\\Seen"]]));

        
self::assertNotEmpty($this->client->openFolder("INBOX"));

        
$message Message::make(22null$this->client$raw_header$raw_body, [=> "\\Seen"], IMAP::ST_UID);

        
self::assertInstanceOf(Client::class, $message->getClient());
        
self::assertSame(22$message->uid);
        
self::assertSame(21$message->msgn);
        
self::assertContains("Seen"$message->flags()->toArray());

        
$subject $message->get("subject");
        
$returnPath $message->get("Return-Path");

        
self::assertInstanceOf(Attribute::class, $subject);
        
self::assertSame("Re: [Webklex/php-imap] Read all folders? (Issue #349)"$subject->toString());
        
self::assertSame("Re: [Webklex/php-imap] Read all folders? (Issue #349)", (string)$message->subject);
        
self::assertSame("<noreply@github.com>"$returnPath->toString());
        
self::assertSame("return_path"$returnPath->getName());
        
self::assertSame("-4.299", (string)$message->get("X-Spam-Score"));
        
self::assertSame("Webklex/php-imap/issues/349/1365266070@github.com", (string)$message->get("Message-ID"));
        
self::assertSame(6$message->get("received")->count());
        
self::assertSame(IMAP::MESSAGE_PRIORITY_UNKNOWN, (int)$message->get("priority")());
    }

    
/**
     * Test getMessageNumber
     *
     * @return void
     * @throws AuthFailedException
     * @throws ConnectionFailedException
     * @throws ImapBadRequestException
     * @throws ImapServerErrorException
     * @throws MessageNotFoundException
     * @throws ResponseException
     * @throws RuntimeException
     */
    
public function testGetMessageNumber(): void {
        
$this->createNewProtocolMockup();
        
$this->protocol->expects($this->any())->method('getMessageNumber')->willReturn(Response::empty()->setResult(""));

        
self::assertNotEmpty($this->client->openFolder("INBOX"));

        try {
            
$this->client->getConnection()->getMessageNumber(21)->validatedData();
            
$this->fail("Message number should not exist");
        } catch (
ResponseException $e) {
            
self::assertTrue(true);
        }

    }

    
/**
     * Test loadMessageFromFile
     *
     * @return void
     * @throws AuthFailedException
     * @throws ConnectionFailedException
     * @throws ImapBadRequestException
     * @throws ImapServerErrorException
     * @throws InvalidMessageDateException
     * @throws MaskNotFoundException
     * @throws MessageContentFetchingException
     * @throws MessageNotFoundException
     * @throws ReflectionException
     * @throws ResponseException
     * @throws RuntimeException
     * @throws MessageSizeFetchingException
     */
    
public function testLoadMessageFromFile(): void {
        
$filename implode(DIRECTORY_SEPARATOR, [__DIR__"messages""1366671050@github.com.eml"]);
        
$message Message::fromFile($filename);

        
$subject $message->get("subject");
        
$returnPath $message->get("Return-Path");

        
self::assertInstanceOf(Attribute::class, $subject);
        
self::assertSame("Re: [Webklex/php-imap] Read all folders? (Issue #349)"$subject->toString());
        
self::assertSame("Re: [Webklex/php-imap] Read all folders? (Issue #349)", (string)$message->subject);
        
self::assertSame("<noreply@github.com>"$returnPath->toString());
        
self::assertSame("return_path"$returnPath->getName());
        
self::assertSame("-4.299", (string)$message->get("X-Spam-Score"));
        
self::assertSame("Webklex/php-imap/issues/349/1365266070@github.com", (string)$message->get("Message-ID"));
        
self::assertSame(6$message->get("received")->count());
        
self::assertSame(IMAP::MESSAGE_PRIORITY_UNKNOWN, (int)$message->get("priority")());

        
self::assertNull($message->getClient());
        
self::assertSame(0$message->uid);

        
$filename implode(DIRECTORY_SEPARATOR, [__DIR__"messages""example_attachment.eml"]);
        
$message Message::fromFile($filename);

        
$subject $message->get("subject");
        
$returnPath $message->get("Return-Path");

        
self::assertInstanceOf(Attribute::class, $subject);
        
self::assertSame("ogqMVHhz7swLaq2PfSWsZj0k99w8wtMbrb4RuHdNg53i76B7icIIM0zIWpwGFtnk"$subject->toString());
        
self::assertSame("ogqMVHhz7swLaq2PfSWsZj0k99w8wtMbrb4RuHdNg53i76B7icIIM0zIWpwGFtnk", (string)$message->subject);
        
self::assertSame("<someone@domain.tld>"$returnPath->toString());
        
self::assertSame("return_path"$returnPath->getName());
        
self::assertSame("1.103", (string)$message->get("X-Spam-Score"));
        
self::assertSame("d3a5e91963cb805cee975687d5acb1c6@swift.generated", (string)$message->get("Message-ID"));
        
self::assertSame(5$message->get("received")->count());
        
self::assertSame(IMAP::MESSAGE_PRIORITY_HIGHEST, (int)$message->get("priority")());

        
self::assertNull($message->getClient());
        
self::assertSame(0$message->uid);
        
self::assertSame(1$message->getAttachments()->count());

        
/** @var Attachment $attachment */
        
$attachment $message->getAttachments()->first();
        
self::assertSame("attachment"$attachment->disposition);
        
self::assertSame("znk551MP3TP3WPp9Kl1gnLErrWEgkJFAtvaKqkTgrk3dKI8dX38YT8BaVxRcOERN"$attachment->content);
        
self::assertSame("application/octet-stream"$attachment->content_type);
        
self::assertSame("6mfFxiU5Yhv9WYJx.txt"$attachment->name);
        
self::assertSame(2$attachment->part_number);
        
self::assertSame("text"$attachment->type);
        
self::assertNotEmpty($attachment->id);
        
self::assertSame(90$attachment->size);
        
self::assertSame("txt"$attachment->getExtension());
        
self::assertInstanceOf(Message::class, $attachment->getMessage());
        
self::assertSame("text/plain"$attachment->getMimeType());
    }

    
/**
     * Test issue #348
     *
     * @return void
     * @throws AuthFailedException
     * @throws ConnectionFailedException
     * @throws ImapBadRequestException
     * @throws ImapServerErrorException
     * @throws InvalidMessageDateException
     * @throws MaskNotFoundException
     * @throws MessageContentFetchingException
     * @throws ReflectionException
     * @throws ResponseException
     * @throws RuntimeException
     */
    
public function testIssue348() {
        
$filename implode(DIRECTORY_SEPARATOR, [__DIR__"messages""issue-348.eml"]);
        
$message Message::fromFile($filename);

        
self::assertSame(1$message->getAttachments()->count());

        
/** @var Attachment $attachment */
        
$attachment $message->getAttachments()->first();

        
self::assertSame("attachment"$attachment->disposition);
        
self::assertSame("application/pdf"$attachment->content_type);
        
self::assertSame("Kelvinsong—Font_test_page_bold.pdf"$attachment->name);
        
self::assertSame(1$attachment->part_number);
        
self::assertSame("text"$attachment->type);
        
self::assertNotEmpty($attachment->id);
        
self::assertSame(92384$attachment->size);
        
self::assertSame("pdf"$attachment->getExtension());
        
self::assertInstanceOf(Message::class, $attachment->getMessage());
        
self::assertSame("application/pdf"$attachment->getMimeType());
    }

    
/**
     * Create a new protocol mockup
     *
     * @return void
     */
    
protected function createNewProtocolMockup(): void {
        
$this->protocol $this->createMock(ImapProtocol::class);

        
$this->protocol->expects($this->any())->method('createStream')->willReturn(true);
        
$this->protocol->expects($this->any())->method('connected')->willReturn(true);
        
$this->protocol->expects($this->any())->method('getConnectionTimeout')->willReturn(30);
        
$this->protocol->expects($this->any())->method('logout')->willReturn(Response::empty()->setResponse([
                                                                                 
=> "BYE Logging out\r\n",
                                                                                 
=> "OK Logout completed (0.001 + 0.000 secs).\r\n",
                                                                             ]));
        
$this->protocol->expects($this->any())->method('selectFolder')->willReturn(Response::empty()->setResponse([
                                                                                       
"flags"       => [
                                                                                           
=> [
                                                                                               
=> "\Answered",
                                                                                               
=> "\Flagged",
                                                                                               
=> "\Deleted",
                                                                                               
=> "\Seen",
                                                                                               
=> "\Draft",
                                                                                               
=> "NonJunk",
                                                                                               
=> "unknown-1",
                                                                                           ],
                                                                                       ],
                                                                                       
"exists"      => 139,
                                                                                       
"recent"      => 0,
                                                                                       
"unseen"      => 94,
                                                                                       
"uidvalidity" => 1488899637,
                                                                                       
"uidnext"     => 278,
                                                                                   ]));

        
$this->client->connection $this->protocol;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0081 ]--