backend: Add webhook integration tests and update CI workflow for webhooks
This commit is contained in:
parent
09ba892d95
commit
9d4452dddf
52
.github/workflows/integration-test.yaml
vendored
52
.github/workflows/integration-test.yaml
vendored
@ -109,6 +109,58 @@ jobs:
|
|||||||
fail_on_failure: true
|
fail_on_failure: true
|
||||||
require_tests: true
|
require_tests: true
|
||||||
|
|
||||||
|
test-webhooks:
|
||||||
|
name: Webhook Tests
|
||||||
|
runs-on: ov-actions-runner
|
||||||
|
steps:
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '20'
|
||||||
|
- name: Setup yarn # Needed for the redlock package
|
||||||
|
run: npm install -g yarn
|
||||||
|
- name: Install wait-on
|
||||||
|
run: npm install -g wait-on
|
||||||
|
- name: Install LK CLI
|
||||||
|
run: curl -sSL https://get.livekit.io/cli | bash
|
||||||
|
- name: Checkout OpenVidu Local Deployment
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: OpenVidu/openvidu-local-deployment
|
||||||
|
ref: development
|
||||||
|
path: openvidu-local-deployment
|
||||||
|
- name: Configure Local Deployment
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd openvidu-local-deployment/community
|
||||||
|
./configure_lan_private_ip_linux.sh
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
- name: Wait for OpenVidu Local Deployment to Start
|
||||||
|
run: wait-on --timeout 60000 http://localhost:7880
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Setup OpenVidu Meet
|
||||||
|
run: |
|
||||||
|
./prepare.sh
|
||||||
|
cd backend
|
||||||
|
npm install
|
||||||
|
npm run start:prod &
|
||||||
|
- name: Wait for OpenVidu Meet to Start
|
||||||
|
run: wait-on --timeout 30000 http://localhost:6080/meet/health
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
cd backend
|
||||||
|
npm run test:integration-webhooks
|
||||||
|
env:
|
||||||
|
JEST_JUNIT_OUTPUT_DIR: './reports/'
|
||||||
|
- name: Publish Test Report
|
||||||
|
uses: mikepenz/action-junit-report@v4
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
report_paths: '**/reports/junit.xml'
|
||||||
|
fail_on_failure: true
|
||||||
|
require_tests: true
|
||||||
|
|
||||||
test-security:
|
test-security:
|
||||||
name: Security API Tests
|
name: Security API Tests
|
||||||
runs-on: ov-actions-runner
|
runs-on: ov-actions-runner
|
||||||
|
|||||||
@ -39,6 +39,7 @@
|
|||||||
"test:integration": "node --experimental-vm-modules node_modules/.bin/jest --runInBand --forceExit --testPathPattern \"tests/integration\" --ci --reporters=default --reporters=jest-junit",
|
"test:integration": "node --experimental-vm-modules node_modules/.bin/jest --runInBand --forceExit --testPathPattern \"tests/integration\" --ci --reporters=default --reporters=jest-junit",
|
||||||
"test:integration-rooms": "node --experimental-vm-modules node_modules/.bin/jest --runInBand --forceExit --testPathPattern \"tests/integration/api/rooms\" --ci --reporters=default --reporters=jest-junit",
|
"test:integration-rooms": "node --experimental-vm-modules node_modules/.bin/jest --runInBand --forceExit --testPathPattern \"tests/integration/api/rooms\" --ci --reporters=default --reporters=jest-junit",
|
||||||
"test:integration-recordings": "node --experimental-vm-modules node_modules/.bin/jest --runInBand --forceExit --testPathPattern \"tests/integration/api/recordings\" --ci --reporters=default --reporters=jest-junit",
|
"test:integration-recordings": "node --experimental-vm-modules node_modules/.bin/jest --runInBand --forceExit --testPathPattern \"tests/integration/api/recordings\" --ci --reporters=default --reporters=jest-junit",
|
||||||
|
"test:integration-webhooks": "node --experimental-vm-modules node_modules/.bin/jest --runInBand --forceExit --testPathPattern \"tests/integration/webhooks\" --ci --reporters=default --reporters=jest-junit",
|
||||||
"test:integration-security": "node --experimental-vm-modules node_modules/.bin/jest --runInBand --forceExit --testPathPattern \"tests/integration/api/security\" --ci --reporters=default --reporters=jest-junit",
|
"test:integration-security": "node --experimental-vm-modules node_modules/.bin/jest --runInBand --forceExit --testPathPattern \"tests/integration/api/security\" --ci --reporters=default --reporters=jest-junit",
|
||||||
"lint:fix": "eslint src --fix",
|
"lint:fix": "eslint src --fix",
|
||||||
"format:code": "prettier --ignore-path .gitignore --write '**/*.{ts,js,json,md}'"
|
"format:code": "prettier --ignore-path .gitignore --write '**/*.{ts,js,json,md}'"
|
||||||
|
|||||||
@ -1,24 +1,24 @@
|
|||||||
import { afterAll, beforeAll, beforeEach, describe, expect, it } from '@jest/globals';
|
import { afterAll, beforeAll, beforeEach, describe, expect, it } from '@jest/globals';
|
||||||
import { Request } from 'express';
|
import { Request } from 'express';
|
||||||
import http from 'http';
|
import http from 'http';
|
||||||
import { container } from '../../../../src/config/dependency-injector.config.js';
|
import { container } from '../../../src/config/dependency-injector.config.js';
|
||||||
import { MeetStorageService } from '../../../../src/services/index.js';
|
import { MeetStorageService } from '../../../src/services/index.js';
|
||||||
import {
|
import {
|
||||||
startTestServer,
|
startTestServer,
|
||||||
deleteAllRecordings,
|
deleteAllRecordings,
|
||||||
sleep,
|
sleep,
|
||||||
endMeeting,
|
endMeeting,
|
||||||
updateWebbhookPreferences
|
updateWebbhookPreferences
|
||||||
} from '../../../helpers/request-helpers';
|
} from '../../helpers/request-helpers.js';
|
||||||
import { MeetWebhookEvent, MeetWebhookEventType } from '../../../../src/typings/ce/webhook.model.js';
|
import { MeetWebhookEvent, MeetWebhookEventType } from '../../../src/typings/ce/webhook.model.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
setupSingleRoom,
|
setupSingleRoom,
|
||||||
setupSingleRoomWithRecording,
|
setupSingleRoomWithRecording,
|
||||||
startWebhookServer,
|
startWebhookServer,
|
||||||
stopWebhookServer
|
stopWebhookServer
|
||||||
} from '../../../helpers/test-scenarios.js';
|
} from '../../helpers/test-scenarios.js';
|
||||||
import { MeetRecordingInfo, MeetRecordingStatus } from '../../../../src/typings/ce/recording.model.js';
|
import { MeetRecordingInfo, MeetRecordingStatus } from '../../../src/typings/ce/recording.model.js';
|
||||||
|
|
||||||
describe('Webhook Integration Tests', () => {
|
describe('Webhook Integration Tests', () => {
|
||||||
let receivedWebhooks: { headers: http.IncomingHttpHeaders; body: MeetWebhookEvent }[] = [];
|
let receivedWebhooks: { headers: http.IncomingHttpHeaders; body: MeetWebhookEvent }[] = [];
|
||||||
Loading…
x
Reference in New Issue
Block a user