Skip to content

Commit

Permalink
Merge branch 'release/v1.0.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
mi-xu committed Aug 19, 2019
2 parents 9091685 + 8a06fe8 commit 73fa82b
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 26 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@ Note this uses the `Secp256k1VerificationKey2018` type and an `ethereumAddress`
The resolver presents a simple `resolver()` function that returns a ES6 Promise returning the DID document.

```js
import resolve from 'did-resolver'
import registerResolver from 'https-did-resolver'
import { Resolver } from 'did-resolver'
import getResolver from 'https-did-resolver'

registerResolver()

resolve('did:https:example.com').then(doc => console.log)
const httpsResolver = getResolver()
const didResolver = new Resolver(httpsResolver)
didResolver.resolve('did:https:example.com').then(doc => console.log)

// You can also use ES7 async/await syntax
const doc = await resolve('did:https:example.com')
const doc = await didResolver.resolve('did:https:example.com')
```
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"name": "https-did-resolver",
"version": "0.1.0",
"version": "1.0.0",
"description": "Resolve DID documents from an https domain",
"main": "lib/register.js",
"types": "lib/register.d.ts",
"main": "lib/resolver.js",
"types": "lib/resolver.d.ts",
"author": "Mike Xu <mike.xu@consensys.net>",
"license": "Apache-2.0",
"dependencies": {
"did-resolver": "0.0.6",
"did-resolver": "1.0.0",
"xmlhttprequest": "^1.8.0"
},
"scripts": {
Expand Down
24 changes: 15 additions & 9 deletions src/__tests__/register.test.ts → src/__tests__/resolver.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import resolve, { DIDDocument } from 'did-resolver'
import register from '../register'
import { Resolver, DIDDocument, DIDResolver } from 'did-resolver'
import getResolver from '../resolver'
import mock from 'xhr-mock'

describe('https did resolver', () => {
Expand Down Expand Up @@ -42,46 +42,52 @@ describe('https did resolver', () => {
authentication: validDidDoc.authentication,
})

beforeAll(() => register())
let didResolver: Resolver
let httpsDidResolver: { [index: string]: DIDResolver }

beforeAll(async () => {
httpsDidResolver = getResolver()
didResolver = new Resolver(httpsDidResolver)
})
beforeEach(() => mock.setup())
afterEach(() => mock.teardown())

it('resolves document', () => {
mock.get(url, { status: 200, body: validResponse })
return expect(resolve(did)).resolves.toEqual(validDidDoc)
return expect(didResolver.resolve(did)).resolves.toEqual(validDidDoc)
})

it('fails if the did is not a valid https url', () => {
mock.get(url, { status: 404 })
return expect(resolve(did)).rejects.toThrowError(
return expect(didResolver.resolve(did)).rejects.toThrowError(
'DID must resolve to a valid https URL: Invalid http response status 404',
)
})

it('fails if the did document is not valid json', () => {
mock.get(url, { status: 200, body: 'invalid json' })
return expect(resolve(did)).rejects.toThrowError(
return expect(didResolver.resolve(did)).rejects.toThrowError(
'DID must resolve to a JSON document',
)
})

it('fails if the did document is missing a context', () => {
mock.get(url, { status: 200, body: noContextResponse })
return expect(resolve(did)).rejects.toThrowError(
return expect(didResolver.resolve(did)).rejects.toThrowError(
'DID document missing context',
)
})

it('fails if the did document id does not match', () => {
mock.get(url, { status: 200, body: wrongIdResponse })
return expect(resolve(did)).rejects.toThrowError(
return expect(didResolver.resolve(did)).rejects.toThrowError(
'DID document id does not match requested did',
)
})

it('fails if the did document has no public keys', () => {
mock.get(url, { status: 200, body: noPublicKeyResponse })
return expect(resolve(did)).rejects.toThrowError(
return expect(didResolver.resolve(did)).rejects.toThrowError(
'DID document has no public keys',
)
})
Expand Down
7 changes: 4 additions & 3 deletions src/register.ts → src/resolver.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { registerMethod, ParsedDID, DIDDocument } from 'did-resolver'
import { ParsedDID, DIDDocument } from 'did-resolver'

declare global {
interface Window {
Expand Down Expand Up @@ -38,7 +38,7 @@ function get(url: string): Promise<any> {
})
}

export default function register() {
export default function getResolver() {
async function resolve(
did: string,
parsed: ParsedDID,
Expand Down Expand Up @@ -72,5 +72,6 @@ export default function register() {

return data
}
registerMethod('https', resolve)

return { 'https': resolve }
}

0 comments on commit 73fa82b

Please sign in to comment.