porting all github actions from bluesky-social/indigo to tangled CI
at main 2.0 kB view raw
1package identity 2 3import ( 4 "context" 5 "testing" 6 7 "github.com/bluesky-social/indigo/atproto/syntax" 8 9 "github.com/stretchr/testify/assert" 10) 11 12func TestMockDirectory(t *testing.T) { 13 var err error 14 assert := assert.New(t) 15 ctx := context.Background() 16 c := NewMockDirectory() 17 id1 := Identity{ 18 DID: syntax.DID("did:plc:abc111"), 19 Handle: syntax.Handle("handle.example.com"), 20 } 21 id2 := Identity{ 22 DID: syntax.DID("did:plc:abc222"), 23 Handle: syntax.HandleInvalid, 24 } 25 id3 := Identity{ 26 DID: syntax.DID("did:plc:abc333"), 27 Handle: syntax.Handle("handle3.example.com"), 28 } 29 30 // first, empty directory 31 _, err = c.LookupHandle(ctx, syntax.Handle("handle.example.com")) 32 assert.ErrorIs(err, ErrHandleNotFound) 33 _, err = c.LookupDID(ctx, syntax.DID("did:plc:abc123")) 34 assert.ErrorIs(err, ErrDIDNotFound) 35 36 c.Insert(id1) 37 c.Insert(id2) 38 c.Insert(id3) 39 40 out, err := c.LookupHandle(ctx, syntax.Handle("handle.example.com")) 41 assert.NoError(err) 42 assert.Equal(&id1, out) 43 out, err = c.LookupDID(ctx, syntax.DID("did:plc:abc111")) 44 assert.NoError(err) 45 assert.Equal(&id1, out) 46 47 out, err = c.LookupDID(ctx, syntax.DID("did:plc:abc222")) 48 assert.NoError(err) 49 assert.True(out.Handle.IsInvalidHandle()) 50 51 _, err = c.LookupHandle(ctx, syntax.HandleInvalid) 52 assert.ErrorIs(err, ErrHandleNotFound) 53 _, err = c.LookupDID(ctx, syntax.DID("did:plc:abc999")) 54 assert.ErrorIs(err, ErrDIDNotFound) 55 56 did, err := c.ResolveHandle(ctx, syntax.Handle("handle.example.com")) 57 assert.NoError(err) 58 assert.Equal(id1.DID, did) 59 _, err = c.ResolveHandle(ctx, syntax.Handle("notfound.example.com")) 60 assert.ErrorIs(err, ErrHandleNotFound) 61 62 _, err = c.ResolveDID(ctx, syntax.DID("did:plc:abc222")) 63 assert.NoError(err) 64 // TODO: verify structure matches 65 66 _, err = c.ResolveDID(ctx, syntax.DID("did:plc:abc999")) 67 assert.ErrorIs(err, ErrDIDNotFound) 68 69 // handle lookups should be case-insensitive 70 _, err = c.ResolveHandle(ctx, syntax.Handle("handle.EXAMPLE.com")) 71 assert.NoError(err) 72 assert.Equal(id1.DID, did) 73}