1// Copyright 2024 The Forgejo Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3import {flushPromises, mount} from '@vue/test-utils';
4import PullRequestMergeForm from './PullRequestMergeForm.vue';
5
6async function renderMergeForm(branchName) {
7 window.config.pageData.pullRequestMergeForm = {
8 textDeleteBranch: `Delete branch "${branchName}"`,
9 textDoMerge: 'Merge',
10 defaultMergeStyle: 'merge',
11 isPullBranchDeletable: true,
12 canMergeNow: true,
13 mergeStyles: [{
14 'name': 'merge',
15 'allowed': true,
16 'textDoMerge': 'Merge',
17 'mergeTitleFieldText': 'Merge PR',
18 'mergeMessageFieldText': 'Description',
19 'hideAutoMerge': 'Hide this message',
20 }],
21 };
22 const mergeform = mount(PullRequestMergeForm);
23 mergeform.get('.merge-button').trigger('click');
24 await flushPromises();
25 return mergeform;
26}
27
28test('renders escaped branch name', async () => {
29 let mergeform = await renderMergeForm('<b>evil</b>');
30 expect(mergeform.get('label[for="delete-branch-after-merge"]').text()).toBe('Delete branch "<b>evil</b>"');
31
32 mergeform = await renderMergeForm('<script class="evil">alert("evil message");</script>');
33 expect(mergeform.get('label[for="delete-branch-after-merge"]').text()).toBe('Delete branch "<script class="evil">alert("evil message");</script>"');
34});