Resolve AT Protocol DIDs, handles, and schemas with intelligent caching for Laravel
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}