|
|
@@ -3,12 +3,24 @@ import { RtmManagerAdapter } from '../../src/managers/rtm-manager-adapter'
|
|
|
import { SttError } from '../../src/core/stt-error'
|
|
|
import AgoraRTM from 'agora-rtm'
|
|
|
|
|
|
+// 模拟全局fetch
|
|
|
+global.fetch = vi.fn()
|
|
|
+
|
|
|
+// 模拟fetch响应
|
|
|
+const mockFetchResponse = (data: any) => {
|
|
|
+ return {
|
|
|
+ ok: true,
|
|
|
+ json: async () => ({ data }),
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
describe('RtmManagerAdapter', () => {
|
|
|
let manager: RtmManagerAdapter
|
|
|
const mockAppId = 'test-app-id'
|
|
|
+ const mockCertificate = 'test-certificate'
|
|
|
|
|
|
beforeEach(() => {
|
|
|
- manager = new RtmManagerAdapter(mockAppId)
|
|
|
+ manager = new RtmManagerAdapter(mockAppId, mockCertificate)
|
|
|
})
|
|
|
|
|
|
afterEach(async () => {
|
|
|
@@ -25,6 +37,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
userName: 'Test User',
|
|
|
}
|
|
|
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join(config)
|
|
|
|
|
|
expect(manager.isJoined).toBe(true)
|
|
|
@@ -37,8 +52,8 @@ describe('RtmManagerAdapter', () => {
|
|
|
userName: 'Test User',
|
|
|
})
|
|
|
|
|
|
- // 验证 RTM 客户端被正确创建
|
|
|
- expect(AgoraRTM.RTM).toHaveBeenCalledWith(mockAppId, 'test-user', {})
|
|
|
+ // 验证 RTM 客户端被正确创建(包含token)
|
|
|
+ expect(AgoraRTM.RTM).toHaveBeenCalledWith(mockAppId, 'test-user', { token: 'test-token' })
|
|
|
})
|
|
|
|
|
|
it('should throw error when config is invalid', async () => {
|
|
|
@@ -61,6 +76,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
userName: 'Test User',
|
|
|
}
|
|
|
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join(config)
|
|
|
|
|
|
await expect(manager.join(config)).rejects.toThrow(SttError)
|
|
|
@@ -93,6 +111,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
userName: 'Test User',
|
|
|
}
|
|
|
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join(config)
|
|
|
|
|
|
expect(connectedHandler).toHaveBeenCalledTimes(1)
|
|
|
@@ -109,6 +130,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
userName: 'Test User',
|
|
|
}
|
|
|
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join(config)
|
|
|
|
|
|
// 获取创建的 RTM 客户端实例
|
|
|
@@ -122,6 +146,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
|
|
|
describe('updateSttData', () => {
|
|
|
beforeEach(async () => {
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join({
|
|
|
channel: 'test-channel',
|
|
|
userId: 'test-user',
|
|
|
@@ -194,6 +221,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
|
|
|
describe('updateLanguages', () => {
|
|
|
beforeEach(async () => {
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join({
|
|
|
channel: 'test-channel',
|
|
|
userId: 'test-user',
|
|
|
@@ -265,6 +295,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
|
|
|
describe('acquireLock', () => {
|
|
|
beforeEach(async () => {
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join({
|
|
|
channel: 'test-channel',
|
|
|
userId: 'test-user',
|
|
|
@@ -305,6 +338,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
|
|
|
describe('releaseLock', () => {
|
|
|
beforeEach(async () => {
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join({
|
|
|
channel: 'test-channel',
|
|
|
userId: 'test-user',
|
|
|
@@ -348,6 +384,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
// 重置模拟调用次数
|
|
|
vi.clearAllMocks()
|
|
|
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join({
|
|
|
channel: 'test-channel',
|
|
|
userId: 'test-user',
|
|
|
@@ -378,6 +417,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
})
|
|
|
|
|
|
it('should remove all event listeners', async () => {
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join({
|
|
|
channel: 'test-channel',
|
|
|
userId: 'test-user',
|
|
|
@@ -397,6 +439,9 @@ describe('RtmManagerAdapter', () => {
|
|
|
|
|
|
describe('event handling', () => {
|
|
|
beforeEach(async () => {
|
|
|
+ // 模拟fetch返回token
|
|
|
+ vi.mocked(fetch).mockResolvedValue(mockFetchResponse({ token: 'test-token' }) as any)
|
|
|
+
|
|
|
await manager.join({
|
|
|
channel: 'test-channel',
|
|
|
userId: 'test-user',
|