Skip to content

Commit

Permalink
feat(lib): remove 'pubnub' prefix
Browse files Browse the repository at this point in the history
  • Loading branch information
piotr-suwala committed Mar 7, 2024
1 parent 105c8ce commit 6e73aa3
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { GrantTokenPermissions } from "pubnub"
import type { Chat } from "./entities/chat"

export class PubnubAccessManager {
export class AccessManager {
chat: Chat

constructor(chat: Chat) {
Expand Down
8 changes: 4 additions & 4 deletions lib/src/entities/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import { getErrorProxiedEntity, ErrorLogger } from "../error-logging"
import { cyrb53a } from "../hash"
import { uuidv4 } from "../uuidv4"
import { defaultEditActionName, defaultDeleteActionName } from "../default-values"
import { PubnubAccessManager } from "../pubnub-access-manager"
import { AccessManager } from "../access-manager"

export type ChatConfig = {
saveDebugLog: boolean
Expand Down Expand Up @@ -72,7 +72,7 @@ export class Chat {
/** @internal */
readonly deleteMessageActionName: string
/** @internal */
readonly pubnubAccessManager: PubnubAccessManager
readonly accessManager: AccessManager

/** @internal */
private constructor(params: ChatConstructor) {
Expand Down Expand Up @@ -143,7 +143,7 @@ export class Chat {
authKey: pubnubConfig.authKey,
} as ChatConfig

this.pubnubAccessManager = new PubnubAccessManager(this)
this.accessManager = new AccessManager(this)
}

static async init(params: ChatConstructor) {
Expand Down Expand Up @@ -192,7 +192,7 @@ export class Chat {

/* @internal */
signal(params: { channel: string; message: any }) {
const canISendSignal = this.pubnubAccessManager.canI({
const canISendSignal = this.accessManager.canI({
permission: "write",
resourceName: params.channel,
resourceType: "channels",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ describe("Pubnub Access Manager", () => {
const channelAPermissions = parseTokenReturnValue.resources.channels["channel-a"]
for (const key of Object.keys(channelAPermissions)) {
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "channel-a",
resourceType: "channels",
permission: key,
Expand All @@ -105,7 +105,7 @@ describe("Pubnub Access Manager", () => {
const channelBPermissions = parseTokenReturnValue.resources.channels["channel-b"]
for (const key of Object.keys(channelBPermissions)) {
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "channel-b",
resourceType: "channels",
permission: key,
Expand All @@ -115,7 +115,7 @@ describe("Pubnub Access Manager", () => {
const someUuidPermissions = parseTokenReturnValue.resources.uuids["some_uuid"]
for (const key of Object.keys(someUuidPermissions)) {
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "some_uuid",
resourceType: "uuids",
permission: key,
Expand All @@ -125,7 +125,7 @@ describe("Pubnub Access Manager", () => {
const randomUuidPermissions = parseTokenReturnValue.resources.uuids["random_uuid"]
for (const key of Object.keys(randomUuidPermissions)) {
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "random_uuid",
resourceType: "uuids",
permission: key,
Expand All @@ -134,14 +134,14 @@ describe("Pubnub Access Manager", () => {
}

expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "channel-c",
resourceType: "channels",
permission: "write",
})
).toBe(false)
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "channel-v",
resourceType: "channels",
permission: "join",
Expand All @@ -166,7 +166,7 @@ describe("Pubnub Access Manager", () => {
parseTokenReturnValue.patterns.channels["^(?:group-room-){1}(?:.*)$"]
for (const key of Object.keys(groupRoomsPermissions)) {
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "group-room-hello",
resourceType: "channels",
permission: key,
Expand All @@ -177,7 +177,7 @@ describe("Pubnub Access Manager", () => {
parseTokenReturnValue.patterns.channels["^(?:public-room-){1}(?:.*)$"]
for (const key of Object.keys(publicRoomsPermissions)) {
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "public-room-pubnub",
resourceType: "channels",
permission: key,
Expand All @@ -188,15 +188,15 @@ describe("Pubnub Access Manager", () => {
parseTokenReturnValue.patterns.channels["^(?:unknown-room-){1}(?:.*)$"]
for (const key of Object.keys(unknownRoomsPermissions)) {
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "unknown-room-pubnub",
resourceType: "channels",
permission: key,
})
).toBe(unknownRoomsPermissions[key])
}
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "some_jibberish",
resourceType: "channels",
permission: "manage",
Expand All @@ -218,14 +218,14 @@ describe("Pubnub Access Manager", () => {
})

expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "some-channel",
resourceType: "channels",
permission: "join",
})
).toBe(false)
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "some-kind-of-uuid",
resourceType: "uuids",
permission: "update",
Expand All @@ -239,18 +239,80 @@ describe("Pubnub Access Manager", () => {
chat = await createChatInstance({ shouldCreateNewInstance: true })

expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "some-channel",
resourceType: "channels",
permission: "join",
})
).toBe(true)
expect(
chat.pubnubAccessManager.canI({
chat.accessManager.canI({
resourceName: "some-kind-of-uuid",
resourceType: "uuids",
permission: "update",
})
).toBe(true)
})

test("should work if only 'resources' are provided", async () => {
chat = await createChatInstance({
config: {
authKey: "hello",
},
})

const parseTokenSpy = jest.spyOn(chat.sdk, "parseToken").mockImplementation(() => {
return {
resources: parseTokenReturnValue.resources,
}
})

expect(
chat.accessManager.canI({
resourceName: "some-channel",
resourceType: "channels",
permission: "join",
})
).toBe(false)
expect(
chat.accessManager.canI({
resourceName: "channel-b",
resourceType: "channels",
permission: "get",
})
).toBe(true)

parseTokenSpy.mockRestore()
})

test("should work if only 'patterns' are provided", async () => {
chat = await createChatInstance({
config: {
authKey: "hello",
},
})

const parseTokenSpy = jest.spyOn(chat.sdk, "parseToken").mockImplementation(() => {
return {
patterns: parseTokenReturnValue.patterns,
}
})

expect(
chat.accessManager.canI({
resourceName: "public-room-hello",
resourceType: "channels",
permission: "update",
})
).toBe(false)
expect(
chat.accessManager.canI({
resourceName: "pattern-not-found-room",
resourceType: "channels",
permission: "get",
})
).toBe(false)

parseTokenSpy.mockRestore()
})
})

0 comments on commit 6e73aa3

Please sign in to comment.