diff --git a/tests/core/CreateOperation.spec.ts b/tests/core/CreateOperation.spec.ts index 2d4c19351..e06aae3d0 100644 --- a/tests/core/CreateOperation.spec.ts +++ b/tests/core/CreateOperation.spec.ts @@ -9,6 +9,24 @@ import SidetreeError from '../../lib/common/SidetreeError'; describe('CreateOperation', async () => { describe('parseJcsObject', () => { + it('should leave delta as empty if it is not valid', () => { + const operationObject = { + type: 'create', + suffix_data: { + delta_hash: 'something', + recovery_commitment: 'something' + }, + delta: 'this is not a valid delta' + } + + spyOn(CreateOperation as any, 'validateSuffixData').and.callFake(()=> { + //do nothing + }) + + const result = CreateOperation.parseJcsObject(operationObject, Buffer.from('something')); + expect(result.delta).toBeUndefined(); + }); + it('should throw sidetree error if object contains more or less than 3 properties', () => { const twoProperties = { one: 1, two: 2 }; const fourProperties = { one: 1, two: 2, three: 3, four: 4 }; diff --git a/tests/core/RequestHandler.spec.ts b/tests/core/RequestHandler.spec.ts index 13bfb304d..417a6b8b8 100644 --- a/tests/core/RequestHandler.spec.ts +++ b/tests/core/RequestHandler.spec.ts @@ -2,6 +2,7 @@ import * as crypto from 'crypto'; import * as createFixture from '../fixtures/create/create.json'; import * as deactivateFixture from '../fixtures/deactivate/deactivate.json'; +import * as longFormResultingDocument from '../fixtures/longFormDid/resultingDocument.json'; import * as recoverFixture from '../fixtures/recover/recover.json'; import * as updateFixture from '../fixtures/update/update.json'; @@ -139,9 +140,9 @@ describe('RequestHandler', () => { it('should resolve long form did from test vectors correctly', async () => { const longFormFixture = fs.readFileSync('./tests/fixtures/longFormDid/longFormDid.txt', 'utf8'); - // const longFormFixture = 'did:sidetree:EiAhWlyxTdyM9XLFcWNJvz_kkbnklMfD5XiQKpBAIOnPuw:eyJkZWx0YSI6eyJwYXRjaGVzIjpbeyJhY3Rpb24iOiJyZXBsYWNlIiwiZG9jdW1lbnQiOnsicHVibGljX2tleXMiOlt7ImlkIjoiYW55U2lnbmluZ0tleUlkIiwiandrIjp7ImNydiI6InNlY3AyNTZrMSIsImt0eSI6IkVDIiwieCI6IkVZanU4c3h5YVRvb2o4ekFzTG9fblZOSncxaHJobkhRUVRwT0hzd2g1X0UiLCJ5IjoiWG9jOFVVQUFnUWs4a196dEhlSEpGUlFySGFxb2F2Z3RyR3Fzb3cwdFh2dyJ9LCJwdXJwb3NlIjpbImF1dGgiXSwidHlwZSI6IkVjZHNhU2VjcDI1NmsxVmVyaWZpY2F0aW9uS2V5MjAxOSJ9XSwic2VydmljZV9lbmRwb2ludHMiOlt7ImVuZHBvaW50IjoiYW55RW5kcG9pbnQiLCJpZCI6ImFueVNlcnZpY2VFbmRwb2ludElkIiwidHlwZSI6ImFueVR5cGUifV19fV0sInVwZGF0ZV9jb21taXRtZW50IjoiRWlEZnBOSmNDOWJKc3A0Q0t1Uk5Vd0JCYUxFckdwc25DUTlBTTl5c2ZqTUhQZyJ9LCJzdWZmaXhfZGF0YSI6eyJkZWx0YV9oYXNoIjoiRWlBT3BOeXNJQndpSHpKQ1NCcjhuLUR4Sjl6bG1YUFNjeGFaTW05aW5fQzVjdyIsInJlY292ZXJ5X2NvbW1pdG1lbnQiOiJFaUR4UUJhajJsUDIyYkNjQ2w0NHhLUVJ2Y21ib1h6c1ZBaTFyQnI3SGozVERRIn19' const response = await requestHandler.handleResolveRequest(longFormFixture); expect(response.status).toEqual(ResponseStatus.Succeeded); + expect(response).toEqual(longFormResultingDocument as any); }) it('should process create operation from test vectors correctly', async () => { diff --git a/tests/fixtures/longFormDid/longFormDid.txt b/tests/fixtures/longFormDid/longFormDid.txt index 0cd01df7c..7967df320 100644 --- a/tests/fixtures/longFormDid/longFormDid.txt +++ b/tests/fixtures/longFormDid/longFormDid.txt @@ -1 +1 @@ -did:sidetree:EiAhWlyxTdyM9XLFcWNJvz_kkbnklMfD5XiQKpBAIOnPuw:eyJkZWx0YSI6eyJwYXRjaGVzIjpbeyJhY3Rpb24iOiJyZXBsYWNlIiwiZG9jdW1lbnQiOnsicHVibGljX2tleXMiOlt7ImlkIjoiYW55U2lnbmluZ0tleUlkIiwiandrIjp7ImNydiI6InNlY3AyNTZrMSIsImt0eSI6IkVDIiwieCI6IkVZanU4c3h5YVRvb2o4ekFzTG9fblZOSncxaHJobkhRUVRwT0hzd2g1X0UiLCJ5IjoiWG9jOFVVQUFnUWs4a196dEhlSEpGUlFySGFxb2F2Z3RyR3Fzb3cwdFh2dyJ9LCJwdXJwb3NlIjpbImF1dGgiXSwidHlwZSI6IkVjZHNhU2VjcDI1NmsxVmVyaWZpY2F0aW9uS2V5MjAxOSJ9XSwic2VydmljZV9lbmRwb2ludHMiOlt7ImVuZHBvaW50IjoiYW55RW5kcG9pbnQiLCJpZCI6ImFueVNlcnZpY2VFbmRwb2ludElkIiwidHlwZSI6ImFueVR5cGUifV19fV0sInVwZGF0ZV9jb21taXRtZW50IjoiRWlEZnBOSmNDOWJKc3A0Q0t1Uk5Vd0JCYUxFckdwc25DUTlBTTl5c2ZqTUhQZyJ9LCJzdWZmaXhfZGF0YSI6eyJkZWx0YV9oYXNoIjoiRWlBT3BOeXNJQndpSHpKQ1NCcjhuLUR4Sjl6bG1YUFNjeGFaTW05aW5fQzVjdyIsInJlY292ZXJ5X2NvbW1pdG1lbnQiOiJFaUR4UUJhajJsUDIyYkNjQ2w0NHhLUVJ2Y21ib1h6c1ZBaTFyQnI3SGozVERRIn19 \ No newline at end of file +did:sidetree:EiDahaOGH-liLLdDtTxEAdc8i-cfCz-WUcQdRJheMVNn3A:eyJkZWx0YSI6eyJwYXRjaGVzIjpbeyJhY3Rpb24iOiJyZXBsYWNlIiwiZG9jdW1lbnQiOnsicHVibGljX2tleXMiOlt7ImlkIjoiYW55U2lnbmluZ0tleUlkIiwiandrIjp7ImNydiI6InNlY3AyNTZrMSIsImt0eSI6IkVDIiwieCI6Ikg2MXZxQW1fLVRDM09yRlNxUHJFZlNmZzQyMk5SOFFIUHFyMG1MeDY0RE0iLCJ5IjoiczBXbldZODdKcmlCamJ5b1kzRmRVbWlmSzdKSlJMUjY1R3RQdGhYZXl1YyJ9LCJwdXJwb3NlIjpbImF1dGgiXSwidHlwZSI6IkVjZHNhU2VjcDI1NmsxVmVyaWZpY2F0aW9uS2V5MjAxOSJ9XSwic2VydmljZV9lbmRwb2ludHMiOlt7ImVuZHBvaW50IjoiaHR0cDovL2FueS5lbmRwb2ludCIsImlkIjoiYW55U2VydmljZUVuZHBvaW50SWQiLCJ0eXBlIjoiYW55VHlwZSJ9XX19XSwidXBkYXRlX2NvbW1pdG1lbnQiOiJFaUJNV0UySkZhRmlwUGR0aGNGaVFlay1TWFRNaTVJV0lGWEFOOGhLRkN5TEp3In0sInN1ZmZpeF9kYXRhIjp7ImRlbHRhX2hhc2giOiJFaUJQNmdBT3h4M1lPTDhQWlBaRzNtZWRGZ2RxV1NEYXlWWDN1MVcyZi1JUEVRIiwicmVjb3ZlcnlfY29tbWl0bWVudCI6IkVpQmc4b3F2VTBacV9INUJvcW1XZjBJcmhldFE5MXdYYzVmRFBwSWpCOXdXNXcifX0 \ No newline at end of file diff --git a/tests/fixtures/longFormDid/resultingDocument.json b/tests/fixtures/longFormDid/resultingDocument.json new file mode 100644 index 000000000..6ef99f7c4 --- /dev/null +++ b/tests/fixtures/longFormDid/resultingDocument.json @@ -0,0 +1,40 @@ +{ + "status": "succeeded", + "body": { + "@context": "https://www.w3.org/ns/did-resolution/v1", + "didDocument": { + "id": "did:sidetree:EiDahaOGH-liLLdDtTxEAdc8i-cfCz-WUcQdRJheMVNn3A:eyJkZWx0YSI6eyJwYXRjaGVzIjpbeyJhY3Rpb24iOiJyZXBsYWNlIiwiZG9jdW1lbnQiOnsicHVibGljX2tleXMiOlt7ImlkIjoiYW55U2lnbmluZ0tleUlkIiwiandrIjp7ImNydiI6InNlY3AyNTZrMSIsImt0eSI6IkVDIiwieCI6Ikg2MXZxQW1fLVRDM09yRlNxUHJFZlNmZzQyMk5SOFFIUHFyMG1MeDY0RE0iLCJ5IjoiczBXbldZODdKcmlCamJ5b1kzRmRVbWlmSzdKSlJMUjY1R3RQdGhYZXl1YyJ9LCJwdXJwb3NlIjpbImF1dGgiXSwidHlwZSI6IkVjZHNhU2VjcDI1NmsxVmVyaWZpY2F0aW9uS2V5MjAxOSJ9XSwic2VydmljZV9lbmRwb2ludHMiOlt7ImVuZHBvaW50IjoiaHR0cDovL2FueS5lbmRwb2ludCIsImlkIjoiYW55U2VydmljZUVuZHBvaW50SWQiLCJ0eXBlIjoiYW55VHlwZSJ9XX19XSwidXBkYXRlX2NvbW1pdG1lbnQiOiJFaUJNV0UySkZhRmlwUGR0aGNGaVFlay1TWFRNaTVJV0lGWEFOOGhLRkN5TEp3In0sInN1ZmZpeF9kYXRhIjp7ImRlbHRhX2hhc2giOiJFaUJQNmdBT3h4M1lPTDhQWlBaRzNtZWRGZ2RxV1NEYXlWWDN1MVcyZi1JUEVRIiwicmVjb3ZlcnlfY29tbWl0bWVudCI6IkVpQmc4b3F2VTBacV9INUJvcW1XZjBJcmhldFE5MXdYYzVmRFBwSWpCOXdXNXcifX0", + "@context": [ + "https://www.w3.org/ns/did/v1", + { + "@base": "did:sidetree:EiDahaOGH-liLLdDtTxEAdc8i-cfCz-WUcQdRJheMVNn3A:eyJkZWx0YSI6eyJwYXRjaGVzIjpbeyJhY3Rpb24iOiJyZXBsYWNlIiwiZG9jdW1lbnQiOnsicHVibGljX2tleXMiOlt7ImlkIjoiYW55U2lnbmluZ0tleUlkIiwiandrIjp7ImNydiI6InNlY3AyNTZrMSIsImt0eSI6IkVDIiwieCI6Ikg2MXZxQW1fLVRDM09yRlNxUHJFZlNmZzQyMk5SOFFIUHFyMG1MeDY0RE0iLCJ5IjoiczBXbldZODdKcmlCamJ5b1kzRmRVbWlmSzdKSlJMUjY1R3RQdGhYZXl1YyJ9LCJwdXJwb3NlIjpbImF1dGgiXSwidHlwZSI6IkVjZHNhU2VjcDI1NmsxVmVyaWZpY2F0aW9uS2V5MjAxOSJ9XSwic2VydmljZV9lbmRwb2ludHMiOlt7ImVuZHBvaW50IjoiaHR0cDovL2FueS5lbmRwb2ludCIsImlkIjoiYW55U2VydmljZUVuZHBvaW50SWQiLCJ0eXBlIjoiYW55VHlwZSJ9XX19XSwidXBkYXRlX2NvbW1pdG1lbnQiOiJFaUJNV0UySkZhRmlwUGR0aGNGaVFlay1TWFRNaTVJV0lGWEFOOGhLRkN5TEp3In0sInN1ZmZpeF9kYXRhIjp7ImRlbHRhX2hhc2giOiJFaUJQNmdBT3h4M1lPTDhQWlBaRzNtZWRGZ2RxV1NEYXlWWDN1MVcyZi1JUEVRIiwicmVjb3ZlcnlfY29tbWl0bWVudCI6IkVpQmc4b3F2VTBacV9INUJvcW1XZjBJcmhldFE5MXdYYzVmRFBwSWpCOXdXNXcifX0" + } + ], + "service": [ + { + "id": "#anyServiceEndpointId", + "type": "anyType", + "serviceEndpoint": "http://any.endpoint" + } + ], + "authentication": [ + { + "id": "#anySigningKeyId", + "controller": "", + "type": "EcdsaSecp256k1VerificationKey2019", + "publicKeyJwk": { + "crv": "secp256k1", + "kty": "EC", + "x": "H61vqAm_-TC3OrFSqPrEfSfg422NR8QHPqr0mLx64DM", + "y": "s0WnWY87JriBjbyoY3FdUmifK7JJRLR65GtPthXeyuc" + } + } + ] + }, + "methodMetadata": { + "published": false, + "recoveryCommitment": "EiBg8oqvU0Zq_H5BoqmWf0IrhetQ91wXc5fDPpIjB9wW5w", + "updateCommitment": "EiBMWE2JFaFipPdthcFiQek-SXTMi5IWIFXAN8hKFCyLJw" + } + } + } \ No newline at end of file