First unit tests, misc fixes
This commit is contained in:
		
							
								
								
									
										63
									
								
								tests/Broker/TopicTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								tests/Broker/TopicTest.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace NoccyLabs\Mercureact\Broker;
 | 
			
		||||
 | 
			
		||||
use PHPUnit\Framework\Attributes\CoversClass;
 | 
			
		||||
 | 
			
		||||
#[CoversClass(Topic::class)]
 | 
			
		||||
class TopicTest extends \PHPUnit\Framework\TestCase
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    public function testPublicMessagesAreDeliveredToAllSubscribers()
 | 
			
		||||
    {
 | 
			
		||||
        $authorizedSubscriber = new class implements SubscriberInterface {
 | 
			
		||||
            public array $messages = [];
 | 
			
		||||
            public function isAuthorized():bool { return true; }
 | 
			
		||||
            public function deliver(Message $message):void { $this->messages[] = $message; }
 | 
			
		||||
            public function getPayload(): ?array { return null; }
 | 
			
		||||
        };
 | 
			
		||||
        $unauthorizedSubscriber = new class implements SubscriberInterface {
 | 
			
		||||
            public array $messages = [];
 | 
			
		||||
            public function isAuthorized():bool { return false; }
 | 
			
		||||
            public function deliver(Message $message):void { $this->messages[] = $message; }
 | 
			
		||||
            public function getPayload(): ?array { return null; }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        $topic = new Topic("foo");
 | 
			
		||||
        $topic->addSubscriber($authorizedSubscriber);
 | 
			
		||||
        $topic->addSubscriber($unauthorizedSubscriber);
 | 
			
		||||
 | 
			
		||||
        $message = new Message(topic:["foo"], data:"test", private:false);
 | 
			
		||||
        $topic->publish($message);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(1, count($authorizedSubscriber->messages));
 | 
			
		||||
        $this->assertEquals(1, count($unauthorizedSubscriber->messages));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function testPrivateMessagesAreNotDeliveredToUnauthorizedSubscribers()
 | 
			
		||||
    {
 | 
			
		||||
        $authorizedSubscriber = new class implements SubscriberInterface {
 | 
			
		||||
            public array $messages = [];
 | 
			
		||||
            public function isAuthorized():bool { return true; }
 | 
			
		||||
            public function deliver(Message $message):void { $this->messages[] = $message; }
 | 
			
		||||
            public function getPayload(): ?array { return null; }
 | 
			
		||||
        };
 | 
			
		||||
        $unauthorizedSubscriber = new class implements SubscriberInterface {
 | 
			
		||||
            public array $messages = [];
 | 
			
		||||
            public function isAuthorized():bool { return false; }
 | 
			
		||||
            public function deliver(Message $message):void { $this->messages[] = $message; }
 | 
			
		||||
            public function getPayload(): ?array { return null; }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        $topic = new Topic("foo");
 | 
			
		||||
        $topic->addSubscriber($authorizedSubscriber);
 | 
			
		||||
        $topic->addSubscriber($unauthorizedSubscriber);
 | 
			
		||||
 | 
			
		||||
        $message = new Message(topic:["foo"], data:"test", private:true);
 | 
			
		||||
        $topic->publish($message);
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(1, count($authorizedSubscriber->messages));
 | 
			
		||||
        $this->assertEquals(0, count($unauthorizedSubscriber->messages));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user