Something went wrong. Try again.
Resolve AT Protocol DIDs, handles, and schemas with intelligent caching for Laravel
Something went wrong. Try again.
4.2 kB · 121 lines
PHP
at dev
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122<?php
namespace SocialDept\AtpResolver\Tests\Unit;
use PHPUnit\Framework\TestCase;use SocialDept\AtpResolver\Contracts\CacheStore;use SocialDept\AtpResolver\Contracts\DidResolver;use SocialDept\AtpResolver\Contracts\HandleResolver;use SocialDept\AtpResolver\Data\DidDocument;use SocialDept\AtpResolver\Resolver;
class ResolverIdentityTest extends TestCase{ public function test_it_can_convert_handle_to_did(): void { $didResolver = $this->createMock(DidResolver::class); $handleResolver = $this->createMock(HandleResolver::class); $cache = $this->createMock(CacheStore::class);
$handleResolver->expects($this->once()) ->method('resolve') ->with('user.bsky.social') ->willReturn('did:plc:abc123');
$cache->method('has')->willReturn(false); $cache->expects($this->once()) ->method('put') ->with('handle:user.bsky.social', 'did:plc:abc123', $this->anything());
$beacon = new Resolver($didResolver, $handleResolver, $cache); $did = $beacon->handleToDid('user.bsky.social');
$this->assertSame('did:plc:abc123', $did); }
public function test_it_can_resolve_handle(): void { $didResolver = $this->createMock(DidResolver::class); $handleResolver = $this->createMock(HandleResolver::class); $cache = $this->createMock(CacheStore::class);
$handleResolver->expects($this->once()) ->method('resolve') ->with('user.bsky.social') ->willReturn('did:plc:abc123');
$didDocument = DidDocument::fromArray([ 'id' => 'did:plc:abc123', 'alsoKnownAs' => ['at://user.bsky.social'], ]);
$didResolver->expects($this->once()) ->method('resolve') ->with('did:plc:abc123') ->willReturn($didDocument);
$cache->method('has')->willReturn(false);
$beacon = new Resolver($didResolver, $handleResolver, $cache); $document = $beacon->resolveHandle('user.bsky.social');
$this->assertInstanceOf(DidDocument::class, $document); $this->assertSame('did:plc:abc123', $document->id); }
public function test_it_can_resolve_identity_with_did(): void { $didResolver = $this->createMock(DidResolver::class); $handleResolver = $this->createMock(HandleResolver::class); $cache = $this->createMock(CacheStore::class);
$didDocument = DidDocument::fromArray([ 'id' => 'did:plc:abc123', ]);
$didResolver->expects($this->once()) ->method('resolve') ->with('did:plc:abc123') ->willReturn($didDocument);
$cache->method('has')->willReturn(false); $handleResolver->expects($this->never())->method('resolve');
$beacon = new Resolver($didResolver, $handleResolver, $cache); $document = $beacon->resolveIdentity('did:plc:abc123');
$this->assertInstanceOf(DidDocument::class, $document); $this->assertSame('did:plc:abc123', $document->id); }
public function test_it_can_resolve_identity_with_handle(): void { $didResolver = $this->createMock(DidResolver::class); $handleResolver = $this->createMock(HandleResolver::class); $cache = $this->createMock(CacheStore::class);
$handleResolver->expects($this->once()) ->method('resolve') ->with('user.bsky.social') ->willReturn('did:plc:abc123');
$didDocument = DidDocument::fromArray([ 'id' => 'did:plc:abc123', 'alsoKnownAs' => ['at://user.bsky.social'], ]);
$didResolver->expects($this->once()) ->method('resolve') ->with('did:plc:abc123') ->willReturn($didDocument);
$cache->method('has')->willReturn(false);
$beacon = new Resolver($didResolver, $handleResolver, $cache); $document = $beacon->resolveIdentity('user.bsky.social');
$this->assertInstanceOf(DidDocument::class, $document); $this->assertSame('did:plc:abc123', $document->id); $this->assertSame('user.bsky.social', $document->getHandle()); }}