From 36bed7b84531c1b344e973cc8a4dba272428766b Mon Sep 17 00:00:00 2001 From: Fergal Date: Thu, 17 Oct 2024 15:06:03 +0100 Subject: [PATCH] feat: rename managed identifier (#283) * feat: rename identifier * feat: updated interface and await before return * refactor: prettier run * test: update unit test with new interface --- examples/integration-scripts/salty.test.ts | 9 +++++++ src/keri/app/aiding.ts | 28 ++++++++++++++++++---- test/app/aiding.test.ts | 9 +++++++ 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/examples/integration-scripts/salty.test.ts b/examples/integration-scripts/salty.test.ts index 5c460796..b74833dc 100644 --- a/examples/integration-scripts/salty.test.ts +++ b/examples/integration-scripts/salty.test.ts @@ -168,5 +168,14 @@ test('salty', async () => { await assertOperations(client1); + aid = await client1.identifiers().update('aid3', { name: 'aid4' }); + assert.equal(aid.name, 'aid4'); + aid = await client1.identifiers().get('aid4'); + assert.equal(aid.name, 'aid4'); + aids = await client1.identifiers().list(2, 2); + assert.equal(aids.aids.length, 1); + aid = aids.aids[0]; + assert.equal(aid.name, 'aid4'); + console.log('Salty test passed'); }, 30000); diff --git a/src/keri/app/aiding.ts b/src/keri/app/aiding.ts index 7bab1c48..a0863748 100644 --- a/src/keri/app/aiding.ts +++ b/src/keri/app/aiding.ts @@ -7,7 +7,6 @@ import { MtrDex } from '../core/matter'; import { Serder } from '../core/serder'; import { parseRangeHeaders } from '../core/httping'; import { KeyManager } from '../core/keeping'; -import { Operation } from './coring'; import { HabState } from '../core/state'; /** Arguments required to create an identfier */ @@ -67,6 +66,13 @@ export interface IdentifierDeps { manager: KeyManager | null; } +/** + * Updatable information for a managed identifier + */ +export interface IdentifierInfo { + name: string; +} + /** Identifier */ export class Identifier { public client: IdentifierDeps; @@ -110,8 +116,8 @@ export class Identifier { /** * Get information for a managed identifier * @async - * @param {string} name Name or alias of the identifier - * @returns {Promise} A promise to the identifier information + * @param {string} name Prefix or alias of the identifier + * @returns {Promise} A promise to the identifier information */ async get(name: string): Promise { const path = `/identifiers/${encodeURIComponent(name)}`; @@ -121,6 +127,20 @@ export class Identifier { return await res.json(); } + /** + * Update managed identifier + * @async + * @param {string} name Prefix or alias of the identifier + * @param {IdentifierInfo} info Information to update for the given identifier + * @returns {Promise} A promise to the identifier information after updating + */ + async update(name: string, info: IdentifierInfo): Promise { + const path = `/identifiers/${name}`; + const method = 'PUT'; + const res = await this.client.fetch(path, method, info); + return await res.json(); + } + /** * Create a managed identifier * @async @@ -253,7 +273,7 @@ export class Identifier { /** * Generate an interaction event in a managed identifier * @async - * @param {string} name Name or alias of the identifier + * @param {string} name Prefix or alias of the identifier * @param {any} [data] Option data to be anchored in the interaction event * @returns {Promise} A promise to the interaction event result */ diff --git a/test/app/aiding.test.ts b/test/app/aiding.test.ts index fbb885ac..bbe910c7 100644 --- a/test/app/aiding.test.ts +++ b/test/app/aiding.test.ts @@ -369,6 +369,15 @@ describe('Aiding', () => { assert.deepEqual(lastCall.body.randy.transferable, true); }); + it('Can rename identifier', async () => { + client.fetch.mockResolvedValue(Response.json({})); + await client.identifiers().update('aid1', { name: 'aid2' }); + const lastCall = client.getLastMockRequest(); + assert.equal(lastCall.path, '/identifiers/aid1'); + assert.equal(lastCall.method, 'PUT'); + assert.equal(lastCall.body.name, 'aid2'); + }); + describe('Group identifiers', () => { it('Can Rotate group', async () => { const member1 = await createMockIdentifierState(