diff --git a/__tests__/shared/webDidFlow.ts b/__tests__/shared/webDidFlow.ts index 15a98307c..ef6034eef 100644 --- a/__tests__/shared/webDidFlow.ts +++ b/__tests__/shared/webDidFlow.ts @@ -33,6 +33,23 @@ export default (testContext: { serviceIdentityKey = serviceIdentity.keys[0] }) + it('should add service endpoint', async () => { + const service = { + id: 'did:web:example.com#1', + type: 'Messaging', + description: 'Post any RAW message here', + serviceEndpoint: 'https://example.com/messaging', + } + + await agent.identityManagerAddService({ + did: 'did:web:example.com', + service, + }) + + const testIdentity = await agent.identityManagerGetIdentity({ did: 'did:web:example.com' }) + expect(testIdentity.services[0]).toEqual(service) + }) + it('should get existing service identity', async () => { const testIdentity = await agent.identityManagerGetOrCreateIdentity({ provider: 'did:web', diff --git a/packages/daf-graphql/src/methods/identity-manager.ts b/packages/daf-graphql/src/methods/identity-manager.ts index f20fbf35d..b8fe6fb3d 100644 --- a/packages/daf-graphql/src/methods/identity-manager.ts +++ b/packages/daf-graphql/src/methods/identity-manager.ts @@ -148,6 +148,27 @@ export const identityManagerDeleteIdentity: IAgentGraphQLMethod = { `, } +export const identityManagerAddService: IAgentGraphQLMethod = { + type: 'Mutation', + query: ` + mutation identityManagerAddService($did: String, $service: ServiceInput) { + identityManagerAddService(did: $did, service: $service) + } + `, + typeDef: ` + scalar AddServiceResult + input ServiceInput { + id: String! + type: String! + serviceEndpoint: String! + description: String + } + extend type Mutation { + identityManagerAddService(did: String, service: ServiceInput): AddServiceResult + } + `, +} + export const supportedMethods: Record = { identityManagerGetProviders, identityManagerGetIdentities, @@ -155,6 +176,7 @@ export const supportedMethods: Record = { identityManagerCreateIdentity, identityManagerGetOrCreateIdentity, identityManagerDeleteIdentity, + identityManagerAddService, // TODO identityManagerImportIdentity } diff --git a/packages/daf-typeorm/src/entities/identity.ts b/packages/daf-typeorm/src/entities/identity.ts index abbdbfdc2..406d6e66b 100644 --- a/packages/daf-typeorm/src/entities/identity.ts +++ b/packages/daf-typeorm/src/entities/identity.ts @@ -46,7 +46,9 @@ export class Identity extends BaseEntity { //@ts-ignore keys: Key[] - @OneToMany((type) => Service, (service) => service.identity) + @OneToMany((type) => Service, (service) => service.identity, { + cascade: ['insert'], + }) //@ts-ignore services: Service[]