Resolve AT Protocol DIDs, handles, and schemas with intelligent caching for Laravel
at main 2.4 kB view raw
1<?php 2 3namespace SocialDept\AtpResolver\Tests\Unit; 4 5use PHPUnit\Framework\TestCase; 6use SocialDept\AtpResolver\Support\Identity; 7 8class IdentityTest extends TestCase 9{ 10 public function test_it_validates_handles(): void 11 { 12 $this->assertTrue(Identity::isHandle('alice.bsky.social')); 13 $this->assertTrue(Identity::isHandle('user.test')); 14 $this->assertTrue(Identity::isHandle('my-handle.example.com')); 15 $this->assertTrue(Identity::isHandle('a.b.c.d.example.com')); 16 17 $this->assertFalse(Identity::isHandle('')); 18 $this->assertFalse(Identity::isHandle(null)); 19 $this->assertFalse(Identity::isHandle('invalid')); 20 $this->assertFalse(Identity::isHandle('no-tld')); 21 $this->assertFalse(Identity::isHandle('.invalid')); 22 $this->assertFalse(Identity::isHandle('invalid.')); 23 } 24 25 public function test_it_validates_dids(): void 26 { 27 $this->assertTrue(Identity::isDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz')); 28 $this->assertTrue(Identity::isDid('did:web:example.com')); 29 $this->assertTrue(Identity::isDid('did:plc:abc123')); 30 $this->assertTrue(Identity::isDid('did:web:alice.test')); 31 32 $this->assertFalse(Identity::isDid('')); 33 $this->assertFalse(Identity::isDid(null)); 34 $this->assertFalse(Identity::isDid('invalid')); 35 $this->assertFalse(Identity::isDid('did:')); 36 $this->assertFalse(Identity::isDid('did:plc:')); 37 $this->assertFalse(Identity::isDid('not-a-did')); 38 } 39 40 public function test_it_extracts_did_method(): void 41 { 42 $this->assertSame('plc', Identity::extractDidMethod('did:plc:ewvi7nxzyoun6zhxrhs64oiz')); 43 $this->assertSame('web', Identity::extractDidMethod('did:web:example.com')); 44 45 $this->assertNull(Identity::extractDidMethod('invalid')); 46 $this->assertNull(Identity::extractDidMethod('')); 47 } 48 49 public function test_it_checks_plc_did(): void 50 { 51 $this->assertTrue(Identity::isPlcDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz')); 52 $this->assertFalse(Identity::isPlcDid('did:web:example.com')); 53 $this->assertFalse(Identity::isPlcDid('invalid')); 54 } 55 56 public function test_it_checks_web_did(): void 57 { 58 $this->assertTrue(Identity::isWebDid('did:web:example.com')); 59 $this->assertFalse(Identity::isWebDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz')); 60 $this->assertFalse(Identity::isWebDid('invalid')); 61 } 62}