Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/app-runtime/src/modules/SSEModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export class SSEModule extends AppRuntimeModule<SSEModuleConfiguration> {
}

const baseUrl = this.configuration.baseUrlOverride ?? this.runtime["runtimeConfig"].transportLibrary.baseUrl;
const sseUrl = `${baseUrl}/api/v1/sse`;
const sseUrl = `${baseUrl}/api/v2/sse`;

this.logger.info(`Connecting to SSE endpoint: ${sseUrl}`);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ export class IdentityDeletionProcessStatusChangedModule extends AppRuntimeModule
const services = await this.runtime.getServices(event.eventTargetAddress);
const identityDeletionProcesses = await services.transportServices.identityDeletionProcesses.getIdentityDeletionProcesses();

const approvedIdentityDeletionProcess = identityDeletionProcesses.value.filter((idp) => idp.status === IdentityDeletionProcessStatus.Approved).at(0);
const deletionDate = approvedIdentityDeletionProcess?.gracePeriodEndsAt ? CoreDate.from(approvedIdentityDeletionProcess.gracePeriodEndsAt) : undefined;
const activeIdentityDeletionProcess = identityDeletionProcesses.value.filter((idp) => idp.status === IdentityDeletionProcessStatus.Active).at(0);
const deletionDate = activeIdentityDeletionProcess?.gracePeriodEndsAt ? CoreDate.from(activeIdentityDeletionProcess.gracePeriodEndsAt) : undefined;

await this.updateLocalAccountDeletionDate(event.eventTargetAddress, deletionDate, true);
return;
}

