73 lines
2.2 KiB
TypeScript
73 lines
2.2 KiB
TypeScript
import { InvalidDidError } from '../../src/did-error.js'
|
|
import { Did } from '../../src/did.js'
|
|
import { asDidPlc, assertDidPlc, isDidPlc } from '../../src/methods/plc.js'
|
|
|
|
const VALID: Did<'plc'>[] = [
|
|
'did:plc:l3rouwludahu3ui3bt66mfvj',
|
|
'did:plc:aaaaaaaaaaaaaaaaaaaaaaaa',
|
|
'did:plc:zzzzzzzzzzzzzzzzzzzzzzzz',
|
|
]
|
|
|
|
const INVALID: [value: unknown, message: string][] = [
|
|
['did:plc:l3rouwludahu3ui3bt66mfv0', 'Invalid character at position 31'],
|
|
['did:plc:l3rouwludahu3ui3bt66mfv1', 'Invalid character at position 31'],
|
|
['did:plc:l3rouwludahu3ui3bt66mfv9', 'Invalid character at position 31'],
|
|
['did:plc:l3rouwludahu3ui3bt66mfv', 'did:plc must be 32 characters long'],
|
|
['did:plc:l3rouwludahu3ui3bt66mfvja', 'did:plc must be 32 characters long'],
|
|
['did:plc:example.com:', 'did:plc must be 32 characters long'],
|
|
['did:plc:exam%3Aple.com%3A8080', 'did:plc must be 32 characters long'],
|
|
[3, 'DID must be a string'],
|
|
[{ toString: () => 'did:plc:foo.com' }, 'DID must be a string'],
|
|
[[''], 'DID must be a string'],
|
|
['random-string', 'Invalid did:plc prefix'],
|
|
['did plc', 'Invalid did:plc prefix'],
|
|
['lorem ipsum dolor sit', 'Invalid did:plc prefix'],
|
|
]
|
|
|
|
describe('isDidPlc', () => {
|
|
it('returns true for various valid dids', () => {
|
|
for (const did of VALID) {
|
|
expect(isDidPlc(did)).toBe(true)
|
|
}
|
|
})
|
|
|
|
it('returns false for invalid dids', () => {
|
|
for (const [did] of INVALID) {
|
|
expect(isDidPlc(did)).toBe(false)
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('assertDidPlc', () => {
|
|
it('does not throw on valid dids', () => {
|
|
for (const did of VALID) {
|
|
expect(() => assertDidPlc(did)).not.toThrow()
|
|
}
|
|
})
|
|
|
|
it('throws if called with non string argument', () => {
|
|
for (const [val, message] of INVALID) {
|
|
expect(() => assertDidPlc(val)).toThrowError(
|
|
new InvalidDidError(
|
|
typeof val === 'string' ? val : typeof val,
|
|
message,
|
|
),
|
|
)
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('asDidPlc', () => {
|
|
it('returns the input for valid dids', () => {
|
|
for (const did of VALID) {
|
|
expect(asDidPlc(did)).toBe(did)
|
|
}
|
|
})
|
|
|
|
it('throws if called with invalid dids', () => {
|
|
for (const [val] of INVALID) {
|
|
expect(() => asDidPlc(val)).toThrowError(InvalidDidError)
|
|
}
|
|
})
|
|
})
|