mirror of
https://github.com/bitwarden/browser
synced 2026-02-25 00:53:22 +00:00
[PM-26901] Add notification handler for auto confirm (#18886)
* add notification handler for auto confirm * add missing state check * fix test * isolate angular specific code from shared lib code * clean up * use autoconfirm method * fix test
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import { NotificationType } from "../../enums";
|
||||
|
||||
import { AutoConfirmMemberNotification, NotificationResponse } from "./notification.response";
|
||||
|
||||
describe("NotificationResponse", () => {
|
||||
describe("AutoConfirmMemberNotification", () => {
|
||||
it("should parse AutoConfirmMemberNotification payload", () => {
|
||||
const response = {
|
||||
ContextId: "context-123",
|
||||
Type: NotificationType.AutoConfirmMember,
|
||||
Payload: {
|
||||
TargetUserId: "target-user-id",
|
||||
UserId: "user-id",
|
||||
OrganizationId: "org-id",
|
||||
},
|
||||
};
|
||||
|
||||
const notification = new NotificationResponse(response);
|
||||
|
||||
expect(notification.type).toBe(NotificationType.AutoConfirmMember);
|
||||
expect(notification.payload).toBeInstanceOf(AutoConfirmMemberNotification);
|
||||
expect(notification.payload.targetUserId).toBe("target-user-id");
|
||||
expect(notification.payload.userId).toBe("user-id");
|
||||
expect(notification.payload.organizationId).toBe("org-id");
|
||||
});
|
||||
|
||||
it("should handle stringified JSON payload", () => {
|
||||
const response = {
|
||||
ContextId: "context-123",
|
||||
Type: NotificationType.AutoConfirmMember,
|
||||
Payload: JSON.stringify({
|
||||
TargetUserId: "target-user-id-2",
|
||||
UserId: "user-id-2",
|
||||
OrganizationId: "org-id-2",
|
||||
}),
|
||||
};
|
||||
|
||||
const notification = new NotificationResponse(response);
|
||||
|
||||
expect(notification.type).toBe(NotificationType.AutoConfirmMember);
|
||||
expect(notification.payload).toBeInstanceOf(AutoConfirmMemberNotification);
|
||||
expect(notification.payload.targetUserId).toBe("target-user-id-2");
|
||||
expect(notification.payload.userId).toBe("user-id-2");
|
||||
expect(notification.payload.organizationId).toBe("org-id-2");
|
||||
});
|
||||
});
|
||||
|
||||
describe("AutoConfirmMemberNotification constructor", () => {
|
||||
it("should extract all properties from response", () => {
|
||||
const response = {
|
||||
TargetUserId: "target-user-id",
|
||||
UserId: "user-id",
|
||||
OrganizationId: "org-id",
|
||||
};
|
||||
|
||||
const notification = new AutoConfirmMemberNotification(response);
|
||||
|
||||
expect(notification.targetUserId).toBe("target-user-id");
|
||||
expect(notification.userId).toBe("user-id");
|
||||
expect(notification.organizationId).toBe("org-id");
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -75,6 +75,9 @@ export class NotificationResponse extends BaseResponse {
|
||||
case NotificationType.SyncPolicy:
|
||||
this.payload = new SyncPolicyNotification(payload);
|
||||
break;
|
||||
case NotificationType.AutoConfirmMember:
|
||||
this.payload = new AutoConfirmMemberNotification(payload);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -210,3 +213,16 @@ export class LogOutNotification extends BaseResponse {
|
||||
this.reason = this.getResponseProperty("Reason");
|
||||
}
|
||||
}
|
||||
|
||||
export class AutoConfirmMemberNotification extends BaseResponse {
|
||||
userId: string;
|
||||
targetUserId: string;
|
||||
organizationId: string;
|
||||
|
||||
constructor(response: any) {
|
||||
super(response);
|
||||
this.targetUserId = this.getResponseProperty("TargetUserId");
|
||||
this.userId = this.getResponseProperty("UserId");
|
||||
this.organizationId = this.getResponseProperty("OrganizationId");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user