switch (identityDeletionProcess.status) {
case IdentityDeletionProcessStatus.Approved:
case IdentityDeletionProcessStatus.Active:
await this.updateLocalAccountDeletionDate(event.eventTargetAddress, CoreDate.from(identityDeletionProcess.gracePeriodEndsAt!));
break;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ describe("IdentityDeletionProcessStatusChanged", function () {
const activeIdentityDeletionProcess = await session1.transportServices.identityDeletionProcesses.getActiveIdentityDeletionProcess();
if (!activeIdentityDeletionProcess.isSuccess) return;

if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Approved) {
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Active) {
const abortResult = await session1.transportServices.identityDeletionProcesses.cancelIdentityDeletionProcess();
if (abortResult.isError) throw abortResult.error;

Expand Down Expand Up @@ -115,7 +115,7 @@ describe("IdentityDeletionProcessStatusChanged", function () {
expect(account.deletionDate).toBeUndefined();
});

test("should handle multiple synced IdentityDeletionProcesses that happend while not syncing with the last one approved", async function () {
test("should handle multiple synced IdentityDeletionProcesses that happend while not syncing with the last one active", async function () {
await session1.transportServices.identityDeletionProcesses.initiateIdentityDeletionProcess();
await session1.transportServices.identityDeletionProcesses.cancelIdentityDeletionProcess();
await session1.transportServices.identityDeletionProcesses.initiateIdentityDeletionProcess();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ describe("MultiAccountController", function () {
}

let abortResult;
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Approved) {
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Active) {
abortResult = await session.transportServices.identityDeletionProcesses.cancelIdentityDeletionProcess();
}
if (abortResult?.isError) throw abortResult.error;
Expand Down
2 changes: 1 addition & 1 deletion packages/app-runtime/test/runtime/Offboarding.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ describe("Offboarding", function () {
await services2.transportServices.account.syncDatawallet();

const identityDeletionProcessOnSecondAccount = (await services2.transportServices.identityDeletionProcesses.getActiveIdentityDeletionProcess()).value;
expect(identityDeletionProcessOnSecondAccount.status).toStrictEqual(IdentityDeletionProcessStatus.Approved);
expect(identityDeletionProcessOnSecondAccount.status).toStrictEqual(IdentityDeletionProcessStatus.Active);

await runtime.accountServices.offboardAccount(localAccount2Id);
await services1.transportServices.account.syncDatawallet();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3638,7 +3638,7 @@ describe("AttributesController", function () {
const attributeTagClient = consumptionController.attributes["attributeTagClient"];

attributeTagClientSpy = spy(attributeTagClient);
when(attributeTagClientSpy.get("/api/v1/Tags", anything(), anything())).thenResolve(
when(attributeTagClientSpy.get("/api/v2/Tags", anything(), anything())).thenResolve(
ClientResult.ok(
AttributeTagCollection.from({
supportedLanguages: ["en"],
Expand Down Expand Up @@ -3698,7 +3698,7 @@ describe("AttributesController", function () {
attributesControllerSpy = spy(consumptionController.attributes);

etag = "some-e-tag";
when(attributeTagClientSpy.get("/api/v1/Tags", anything(), anything())).thenCall((_path, _params, config) => {
when(attributeTagClientSpy.get("/api/v2/Tags", anything(), anything())).thenCall((_path, _params, config) => {
const etagMatched = etag === config?.headers?.["if-none-match"];
const platformParameters = {
etag,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export enum IdentityDeletionProcessStatus {
Approved = "Approved",
Active = "Active",
Cancelled = "Cancelled"
}

Expand All @@ -8,8 +8,6 @@ export interface IdentityDeletionProcessDTO {
status: IdentityDeletionProcessStatus;
createdAt?: string;
createdByDevice?: string;
approvedAt?: string;
approvedByDevice?: string;
gracePeriodEndsAt?: string;
cancelledAt?: string;
cancelledByDevice?: string;
Expand Down
4 changes: 0 additions & 4 deletions packages/runtime/src/useCases/common/RuntimeErrors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -280,10 +280,6 @@ class IdentityDeletionProcess {
return new ApplicationError("error.runtime.identityDeletionProcess.noActiveIdentityDeletionProcess", "No active IdentityDeletionProcess found.");
}

public noApprovedIdentityDeletionProcess() {
return new ApplicationError("error.runtime.identityDeletionProcess.noApprovedIdentityDeletionProcess", "No approved IdentityDeletionProcess found.");
}

public activeIdentityDeletionProcessAlreadyExists() {
return new ApplicationError(
"error.runtime.identityDeletionProcess.activeIdentityDeletionProcessAlreadyExists",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ export class CancelIdentityDeletionProcessUseCase extends UseCase<void, Identity
}

protected async executeInternal(): Promise<Result<IdentityDeletionProcessDTO>> {
const identityDeletionProcess = await this.identityDeletionProcessController.getIdentityDeletionProcessByStatus(IdentityDeletionProcessStatus.Approved);
if (!identityDeletionProcess) return Result.fail(RuntimeErrors.identityDeletionProcess.noApprovedIdentityDeletionProcess());
const identityDeletionProcess = await this.identityDeletionProcessController.getIdentityDeletionProcessByStatus(IdentityDeletionProcessStatus.Active);
if (!identityDeletionProcess) return Result.fail(RuntimeErrors.identityDeletionProcess.noActiveIdentityDeletionProcess());

const cancelledIdentityDeletionProcess = await this.identityDeletionProcessController.cancelIdentityDeletionProcess(identityDeletionProcess.id.toString());
await this.accountController.syncDatawallet();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export class GetActiveIdentityDeletionProcessUseCase extends UseCase<void, Ident
}

protected async executeInternal(): Promise<Result<IdentityDeletionProcessDTO>> {
const identityDeletionProcess = await this.identityDeletionProcessController.getIdentityDeletionProcessByStatus(IdentityDeletionProcessStatus.Approved);
const identityDeletionProcess = await this.identityDeletionProcessController.getIdentityDeletionProcessByStatus(IdentityDeletionProcessStatus.Active);
if (!identityDeletionProcess) return Result.fail(RuntimeErrors.identityDeletionProcess.noActiveIdentityDeletionProcess());

return Result.ok(IdentityDeletionProcessMapper.toIdentityDeletionProcessDTO(identityDeletionProcess));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ export class IdentityDeletionProcessMapper {
id: identityDeletionProcess.id.toString(),
createdAt: identityDeletionProcess.createdAt?.toString(),
createdByDevice: identityDeletionProcess.createdByDevice?.toString(),
approvedAt: identityDeletionProcess.approvedAt?.toString(),
approvedByDevice: identityDeletionProcess.approvedByDevice?.toString(),
gracePeriodEndsAt: identityDeletionProcess.gracePeriodEndsAt?.toString(),
status: identityDeletionProcess.status,
cancelledAt: identityDeletionProcess.cancelledAt?.toString(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export class InitiateIdentityDeletionProcessUseCase extends UseCase<InitiateIden
}

protected async executeInternal(request: InitiateIdentityDeletionProcessRequest): Promise<Result<IdentityDeletionProcessDTO>> {
const identityDeletionProcess = await this.identityDeletionProcessController.getIdentityDeletionProcessByStatus(IdentityDeletionProcessStatus.Approved);
const identityDeletionProcess = await this.identityDeletionProcessController.getIdentityDeletionProcessByStatus(IdentityDeletionProcessStatus.Active);
if (identityDeletionProcess) return Result.fail(RuntimeErrors.identityDeletionProcess.activeIdentityDeletionProcessAlreadyExists());

const initiatedIdentityDeletionProcess = await this.identityDeletionProcessController.initiateIdentityDeletionProcess(request.lengthOfGracePeriodInDays);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ afterEach(async () => {
return;
}
let abortResult;
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Approved) {
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Active) {
abortResult = await services1.transport.identityDeletionProcesses.cancelIdentityDeletionProcess();
}
await syncUntilHasEvent(services2, PeerDeletionCancelledEvent, (e) => e.data.id === relationshipId);
Expand Down
12 changes: 6 additions & 6 deletions packages/runtime/test/transport/identityDeletionProcess.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ afterEach(async () => {
return;
}
let abortResult;
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Approved) {
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Active) {
abortResult = await transportService.identityDeletionProcesses.cancelIdentityDeletionProcess();
}

Expand All @@ -49,13 +49,13 @@ describe("IdentityDeletionProcess", () => {
expect(result).toBeSuccessful();

const identityDeletionProcess = result.value;
expect(identityDeletionProcess.status).toBe(IdentityDeletionProcessStatus.Approved);
expect(identityDeletionProcess.status).toBe(IdentityDeletionProcessStatus.Active);

await expect(eventBus).toHavePublished(IdentityDeletionProcessStatusChangedEvent, (e) => e.data!.id === identityDeletionProcess.id);
await expect(eventBus).toHavePublished(IdentityDeletionProcessStatusChangedEvent, (e) => e.data!.status === IdentityDeletionProcessStatus.Approved);
await expect(eventBus).toHavePublished(IdentityDeletionProcessStatusChangedEvent, (e) => e.data!.status === IdentityDeletionProcessStatus.Active);
});

test("should return an error trying to initiate an IdentityDeletionProcess if there already is one approved", async function () {
test("should return an error trying to initiate an IdentityDeletionProcess if there already is one active", async function () {
await transportService.identityDeletionProcesses.initiateIdentityDeletionProcess();
const result = await transportService.identityDeletionProcesses.initiateIdentityDeletionProcess();
expect(result).toBeAnError(
Expand Down Expand Up @@ -122,7 +122,7 @@ describe("IdentityDeletionProcess", () => {
expect(identityDeletionProcesses[0].id.toString()).toBe(cancelledIdentityDeletionProcess.id.toString());
expect(identityDeletionProcesses[0].status).toBe(IdentityDeletionProcessStatus.Cancelled);
expect(identityDeletionProcesses[1].id.toString()).toBe(activeIdentityDeletionProcess.id.toString());
expect(identityDeletionProcesses[1].status).toBe(IdentityDeletionProcessStatus.Approved);
expect(identityDeletionProcesses[1].status).toBe(IdentityDeletionProcessStatus.Active);
});

test("should return an empty list trying to get all IdentityDeletionProcesses if there are none", async function () {
Expand Down Expand Up @@ -155,7 +155,7 @@ describe("IdentityDeletionProcess", () => {

test("should return an error trying to cancel an IdentityDeletionProcess if there is none active", async function () {
const result = await transportService.identityDeletionProcesses.cancelIdentityDeletionProcess();
expect(result).toBeAnError("No approved IdentityDeletionProcess found.", "error.runtime.identityDeletionProcess.noApprovedIdentityDeletionProcess");
expect(result).toBeAnError("No active IdentityDeletionProcess found.", "error.runtime.identityDeletionProcess.noActiveIdentityDeletionProcess");
});
});
});
4 changes: 2 additions & 2 deletions packages/runtime/test/transport/messages.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -575,7 +575,7 @@ describe("Message errors", () => {
return;
}
let abortResult;
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Approved) {
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Active) {
abortResult = await client2.transport.identityDeletionProcesses.cancelIdentityDeletionProcess();
}
await syncUntilHasEvent(client1, PeerDeletionCancelledEvent);
Expand Down Expand Up @@ -737,7 +737,7 @@ describe("Postponed Notifications via Messages", () => {
return;
}
let abortResult;
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Approved) {
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Active) {
abortResult = await client1.transport.identityDeletionProcesses.cancelIdentityDeletionProcess();
}
await syncUntilHasEvent(client5, PeerDeletionCancelledEvent, (e) => e.data.id === relationshipId);
Expand Down
2 changes: 1 addition & 1 deletion packages/runtime/test/transport/relationships.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ afterEach(async () => {
}

let abortResult;
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Approved) {
if (activeIdentityDeletionProcess.value.status === IdentityDeletionProcessStatus.Active) {
abortResult = await services3.transport.identityDeletionProcesses.cancelIdentityDeletionProcess();
if (abortResult.isError) throw abortResult.error;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ export interface BackboneIdentityDeletionProcess {
status: IdentityDeletionProcessStatus;
createdAt?: string;
createdByDevice?: string;
approvedAt?: string;
approvedByDevice?: string;
gracePeriodEndsAt?: string;
cancelledAt?: string;
cancelledByDevice?: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ export class IdentityClient extends RESTClient {
protected override _logDirective = RESTClientLogDirective.LogResponse;

public async createIdentity(value: BackbonePostIdentityRequest): Promise<ClientResult<BackbonePostIdentityResponse>> {
return await this.post<BackbonePostIdentityResponse>("/api/v1/Identities", value);
return await this.post<BackbonePostIdentityResponse>("/api/v2/Identities", value);
}

public async checkIfIdentityIsDeleted(username: string): Promise<ClientResult<BackboneCheckIfIdentityIsDeletedResponse>> {
return await this.get<BackboneCheckIfIdentityIsDeletedResponse>(`/api/v1/Identities/IsDeleted?username=${username}`);
return await this.get<BackboneCheckIfIdentityIsDeletedResponse>(`/api/v2/Identities/IsDeleted?username=${username}`);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ export class IdentityDeletionProcessClient extends RESTClientAuthenticate {
protected override _logDirective = RESTClientLogDirective.LogResponse;

public async initiateIdentityDeletionProcess(value: BackbonePostIdentityDeletionProcessRequest): Promise<ClientResult<BackboneIdentityDeletionProcess>> {
return await this.post<BackboneIdentityDeletionProcess>("/api/v1/Identities/Self/DeletionProcesses", value);
return await this.post<BackboneIdentityDeletionProcess>("/api/v2/Identities/Self/DeletionProcesses", value);
}

public async getIdentityDeletionProcess(identityDeletionProcessId: string): Promise<ClientResult<BackboneIdentityDeletionProcess>> {
return await this.get<BackboneIdentityDeletionProcess>(`/api/v1/Identities/Self/DeletionProcesses/${identityDeletionProcessId}`);
return await this.get<BackboneIdentityDeletionProcess>(`/api/v2/Identities/Self/DeletionProcesses/${identityDeletionProcessId}`);
}

public async cancelIdentityDeletionProcess(identityDeletionProcessId: string): Promise<ClientResult<BackboneIdentityDeletionProcess>> {
return await this.put<BackboneIdentityDeletionProcess>(`/api/v1/Identities/Self/DeletionProcesses/${identityDeletionProcessId}/Cancel`, {});
return await this.put<BackboneIdentityDeletionProcess>(`/api/v2/Identities/Self/DeletionProcesses/${identityDeletionProcessId}/Cancel`, {});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ export interface IdentityDeletionProcessJSON {
status: IdentityDeletionProcessStatus;
createdAt?: string;
createdByDevice?: string;
approvedAt?: string;
approvedByDevice?: string;
gracePeriodEndsAt?: string;
cancelledAt?: string;
cancelledByDevice?: string;
Expand All @@ -21,8 +19,6 @@ export interface IIdentityDeletionProcess {
status: IdentityDeletionProcessStatus;
createdAt?: CoreDate;
createdByDevice?: CoreId;
approvedAt?: CoreDate;
approvedByDevice?: CoreId;
gracePeriodEndsAt?: CoreDate;
cancelledAt?: CoreDate;
cancelledByDevice?: CoreId;
Expand All @@ -38,8 +34,6 @@ export class IdentityDeletionProcess extends CoreSynchronizable implements IIden
];

public override readonly contentProperties = [
nameof<IdentityDeletionProcess>((r) => r.approvedAt),
nameof<IdentityDeletionProcess>((r) => r.approvedByDevice),
nameof<IdentityDeletionProcess>((r) => r.gracePeriodEndsAt),
nameof<IdentityDeletionProcess>((r) => r.cancelledAt),
nameof<IdentityDeletionProcess>((r) => r.cancelledByDevice)
Expand All @@ -57,14 +51,6 @@ export class IdentityDeletionProcess extends CoreSynchronizable implements IIden
@serialize()
public createdByDevice?: CoreId;

@validate({ nullable: true })
@serialize()
public approvedAt?: CoreDate;

@validate({ nullable: true })
@serialize()
public approvedByDevice?: CoreId;

@validate({ nullable: true })
@serialize()
public gracePeriodEndsAt?: CoreDate;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export enum IdentityDeletionProcessStatus {
Approved = "Approved",
Active = "Active",
Cancelled = "Cancelled"
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ import { BackboneGetAnnouncementsRequest, BackboneGetAnnouncementsResponse } fro

export class AnnouncementClient extends RESTClientAuthenticate {
public async getAnnouncements(request: BackboneGetAnnouncementsRequest): Promise<ClientResult<BackboneGetAnnouncementsResponse[]>> {
return await this.get<BackboneGetAnnouncementsResponse[]>("/api/v1/Announcements", request);
return await this.get<BackboneGetAnnouncementsResponse[]>("/api/v2/Announcements", request);
}
}
Loading