XuqmGroup-RNSDK/packages/xwebview/tests/permissionPolicy.test.ts
XuqmGroup 507ce3d2ee feat(update): release-set 事务制品与原生层职责拆分
- 插件包改为 .xuqm.zip 事务制品,manifest/bundle/资源/SHA-256 统一校验
- 原生层拆分为桥接编排、插件包暂存、底层存储三个单一职责类
- 状态查询改为纯读取,不再误触发安装;新增 NATIVE_BASELINE_INCOMPATIBLE 拒绝
- SemVer 解析拆分为独立原生类并补原生测试
- XWebView 收口唯一内核,错误态统一中文层与重试
- common 增加请求头/运行时契约收口与 http 测试
2026-07-20 19:31:43 +08:00

26 行
1.1 KiB
TypeScript

import assert from 'node:assert/strict'
import test from 'node:test'
import { allowedWebPermissionResources, webPermissionKind } from '../src/permissionPolicy'
test('WebView camera and microphone resource names use one canonical mapping', () => {
assert.equal(webPermissionKind('android.webkit.resource.VIDEO_CAPTURE'), 'camera')
assert.equal(webPermissionKind('android.webkit.resource.AUDIO_CAPTURE'), 'microphone')
assert.equal(webPermissionKind('camera'), 'camera')
assert.equal(webPermissionKind('microphone'), 'microphone')
assert.equal(webPermissionKind('protected-media-id'), null)
})
test('only system-authorized camera or microphone resources are granted', () => {
const resources = [
'android.webkit.resource.VIDEO_CAPTURE',
'android.webkit.resource.AUDIO_CAPTURE',
'protected-media-id',
]
assert.deepEqual(allowedWebPermissionResources(resources, new Set(['camera'])), [resources[0]])
assert.deepEqual(allowedWebPermissionResources(resources, new Set(['microphone'])), [
resources[1],
])
assert.deepEqual(allowedWebPermissionResources([resources[2]], new Set()), [])
})