feat: 强化打包配置与服务安全
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
import { describe, expect, it, vi } from 'vitest'
|
||||
import { flushPromises, mount } from '@vue/test-utils'
|
||||
import { createMemoryHistory, createRouter } from 'vue-router'
|
||||
import BuildView from '../views/BuildView.vue'
|
||||
|
||||
const createTestRouter = () => createRouter({
|
||||
history: createMemoryHistory(),
|
||||
routes: [{ path: '/build', component: BuildView }],
|
||||
})
|
||||
|
||||
const mountBuildView = async () => {
|
||||
const router = createTestRouter()
|
||||
await router.push('/build')
|
||||
await router.isReady()
|
||||
|
||||
global.fetch = vi.fn((url) => {
|
||||
const responses = {
|
||||
'/api/apps': {
|
||||
'1': { name: '测试阅读', server: '测试环境' },
|
||||
'2': { name: '正式阅读', server: '正式环境' },
|
||||
'3': { name: '测试词典', server: '测试环境' },
|
||||
},
|
||||
'/api/schemes': { '1': { name: 'readoor31' } },
|
||||
'/api/branches': ['main'],
|
||||
'/api/tasks': [],
|
||||
}
|
||||
return Promise.resolve({ ok: true, json: () => Promise.resolve(responses[url] || {}) })
|
||||
})
|
||||
|
||||
const wrapper = mount(BuildView, {
|
||||
global: {
|
||||
plugins: [router],
|
||||
provide: { getToken: () => '' },
|
||||
},
|
||||
})
|
||||
await flushPromises()
|
||||
return wrapper
|
||||
}
|
||||
|
||||
describe('BuildView server environment filter', () => {
|
||||
it('filters Apps by the selected server environment', async () => {
|
||||
const wrapper = await mountBuildView()
|
||||
const selects = wrapper.findAll('select')
|
||||
const serverSelect = selects[0]
|
||||
const appSelect = selects[1]
|
||||
|
||||
expect(appSelect.attributes('disabled')).toBeDefined()
|
||||
await serverSelect.setValue('测试环境')
|
||||
|
||||
expect(appSelect.text()).toContain('测试阅读')
|
||||
expect(appSelect.text()).toContain('测试词典')
|
||||
expect(appSelect.text()).not.toContain('正式阅读')
|
||||
})
|
||||
|
||||
it('clears the selected App when switching environments', async () => {
|
||||
const wrapper = await mountBuildView()
|
||||
const selects = wrapper.findAll('select')
|
||||
const serverSelect = selects[0]
|
||||
const appSelect = selects[1]
|
||||
|
||||
await serverSelect.setValue('测试环境')
|
||||
await appSelect.setValue('1')
|
||||
expect(wrapper.vm.form.app_id).toBe('1')
|
||||
|
||||
await serverSelect.setValue('正式环境')
|
||||
expect(wrapper.vm.form.app_id).toBe('')
|
||||
expect(appSelect.text()).toContain('正式阅读')
|
||||
expect(appSelect.text()).not.toContain('测试阅读')
|
||||
})
|
||||
|
||||
it('only offers configured build types and special App Schemes', async () => {
|
||||
const wrapper = await mountBuildView()
|
||||
await wrapper.setData({
|
||||
apps: {
|
||||
'1': {
|
||||
name: '英汉大词典',
|
||||
server: '测试环境',
|
||||
certificates: { App_Store: { name: 'com.dictionary.app' } },
|
||||
allowed_scheme_names: ['readoorDict'],
|
||||
},
|
||||
},
|
||||
schemes: {
|
||||
'1': { name: 'readoor31' },
|
||||
'2': { name: 'readoorDict' },
|
||||
},
|
||||
})
|
||||
const selects = wrapper.findAll('select')
|
||||
await selects[0].setValue('测试环境')
|
||||
await selects[1].setValue('1')
|
||||
|
||||
expect(selects[2].text()).toContain('App_Store')
|
||||
expect(selects[2].text()).not.toContain('Ad_Hoc')
|
||||
expect(selects[3].text()).toContain('readoorDict')
|
||||
expect(selects[3].text()).not.toContain('readoor31')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user