diff --git a/.changeset/six-pets-eat.md b/.changeset/six-pets-eat.md new file mode 100644 index 000000000..eae5247cc --- /dev/null +++ b/.changeset/six-pets-eat.md @@ -0,0 +1,5 @@ +--- +'@signalwire/core': patch +--- + +Accept 202 as valid response code diff --git a/internal/e2e-js/playwright.config.ts b/internal/e2e-js/playwright.config.ts index e2c0c7420..3d69b6308 100644 --- a/internal/e2e-js/playwright.config.ts +++ b/internal/e2e-js/playwright.config.ts @@ -7,7 +7,6 @@ const config: PlaywrightTestConfig = { globalSetup: require.resolve('./global-setup'), // testMatch: ['roomSessionStreamingAPI.spec.ts'], testIgnore: [ - 'roomSessionPromoteParticipant.spec.ts', // 'roomSessionStreaming.spec.ts', ], timeout: 120_000, diff --git a/internal/e2e-js/tests/roomSessionPromoteParticipant.spec.ts b/internal/e2e-js/tests/roomSessionPromoteParticipant.spec.ts index 5023caf0c..311851f86 100644 --- a/internal/e2e-js/tests/roomSessionPromoteParticipant.spec.ts +++ b/internal/e2e-js/tests/roomSessionPromoteParticipant.spec.ts @@ -7,8 +7,8 @@ import { SERVER_URL, } from '../utils' -test.describe('RoomSession promote method', () => { - test('should not be able to promote participant', async ({ context }) => { +test.describe('RoomSession promote myself', () => { + test('should get 202 on trying to promote a member', async ({ context }) => { const pageOne = await context.newPage() enablePageLogs(pageOne, '[pageOne]') @@ -47,21 +47,20 @@ test.describe('RoomSession promote method', () => { await pageOne.waitForTimeout(2000) // --------------- Promote participant from pageOne and resolve on error --------------- - const errorCode: any = await pageOne.evaluate(async () => { + const promoteResponse: any = await pageOne.evaluate(() => { // @ts-expect-error const roomObj: Video.RoomSession = window._roomObj - const error = await roomObj + return roomObj .promote({ memberId: roomObj.memberId, permissions: ['room.member.promote', 'room.member.demote'], }) - .catch((error) => error) - console.log('promote error', error.jsonrpc.code, error.jsonrpc.message) - return error.jsonrpc.code + .then(() => true) + .catch(() => false) }) - expect(errorCode).toBe('403') + expect(promoteResponse).toBe(true) // --------------- Leaving the rooms --------------- // @ts-expect-error diff --git a/packages/core/src/utils/parseRPCResponse.ts b/packages/core/src/utils/parseRPCResponse.ts index d9ac6bcf6..72439d40e 100644 --- a/packages/core/src/utils/parseRPCResponse.ts +++ b/packages/core/src/utils/parseRPCResponse.ts @@ -23,6 +23,8 @@ export const parseRPCResponse = ({ } } +const SUCCESS_CODES = ['200', '202'] + /** * From the socket we can get: * - JSON-RPC msg with 1 level of 'result' or 'error' @@ -40,7 +42,7 @@ const parseResponse = ( return { error } } const { code, node_id, result: nestedResult = null } = result - if (code && code !== '200') { + if (code && !SUCCESS_CODES.includes(code)) { return { error: result } } if (nestedResult === null) {