@api-client/ui 0.5.38 → 0.5.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/src/md/list/internals/ListItem.d.ts +24 -15
- package/build/src/md/list/internals/ListItem.d.ts.map +1 -1
- package/build/src/md/list/internals/ListItem.js +85 -59
- package/build/src/md/list/internals/ListItem.js.map +1 -1
- package/build/src/md/list/internals/ListItem.styles.js +11 -11
- package/build/src/md/list/internals/ListItem.styles.js.map +1 -1
- package/build/src/md/select/internals/Option.d.ts +4 -14
- package/build/src/md/select/internals/Option.d.ts.map +1 -1
- package/build/src/md/select/internals/Option.js +13 -28
- package/build/src/md/select/internals/Option.js.map +1 -1
- package/build/src/md/select/internals/Select.d.ts +1 -1
- package/build/src/md/select/internals/Select.d.ts.map +1 -1
- package/build/src/md/select/internals/Select.js +15 -5
- package/build/src/md/select/internals/Select.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
- package/src/md/list/internals/ListItem.styles.ts +11 -11
- package/src/md/list/internals/ListItem.ts +68 -43
- package/src/md/select/internals/Option.ts +14 -26
- package/src/md/select/internals/Select.ts +15 -5
- package/.aiexclude +0 -3
- package/.cursor/rules/html-and-css-best-practices.mdc +0 -63
- package/.cursor/rules/lit-best-practices.mdc +0 -89
- package/.editorconfig +0 -29
- package/.github/CONTRIBUTING.md +0 -24
- package/.github/instructions/html-and-css-best-practices.instructions.md +0 -70
- package/.github/instructions/lit-best-practices.instructions.md +0 -90
- package/.github/release.yml +0 -14
- package/.github/stale.yml +0 -23
- package/.github/workflows/auto-release.yml +0 -182
- package/.github/workflows/release.yml +0 -82
- package/.prettierrc.js +0 -14
- package/.vscode/settings.json +0 -18
- package/RELEASE.md +0 -163
- package/RELEASE_SETUP.md +0 -235
- package/build/src/demo/DemoPage.d.ts +0 -81
- package/build/src/demo/DemoPage.d.ts.map +0 -1
- package/build/src/demo/DemoPage.js +0 -175
- package/build/src/demo/DemoPage.js.map +0 -1
- package/build/src/demo/DemoStyles.d.ts +0 -3
- package/build/src/demo/DemoStyles.d.ts.map +0 -1
- package/build/src/demo/DemoStyles.js +0 -60
- package/build/src/demo/DemoStyles.js.map +0 -1
- package/build/test/elements/navigation/Navigation.test.d.ts +0 -3
- package/build/test/elements/navigation/Navigation.test.d.ts.map +0 -1
- package/build/test/elements/navigation/Navigation.test.js +0 -113
- package/build/test/elements/navigation/Navigation.test.js.map +0 -1
- package/commitlint.config.cjs +0 -2
- package/demo/elements/authorization/AuthPlugin.js +0 -57
- package/demo/elements/authorization/AuthProxy.js +0 -215
- package/demo/elements/authorization/api-key.html +0 -27
- package/demo/elements/authorization/api-key.ts +0 -44
- package/demo/elements/authorization/basic.html +0 -27
- package/demo/elements/authorization/basic.ts +0 -43
- package/demo/elements/authorization/bearer.html +0 -27
- package/demo/elements/authorization/bearer.ts +0 -43
- package/demo/elements/authorization/env.js +0 -8
- package/demo/elements/authorization/index.html +0 -44
- package/demo/elements/authorization/ntlm.html +0 -27
- package/demo/elements/authorization/ntlm.ts +0 -43
- package/demo/elements/authorization/oauth-authorize.html +0 -75
- package/demo/elements/authorization/oauth-authorize.ts +0 -40
- package/demo/elements/authorization/oauth-error.html +0 -18
- package/demo/elements/authorization/oauth-error.ts +0 -10
- package/demo/elements/authorization/oauth-popup.html +0 -36
- package/demo/elements/authorization/oauth2.html +0 -27
- package/demo/elements/authorization/oauth2.ts +0 -100
- package/demo/elements/authorization/oidc.html +0 -27
- package/demo/elements/authorization/oidc.ts +0 -139
- package/demo/elements/authorization/private.crt +0 -31
- package/demo/elements/authorization/private.csr +0 -28
- package/demo/elements/authorization/private.key +0 -51
- package/demo/elements/authorization/private.pem +0 -31
- package/demo/elements/authorization/redirect.html +0 -20
- package/demo/elements/authorization/ssl-commands.sh +0 -30
- package/demo/elements/authorization/ssl.conf +0 -24
- package/demo/elements/autocomplete/index.html +0 -64
- package/demo/elements/autocomplete/index.ts +0 -171
- package/demo/elements/code-editor/CodeEditorDemo.ts +0 -173
- package/demo/elements/code-editor/index.html +0 -19
- package/demo/elements/context-menu/DemoIcons.ts +0 -21
- package/demo/elements/context-menu/basic.html +0 -25
- package/demo/elements/context-menu/basic.ts +0 -119
- package/demo/elements/context-menu/custom-data.html +0 -25
- package/demo/elements/context-menu/custom-data.ts +0 -62
- package/demo/elements/context-menu/demo.css +0 -28
- package/demo/elements/context-menu/enabled-state.html +0 -25
- package/demo/elements/context-menu/enabled-state.ts +0 -73
- package/demo/elements/context-menu/icons.html +0 -25
- package/demo/elements/context-menu/icons.ts +0 -64
- package/demo/elements/context-menu/index.html +0 -43
- package/demo/elements/context-menu/nested.html +0 -25
- package/demo/elements/context-menu/nestedt.ts +0 -152
- package/demo/elements/context-menu/no-execute.html +0 -25
- package/demo/elements/context-menu/no-execute.ts +0 -134
- package/demo/elements/context-menu/radio-menu.html +0 -25
- package/demo/elements/context-menu/radio-menu.ts +0 -83
- package/demo/elements/context-menu/separators.html +0 -25
- package/demo/elements/context-menu/separators.ts +0 -172
- package/demo/elements/currency/index.html +0 -91
- package/demo/elements/currency/index.ts +0 -352
- package/demo/elements/environment/environment-editor.html +0 -20
- package/demo/elements/environment/environment-editor.ts +0 -49
- package/demo/elements/environment/index.html +0 -33
- package/demo/elements/environment/server-editor.html +0 -20
- package/demo/elements/environment/server-editor.ts +0 -67
- package/demo/elements/environment/variables-editor.html +0 -20
- package/demo/elements/environment/variables-editor.ts +0 -94
- package/demo/elements/har/har-viewer.html +0 -20
- package/demo/elements/har/har-viewer.ts +0 -76
- package/demo/elements/har/har1.har +0 -3044
- package/demo/elements/har/har2.json +0 -439
- package/demo/elements/har/index.html +0 -26
- package/demo/elements/highlight/example.md +0 -27
- package/demo/elements/highlight/index.html +0 -31
- package/demo/elements/highlight/marked-highlight.html +0 -132
- package/demo/elements/highlight/marked-highlight.ts +0 -22
- package/demo/elements/highlight/prism-highlight.html +0 -62
- package/demo/elements/highlight/prism-highlight.ts +0 -17
- package/demo/elements/http/body-editor.html +0 -17
- package/demo/elements/http/body-editor.ts +0 -115
- package/demo/elements/http/headers.html +0 -17
- package/demo/elements/http/headers.ts +0 -59
- package/demo/elements/http/http-assertions.html +0 -20
- package/demo/elements/http/http-assertions.ts +0 -89
- package/demo/elements/http/http-flows.html +0 -23
- package/demo/elements/http/http-flows.ts +0 -89
- package/demo/elements/http/index.html +0 -45
- package/demo/elements/http/request-editor.html +0 -26
- package/demo/elements/http/request-editor.ts +0 -197
- package/demo/elements/http/request-log.html +0 -16
- package/demo/elements/http/request-log.ts +0 -136
- package/demo/elements/http/url-editing.html +0 -17
- package/demo/elements/http/url-editing.ts +0 -112
- package/demo/elements/icons/index.html +0 -81
- package/demo/elements/icons/index.ts +0 -52
- package/demo/elements/index.html +0 -72
- package/demo/elements/mention-textarea/index.html +0 -19
- package/demo/elements/mention-textarea/index.ts +0 -205
- package/demo/elements/navigation/navigation-item.html +0 -49
- package/demo/elements/navigation/navigation-item.ts +0 -131
- package/demo/elements/navigation/navigation.html +0 -20
- package/demo/elements/navigation/navigation.ts +0 -45
- package/demo/elements/project/index.html +0 -29
- package/demo/elements/project/project-run-report.html +0 -20
- package/demo/elements/project/project-run-report.ts +0 -132
- package/demo/elements/project/request-editor.html +0 -23
- package/demo/elements/project/request-editor.ts +0 -232
- package/demo/elements/user/user-avatar.html +0 -17
- package/demo/elements/user/user-avatar.ts +0 -60
- package/demo/env.js +0 -4
- package/demo/index.html +0 -34
- package/demo/layout/index.html +0 -94
- package/demo/layout/index.ts +0 -190
- package/demo/md/DemoStyles.ts +0 -61
- package/demo/md/UiDemoPage.ts +0 -6
- package/demo/md/buttons/button.html +0 -121
- package/demo/md/buttons/button.ts +0 -246
- package/demo/md/buttons/group.html +0 -36
- package/demo/md/buttons/group.ts +0 -171
- package/demo/md/checkbox/index.html +0 -39
- package/demo/md/checkbox/index.ts +0 -220
- package/demo/md/chip/chip.html +0 -70
- package/demo/md/chip/chip.ts +0 -219
- package/demo/md/chip/pawel6c9a.jpg +0 -0
- package/demo/md/collapse/CustomDetail.ts +0 -89
- package/demo/md/collapse/collapse.html +0 -21
- package/demo/md/collapse/collapse.ts +0 -78
- package/demo/md/date-picker/date-picker.ts +0 -336
- package/demo/md/date-picker/index.html +0 -171
- package/demo/md/dialog/confirm-dialog.html +0 -49
- package/demo/md/dialog/confirm-dialog.ts +0 -121
- package/demo/md/dialog/dialog.html +0 -25
- package/demo/md/dialog/dialog.ts +0 -468
- package/demo/md/dropdown-list/index.html +0 -31
- package/demo/md/dropdown-list/index.ts +0 -158
- package/demo/md/icon-button/index.html +0 -122
- package/demo/md/icon-button/index.ts +0 -132
- package/demo/md/index.html +0 -73
- package/demo/md/inputs/input.html +0 -73
- package/demo/md/inputs/input.ts +0 -278
- package/demo/md/inputs/radio.html +0 -39
- package/demo/md/inputs/radio.ts +0 -156
- package/demo/md/inputs/switch.html +0 -45
- package/demo/md/inputs/switch.ts +0 -144
- package/demo/md/list/list.html +0 -65
- package/demo/md/list/list.ts +0 -204
- package/demo/md/listbox/listbox.html +0 -31
- package/demo/md/listbox/listbox.ts +0 -27
- package/demo/md/menu/index.html +0 -19
- package/demo/md/menu/index.ts +0 -514
- package/demo/md/notification/snack.html +0 -21
- package/demo/md/notification/snack.ts +0 -70
- package/demo/md/progress/progress.html +0 -46
- package/demo/md/progress/progress.ts +0 -161
- package/demo/md/segmented-button/index.html +0 -21
- package/demo/md/segmented-button/index.ts +0 -55
- package/demo/md/select/index.html +0 -16
- package/demo/md/select/index.ts +0 -207
- package/demo/md/tabs/tabs.html +0 -40
- package/demo/md/tabs/tabs.ts +0 -214
- package/demo/oauth-popup.html +0 -36
- package/demo/page.css +0 -8
- package/demo/resources/calendar-month.png +0 -0
- package/demo/resources/favorite.png +0 -0
- package/demo/resources/fingerprint.png +0 -0
- package/demo/resources/home-work.png +0 -0
- package/demo/resources/mood.png +0 -0
- package/demo/resources/print.png +0 -0
- package/demo/resources/stars.png +0 -0
- package/demo/resources/theaters.png +0 -0
- package/demo/tsconfig.json +0 -4
- package/eslint.config.js +0 -97
- package/scripts/copy-assets.js +0 -21
- package/scripts/release.js +0 -66
- package/src/demo/DemoPage.ts +0 -169
- package/src/demo/DemoStyles.ts +0 -60
- package/test/README.md +0 -375
- package/test/contextual-menu/ContextMenu.test.ts +0 -760
- package/test/contextual-menu/ContextMenuElement.test.ts +0 -569
- package/test/core/activity.spec.ts +0 -413
- package/test/core/activity_manager.spec.ts +0 -544
- package/test/core/application.spec.ts +0 -218
- package/test/core/fragment.spec.ts +0 -565
- package/test/core/fragment_manager.spec.ts +0 -404
- package/test/core/live_data.spec.ts +0 -558
- package/test/core/renderer.spec.ts +0 -113
- package/test/dom-assertions.test.ts +0 -182
- package/test/elements/MonacoSetup.ts +0 -65
- package/test/elements/authorization/basic-method.test.ts +0 -177
- package/test/elements/authorization/bearer-method.test.ts +0 -143
- package/test/elements/authorization/ntlm-method.test.ts +0 -219
- package/test/elements/authorization/oauth2-client-credentials-method.test.ts +0 -334
- package/test/elements/authorization/oauth2-code-method.test.ts +0 -320
- package/test/elements/authorization/oauth2-custom-grant-method.test.ts +0 -255
- package/test/elements/authorization/oauth2-device-code-method.test.ts +0 -371
- package/test/elements/authorization/oauth2-implicit-method.test.ts +0 -407
- package/test/elements/authorization/oauth2-jwt-method.test.ts +0 -217
- package/test/elements/authorization/oauth2-password-method.test.ts +0 -275
- package/test/elements/authorization/openid-method.test.ts +0 -591
- package/test/elements/autocomplete/autocomplete-input.spec.ts +0 -646
- package/test/elements/code-editor/code-editor.accessibility.test.ts +0 -298
- package/test/elements/code-editor/code-editor.test.ts +0 -574
- package/test/elements/currency/CurrencyPicker.accessibility.test.ts +0 -328
- package/test/elements/currency/CurrencyPicker.core.test.ts +0 -318
- package/test/elements/currency/CurrencyPicker.integration.test.ts +0 -482
- package/test/elements/currency/CurrencyPicker.test.ts +0 -486
- package/test/elements/data-table/DataTable.browser.test.ts +0 -649
- package/test/elements/har/HarUtils.test.ts +0 -45
- package/test/elements/har/HarViewerElement.test.ts +0 -687
- package/test/elements/har/test-data/har1.har +0 -3044
- package/test/elements/highlight/MarkedHighlightElement.test.ts +0 -452
- package/test/elements/highlight/PrismHighlightElement.test.ts +0 -79
- package/test/elements/highlight/PrismHighlighter.test.ts +0 -94
- package/test/elements/highlight/remoteSanitization.md +0 -1
- package/test/elements/highlight/test.md +0 -3
- package/test/elements/highlight/test1.md +0 -3
- package/test/elements/highlight/test2.md +0 -1
- package/test/elements/http/BodyFormdataEditorElement.test.ts +0 -482
- package/test/elements/http/BodyMultipartEditorElement.test.ts +0 -658
- package/test/elements/http/BodyRawEditorElement.test.ts +0 -90
- package/test/elements/http/CertificateAdd.test.ts +0 -457
- package/test/elements/http/HttpAssertions.test.ts +0 -994
- package/test/elements/http/HttpFlows.test.ts +0 -502
- package/test/elements/http/UrlEncodeUtils.test.ts +0 -202
- package/test/elements/layout/SplitItem.test.ts +0 -440
- package/test/elements/layout/SplitLayoutManager.test.ts +0 -1501
- package/test/elements/layout/SplitPanel.test.ts +0 -1109
- package/test/elements/mention-textarea/MentionTextArea.basic.test.ts +0 -114
- package/test/elements/mention-textarea/MentionTextArea.test.ts +0 -613
- package/test/elements/navigation/Navigation.test.ts +0 -120
- package/test/env.ts +0 -15
- package/test/events/EventTypes.test.ts +0 -363
- package/test/events/EventsTestHelpers.ts +0 -16
- package/test/helpers/TestUtils.ts +0 -243
- package/test/helpers/UiMock.ts +0 -185
- package/test/lib/Dom.test.ts +0 -231
- package/test/md/button/UiButton.test.ts +0 -347
- package/test/md/button/UiIconButton.test.ts +0 -155
- package/test/md/chip/UiChip.test.ts +0 -219
- package/test/md/collapse/UiCollapse.test.ts +0 -250
- package/test/md/collapse/flex-layout.test.ts +0 -105
- package/test/md/date-time/DateTime.test.ts +0 -348
- package/test/md/dialog/UiConfirmDialog.test.ts +0 -131
- package/test/md/dialog/UiDialog.test.ts +0 -759
- package/test/md/menu/Menu.test.ts +0 -855
- package/test/md/menu/MenuIntegration.test.ts +0 -426
- package/test/md/menu/MenuItem.test.ts +0 -652
- package/test/md/menu/SubMenu.test.ts +0 -410
- package/test/md/progress/UiCircularProgressElement.test.ts +0 -481
- package/test/md/progress/UiProgressElement.test.ts +0 -117
- package/test/md/progress/UiRangeElement.test.ts +0 -156
- package/test/md/select/Select.test.ts +0 -925
- package/test/plugins/takeScreenshotPlugin.js +0 -35
- package/test/setup.test.ts +0 -217
- package/test/setup.ts +0 -117
- package/test/tsconfig.json +0 -7
- package/web-dev-server.config.js +0 -21
- package/web-test-runner.config.js +0 -90
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { assert, fixture } from '@open-wc/testing'
|
|
2
|
-
import { loadMonaco } from '../MonacoSetup.js'
|
|
3
|
-
import BodyTextEditor from '../../../src/elements/http/BodyTextEditor.js'
|
|
4
|
-
import '../../../src/define/http/http-body-text-editor.js'
|
|
5
|
-
|
|
6
|
-
/* global monaco */
|
|
7
|
-
|
|
8
|
-
describe('elements', () => {
|
|
9
|
-
describe('http', () => {
|
|
10
|
-
describe('BodyTextEditor()', () => {
|
|
11
|
-
async function basicFixture(): Promise<BodyTextEditor> {
|
|
12
|
-
return fixture(`<http-body-text-editor></http-body-text-editor>`)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
before(async () => loadMonaco())
|
|
16
|
-
|
|
17
|
-
describe('constructor()', () => {
|
|
18
|
-
let element: BodyTextEditor
|
|
19
|
-
beforeEach(async () => {
|
|
20
|
-
element = await basicFixture()
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
it('sets the default readOnly', () => {
|
|
24
|
-
assert.isFalse(element.readOnly)
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
it('sets the default value', () => {
|
|
28
|
-
assert.equal(element.value, '')
|
|
29
|
-
})
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
describe('#editor', () => {
|
|
33
|
-
let element: BodyTextEditor
|
|
34
|
-
beforeEach(async () => {
|
|
35
|
-
element = await basicFixture()
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
it('has the editor instance set', () => {
|
|
39
|
-
assert.typeOf(element.editor, 'object')
|
|
40
|
-
})
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
describe('#readOnly', () => {
|
|
44
|
-
let element: BodyTextEditor
|
|
45
|
-
beforeEach(async () => {
|
|
46
|
-
element = await basicFixture()
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
it('sets the editor readOnly', () => {
|
|
50
|
-
element.readOnly = true
|
|
51
|
-
// @ts-expect-error for testing
|
|
52
|
-
const value = element.editor.getOption(monaco.editor.EditorOptions.readOnly.id)
|
|
53
|
-
assert.isTrue(value)
|
|
54
|
-
})
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
describe('#contentType', () => {
|
|
58
|
-
let element: BodyTextEditor
|
|
59
|
-
beforeEach(async () => {
|
|
60
|
-
element = await basicFixture()
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
it('sets the [languageValue]', () => {
|
|
64
|
-
element.contentType = 'application/json'
|
|
65
|
-
assert.equal(element.language, 'json')
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
it('sets the editor model', () => {
|
|
69
|
-
element.contentType = 'application/json'
|
|
70
|
-
const model = element.editor!.getModel()!
|
|
71
|
-
assert.equal(model.getLanguageId(), 'json')
|
|
72
|
-
})
|
|
73
|
-
;[
|
|
74
|
-
['application/json', 'json'],
|
|
75
|
-
['application/x-json', 'json'],
|
|
76
|
-
['application/svg+xml', 'xml'],
|
|
77
|
-
['application/xml', 'xml'],
|
|
78
|
-
['text/html', 'html'],
|
|
79
|
-
['text/css', 'css'],
|
|
80
|
-
].forEach(([mime, lang]) => {
|
|
81
|
-
it(`sets the editor language for ${mime}`, () => {
|
|
82
|
-
element.contentType = mime
|
|
83
|
-
const model = element.editor!.getModel()!
|
|
84
|
-
assert.equal(model.getLanguageId(), lang)
|
|
85
|
-
})
|
|
86
|
-
})
|
|
87
|
-
})
|
|
88
|
-
})
|
|
89
|
-
})
|
|
90
|
-
})
|
|
@@ -1,457 +0,0 @@
|
|
|
1
|
-
import { assert, aTimeout, fixture, html } from '@open-wc/testing'
|
|
2
|
-
import sinon from 'sinon'
|
|
3
|
-
import type CertificateAdd from '../../../src/elements/http/CertificateAdd.element.js'
|
|
4
|
-
import type Input from '../../../src/md/input/Input.js'
|
|
5
|
-
import { UiMock } from '../../helpers/UiMock.js'
|
|
6
|
-
import { EventTypes } from '../../../src/events/EventTypes.js'
|
|
7
|
-
import type {
|
|
8
|
-
FileReadOptions,
|
|
9
|
-
IOpenFileDialogInit,
|
|
10
|
-
IOpenFileDialogResult,
|
|
11
|
-
} from '../../../src/bindings/base/FileBindings.js'
|
|
12
|
-
import '../../../src/define/http/certificate-add.js'
|
|
13
|
-
import { SnackNotifications } from '../../../src/md/notification/SnackNotifications.js'
|
|
14
|
-
|
|
15
|
-
describe.skip('elements', () => {
|
|
16
|
-
describe('http', () => {
|
|
17
|
-
describe('CertificateAdd', () => {
|
|
18
|
-
async function basicFixture(): Promise<CertificateAdd> {
|
|
19
|
-
return fixture(html`<certificate-add></certificate-add>`)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async function pfxFixture(): Promise<CertificateAdd> {
|
|
23
|
-
return fixture(html`<certificate-add importType="p12"></certificate-add>`)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
describe('PEM', () => {
|
|
27
|
-
let element: CertificateAdd
|
|
28
|
-
|
|
29
|
-
beforeEach(async () => {
|
|
30
|
-
element = await basicFixture()
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
it('renders the certificate name input', async () => {
|
|
34
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="name"]')! as Input
|
|
35
|
-
assert.ok(input, 'has the input')
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
it('renders the certificate file filed', async () => {
|
|
39
|
-
const input = element.shadowRoot!.querySelector('.cert-file[data-kind="certificate"]')! as HTMLElement
|
|
40
|
-
assert.ok(input, 'has the input')
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
it('renders the key file filed', async () => {
|
|
44
|
-
const input = element.shadowRoot!.querySelector('.cert-file[data-kind="key"]')! as HTMLElement
|
|
45
|
-
assert.ok(input, 'has the input')
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
it('renders the key password filed', async () => {
|
|
49
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="keyPassword"]') as Input
|
|
50
|
-
assert.ok(input, 'has the input')
|
|
51
|
-
})
|
|
52
|
-
|
|
53
|
-
it('does not render the certificate password filed', async () => {
|
|
54
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="certificatePassword"]')
|
|
55
|
-
assert.notOk(input, 'has no input')
|
|
56
|
-
})
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
describe('PFX/PKCS12', () => {
|
|
60
|
-
let element: CertificateAdd
|
|
61
|
-
|
|
62
|
-
beforeEach(async () => {
|
|
63
|
-
element = await pfxFixture()
|
|
64
|
-
})
|
|
65
|
-
|
|
66
|
-
it('renders the certificate name input', async () => {
|
|
67
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="name"]')! as Input
|
|
68
|
-
assert.ok(input, 'has the input')
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
it('renders the certificate file filed', async () => {
|
|
72
|
-
const input = element.shadowRoot!.querySelector('.cert-file[data-kind="certificate"]')! as HTMLElement
|
|
73
|
-
assert.ok(input, 'has the input')
|
|
74
|
-
})
|
|
75
|
-
|
|
76
|
-
it('does not render the key file filed', async () => {
|
|
77
|
-
const input = element.shadowRoot!.querySelector('.cert-file[data-kind="key"]')
|
|
78
|
-
assert.notOk(input, 'has no input')
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
it('does not render the key password filed', async () => {
|
|
82
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="keyPassword"]')
|
|
83
|
-
assert.notOk(input, 'has no input')
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
it('renders the certificate password input', async () => {
|
|
87
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="certificatePassword"]')! as Input
|
|
88
|
-
assert.ok(input, 'has the input')
|
|
89
|
-
})
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
describe('File drag and drop', () => {
|
|
93
|
-
let element: CertificateAdd
|
|
94
|
-
let certTarget: HTMLElement
|
|
95
|
-
let keyTarget: HTMLElement
|
|
96
|
-
|
|
97
|
-
beforeEach(async () => {
|
|
98
|
-
element = await basicFixture()
|
|
99
|
-
certTarget = element.shadowRoot!.querySelector('.cert-file[data-kind="certificate"]') as HTMLElement
|
|
100
|
-
keyTarget = element.shadowRoot!.querySelector('.cert-file[data-kind="key"]') as HTMLElement
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
it('handles the drag enter event on the certificate input', async () => {
|
|
104
|
-
const e = UiMock.getFileDragEvent('dragenter')
|
|
105
|
-
certTarget.dispatchEvent(e)
|
|
106
|
-
assert.isTrue(e.defaultPrevented, 'the event is prevented')
|
|
107
|
-
assert.isTrue(certTarget.classList.contains('dragover'), 'adds the dragover class')
|
|
108
|
-
})
|
|
109
|
-
|
|
110
|
-
it('handles the drag enter event on the key input', async () => {
|
|
111
|
-
const e = UiMock.getFileDragEvent('dragenter')
|
|
112
|
-
keyTarget.dispatchEvent(e)
|
|
113
|
-
assert.isTrue(e.defaultPrevented, 'the event is prevented')
|
|
114
|
-
assert.isTrue(keyTarget.classList.contains('dragover'), 'adds the dragover class')
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
it('handles the drag leave event on the certificate input', async () => {
|
|
118
|
-
certTarget.classList.add('dragover')
|
|
119
|
-
const e = UiMock.getFileDragEvent('dragleave')
|
|
120
|
-
certTarget.dispatchEvent(e)
|
|
121
|
-
assert.isTrue(e.defaultPrevented, 'the event is prevented')
|
|
122
|
-
assert.isFalse(certTarget.classList.contains('dragover'), 'adds the dragover class')
|
|
123
|
-
})
|
|
124
|
-
|
|
125
|
-
it('handles the drag leave event on the key input', async () => {
|
|
126
|
-
keyTarget.classList.add('dragover')
|
|
127
|
-
const e = UiMock.getFileDragEvent('dragleave')
|
|
128
|
-
keyTarget.dispatchEvent(e)
|
|
129
|
-
assert.isTrue(e.defaultPrevented, 'the event is prevented')
|
|
130
|
-
assert.isFalse(keyTarget.classList.contains('dragover'), 'adds the dragover class')
|
|
131
|
-
})
|
|
132
|
-
|
|
133
|
-
it('handles the drag over event on the certificate input', async () => {
|
|
134
|
-
const e = UiMock.getFileDragEvent('dragover')
|
|
135
|
-
certTarget.dispatchEvent(e)
|
|
136
|
-
assert.isTrue(e.defaultPrevented, 'the event is prevented')
|
|
137
|
-
assert.isTrue(certTarget.classList.contains('dragover'), 'adds the dragover class')
|
|
138
|
-
})
|
|
139
|
-
|
|
140
|
-
it('handles the drag over event on the key input', async () => {
|
|
141
|
-
const e = UiMock.getFileDragEvent('dragover')
|
|
142
|
-
keyTarget.dispatchEvent(e)
|
|
143
|
-
assert.isTrue(e.defaultPrevented, 'the event is prevented')
|
|
144
|
-
assert.isTrue(keyTarget.classList.contains('dragover'), 'adds the dragover class')
|
|
145
|
-
})
|
|
146
|
-
|
|
147
|
-
it('handles the drop event on the certificate input', async () => {
|
|
148
|
-
certTarget.classList.add('dragover')
|
|
149
|
-
const spy = sinon.spy(element, 'processDroppedFile')
|
|
150
|
-
const file = new File(['test'], 'test.txt', { type: 'text/plain' })
|
|
151
|
-
const e = UiMock.getFileDragEvent('drop', { file })
|
|
152
|
-
certTarget.dispatchEvent(e)
|
|
153
|
-
assert.isTrue(e.defaultPrevented, 'the event is prevented')
|
|
154
|
-
assert.isFalse(certTarget.classList.contains('dragover'), 'adds the dragover class')
|
|
155
|
-
assert.isTrue(spy.called, 'calls the processDroppedFile method')
|
|
156
|
-
assert.equal(spy.args[0][0], file, 'passes the file argument')
|
|
157
|
-
assert.equal(spy.args[0][1], 'certificate', 'passes the kind argument')
|
|
158
|
-
})
|
|
159
|
-
|
|
160
|
-
it('handles the drop event on the key input', async () => {
|
|
161
|
-
keyTarget.classList.add('dragover')
|
|
162
|
-
const spy = sinon.spy(element, 'processDroppedFile')
|
|
163
|
-
const file = new File(['test'], 'test.txt', { type: 'text/plain' })
|
|
164
|
-
const e = UiMock.getFileDragEvent('drop', { file })
|
|
165
|
-
keyTarget.dispatchEvent(e)
|
|
166
|
-
assert.isTrue(e.defaultPrevented, 'the event is prevented')
|
|
167
|
-
assert.isFalse(keyTarget.classList.contains('dragover'), 'adds the dragover class')
|
|
168
|
-
assert.isTrue(spy.called, 'calls the processDroppedFile method')
|
|
169
|
-
assert.equal(spy.args[0][0], file, 'passes the file argument')
|
|
170
|
-
assert.equal(spy.args[0][1], 'key', 'passes the kind argument')
|
|
171
|
-
})
|
|
172
|
-
})
|
|
173
|
-
|
|
174
|
-
describe('Manual file selecting for PEM', () => {
|
|
175
|
-
let element: CertificateAdd
|
|
176
|
-
let certTarget: HTMLElement
|
|
177
|
-
let keyTarget: HTMLElement
|
|
178
|
-
|
|
179
|
-
beforeEach(async () => {
|
|
180
|
-
element = await basicFixture()
|
|
181
|
-
certTarget = element.shadowRoot!.querySelector(
|
|
182
|
-
'.cert-file[data-kind="certificate"] .select-button'
|
|
183
|
-
) as HTMLElement
|
|
184
|
-
keyTarget = element.shadowRoot!.querySelector('.cert-file[data-kind="key"] .select-button') as HTMLElement
|
|
185
|
-
})
|
|
186
|
-
|
|
187
|
-
it('dispatches the Filesystem.requestOpenFile for the certificate', async () => {
|
|
188
|
-
let openOptions: IOpenFileDialogInit | undefined
|
|
189
|
-
let readOptions: FileReadOptions | undefined
|
|
190
|
-
let eventPath: string | undefined
|
|
191
|
-
|
|
192
|
-
element.addEventListener(EventTypes.Filesystem.requestOpenFile, (e: Event): void => {
|
|
193
|
-
const event = e as CustomEvent<{ options: IOpenFileDialogInit; result: Promise<IOpenFileDialogResult> }>
|
|
194
|
-
openOptions = event.detail.options
|
|
195
|
-
event.detail.result = Promise.resolve({
|
|
196
|
-
canceled: false,
|
|
197
|
-
filePath: ['test/file.pem'],
|
|
198
|
-
})
|
|
199
|
-
})
|
|
200
|
-
|
|
201
|
-
element.addEventListener(EventTypes.Filesystem.readFile, (e: Event): void => {
|
|
202
|
-
const event = e as CustomEvent<{
|
|
203
|
-
path: string
|
|
204
|
-
options: FileReadOptions
|
|
205
|
-
result: Promise<string | ArrayBuffer | Buffer>
|
|
206
|
-
}>
|
|
207
|
-
readOptions = event.detail.options
|
|
208
|
-
eventPath = event.detail.path
|
|
209
|
-
event.detail.result = Promise.resolve(new ArrayBuffer(100))
|
|
210
|
-
})
|
|
211
|
-
|
|
212
|
-
certTarget.click()
|
|
213
|
-
// Promises are resolved in the save event loop at the end as microtasks so `1` timeout should be enough
|
|
214
|
-
// as this will be executed with the next event loop.
|
|
215
|
-
await aTimeout(1)
|
|
216
|
-
|
|
217
|
-
assert.typeOf(openOptions, 'object', 'has the file open request options')
|
|
218
|
-
assert.isFalse(openOptions!.multiple, 'the (open request) options.multiple is false')
|
|
219
|
-
assert.equal(openOptions!.title, 'Select a certificate file', 'has the (open request) options.title')
|
|
220
|
-
assert.lengthOf(openOptions!.filters!, 1, 'has the (open request) options.filters')
|
|
221
|
-
const [openFilter] = openOptions!.filters!
|
|
222
|
-
assert.equal(openFilter.description, 'Certificate files', 'open filter has the description')
|
|
223
|
-
assert.deepEqual(
|
|
224
|
-
openFilter.accept,
|
|
225
|
-
{ 'application/x-pem-file': ['.pem', '.crt', '.cer', '.key'] },
|
|
226
|
-
'filter has the accept'
|
|
227
|
-
)
|
|
228
|
-
|
|
229
|
-
assert.typeOf(readOptions, 'object', 'has the file read request options')
|
|
230
|
-
assert.equal(readOptions!.returnType, 'buffer', 'read file return type is set')
|
|
231
|
-
assert.isTrue(readOptions!.dispose, 'read file dispose is set')
|
|
232
|
-
|
|
233
|
-
assert.equal(eventPath, 'test/file.pem', 'read event has the correct path')
|
|
234
|
-
})
|
|
235
|
-
|
|
236
|
-
it('dispatches the Filesystem.requestOpenFile for the key', async () => {
|
|
237
|
-
let openOptions: IOpenFileDialogInit | undefined
|
|
238
|
-
let readOptions: FileReadOptions | undefined
|
|
239
|
-
let eventPath: string | undefined
|
|
240
|
-
|
|
241
|
-
element.addEventListener(EventTypes.Filesystem.requestOpenFile, (e: Event): void => {
|
|
242
|
-
const event = e as CustomEvent<{ options: IOpenFileDialogInit; result: Promise<IOpenFileDialogResult> }>
|
|
243
|
-
openOptions = event.detail.options
|
|
244
|
-
event.detail.result = Promise.resolve({
|
|
245
|
-
canceled: false,
|
|
246
|
-
filePath: ['test/file.pem'],
|
|
247
|
-
})
|
|
248
|
-
})
|
|
249
|
-
|
|
250
|
-
element.addEventListener(EventTypes.Filesystem.readFile, (e: Event): void => {
|
|
251
|
-
const event = e as CustomEvent<{
|
|
252
|
-
path: string
|
|
253
|
-
options: FileReadOptions
|
|
254
|
-
result: Promise<string | ArrayBuffer | Buffer>
|
|
255
|
-
}>
|
|
256
|
-
readOptions = event.detail.options
|
|
257
|
-
eventPath = event.detail.path
|
|
258
|
-
event.detail.result = Promise.resolve(new ArrayBuffer(100))
|
|
259
|
-
})
|
|
260
|
-
|
|
261
|
-
keyTarget.click()
|
|
262
|
-
// Promises are resolved in the save event loop at the end as microtasks so `1` timeout should be enough
|
|
263
|
-
// as this will be executed with the next event loop.
|
|
264
|
-
await aTimeout(1)
|
|
265
|
-
|
|
266
|
-
assert.typeOf(openOptions, 'object', 'has the file open request options')
|
|
267
|
-
assert.isFalse(openOptions!.multiple, 'the (open request) options.multiple is false')
|
|
268
|
-
assert.equal(openOptions!.title, 'Select a key file', 'has the (open request) options.title')
|
|
269
|
-
assert.lengthOf(openOptions!.filters!, 1, 'has the (open request) options.filters')
|
|
270
|
-
const [openFilter] = openOptions!.filters!
|
|
271
|
-
assert.equal(openFilter.description, 'Certificate key files', 'open filter has the description')
|
|
272
|
-
assert.deepEqual(
|
|
273
|
-
openFilter.accept,
|
|
274
|
-
{ 'application/x-pem-file': ['.pem', '.crt', '.cer', '.key'] },
|
|
275
|
-
'filter has the accept'
|
|
276
|
-
)
|
|
277
|
-
|
|
278
|
-
assert.typeOf(readOptions, 'object', 'has the file read request options')
|
|
279
|
-
assert.equal(readOptions!.returnType, 'buffer', 'read file return type is set')
|
|
280
|
-
assert.isTrue(readOptions!.dispose, 'read file dispose is set')
|
|
281
|
-
|
|
282
|
-
assert.equal(eventPath, 'test/file.pem', 'read event has the correct path')
|
|
283
|
-
})
|
|
284
|
-
})
|
|
285
|
-
|
|
286
|
-
describe('Manual file selecting for PFX/PKCS12', () => {
|
|
287
|
-
let element: CertificateAdd
|
|
288
|
-
let certTarget: HTMLElement
|
|
289
|
-
|
|
290
|
-
beforeEach(async () => {
|
|
291
|
-
element = await pfxFixture()
|
|
292
|
-
certTarget = element.shadowRoot!.querySelector(
|
|
293
|
-
'.cert-file[data-kind="certificate"] .select-button'
|
|
294
|
-
) as HTMLElement
|
|
295
|
-
})
|
|
296
|
-
|
|
297
|
-
it('dispatches the Filesystem.requestOpenFile for the certificate', async () => {
|
|
298
|
-
let openOptions: IOpenFileDialogInit | undefined
|
|
299
|
-
let readOptions: FileReadOptions | undefined
|
|
300
|
-
let eventPath: string | undefined
|
|
301
|
-
|
|
302
|
-
element.addEventListener(EventTypes.Filesystem.requestOpenFile, (e: Event): void => {
|
|
303
|
-
const event = e as CustomEvent<{ options: IOpenFileDialogInit; result: Promise<IOpenFileDialogResult> }>
|
|
304
|
-
openOptions = event.detail.options
|
|
305
|
-
event.detail.result = Promise.resolve({
|
|
306
|
-
canceled: false,
|
|
307
|
-
filePath: ['test/file.pem'],
|
|
308
|
-
})
|
|
309
|
-
})
|
|
310
|
-
|
|
311
|
-
element.addEventListener(EventTypes.Filesystem.readFile, (e: Event): void => {
|
|
312
|
-
const event = e as CustomEvent<{
|
|
313
|
-
path: string
|
|
314
|
-
options: FileReadOptions
|
|
315
|
-
result: Promise<string | ArrayBuffer | Buffer>
|
|
316
|
-
}>
|
|
317
|
-
readOptions = event.detail.options
|
|
318
|
-
eventPath = event.detail.path
|
|
319
|
-
event.detail.result = Promise.resolve(new ArrayBuffer(100))
|
|
320
|
-
})
|
|
321
|
-
|
|
322
|
-
certTarget.click()
|
|
323
|
-
// Promises are resolved in the save event loop at the end as microtasks so `1` timeout should be enough
|
|
324
|
-
// as this will be executed with the next event loop.
|
|
325
|
-
await aTimeout(1)
|
|
326
|
-
|
|
327
|
-
assert.typeOf(openOptions, 'object', 'has the file open request options')
|
|
328
|
-
assert.isFalse(openOptions!.multiple, 'the (open request) options.multiple is false')
|
|
329
|
-
assert.equal(openOptions!.title, 'Select a certificate file', 'has the (open request) options.title')
|
|
330
|
-
assert.lengthOf(openOptions!.filters!, 1, 'has the (open request) options.filters')
|
|
331
|
-
const [openFilter] = openOptions!.filters!
|
|
332
|
-
assert.equal(openFilter.description, 'Certificate files', 'open filter has the description')
|
|
333
|
-
assert.deepEqual(openFilter.accept, { 'application/x-pkcs12': ['.p12', '.pfx'] }, 'filter has the accept')
|
|
334
|
-
|
|
335
|
-
assert.typeOf(readOptions, 'object', 'has the file read request options')
|
|
336
|
-
assert.equal(readOptions!.returnType, 'buffer', 'read file return type is set')
|
|
337
|
-
assert.isTrue(readOptions!.dispose, 'read file dispose is set')
|
|
338
|
-
|
|
339
|
-
assert.equal(eventPath, 'test/file.pem', 'read event has the correct path')
|
|
340
|
-
})
|
|
341
|
-
})
|
|
342
|
-
|
|
343
|
-
describe('processDroppedFile()', () => {
|
|
344
|
-
let element: CertificateAdd
|
|
345
|
-
|
|
346
|
-
beforeEach(async () => {
|
|
347
|
-
element = await basicFixture()
|
|
348
|
-
})
|
|
349
|
-
|
|
350
|
-
it('sets the certificate file info', async () => {
|
|
351
|
-
const file = new File(['test'], 'test.txt', { type: 'text/plain' })
|
|
352
|
-
await element.processDroppedFile(file, 'certificate')
|
|
353
|
-
const info = element.certificateFile!
|
|
354
|
-
assert.equal(info.fileName, 'test.txt', 'sets the file name')
|
|
355
|
-
assert.ok(info.contents, 'sets the file contents')
|
|
356
|
-
})
|
|
357
|
-
|
|
358
|
-
it('sets the key file info', async () => {
|
|
359
|
-
const file = new File(['test'], 'test.txt', { type: 'text/plain' })
|
|
360
|
-
await element.processDroppedFile(file, 'key')
|
|
361
|
-
const info = element.keyFile!
|
|
362
|
-
assert.equal(info.fileName, 'test.txt', 'sets the file name')
|
|
363
|
-
assert.ok(info.contents, 'sets the file contents')
|
|
364
|
-
})
|
|
365
|
-
})
|
|
366
|
-
|
|
367
|
-
describe('submit() on PEM', () => {
|
|
368
|
-
let element: CertificateAdd
|
|
369
|
-
|
|
370
|
-
beforeEach(async () => {
|
|
371
|
-
element = await basicFixture()
|
|
372
|
-
})
|
|
373
|
-
|
|
374
|
-
afterEach(() => {
|
|
375
|
-
SnackNotifications.clear()
|
|
376
|
-
})
|
|
377
|
-
|
|
378
|
-
it('reports validity when missing certificate name', async () => {
|
|
379
|
-
const cert = new File(['test'], 'cert.pem', { type: 'text/plain' })
|
|
380
|
-
const key = new File(['test'], 'key.key', { type: 'text/plain' })
|
|
381
|
-
await element.processDroppedFile(cert, 'certificate')
|
|
382
|
-
await element.processDroppedFile(key, 'key')
|
|
383
|
-
const spy = sinon.spy()
|
|
384
|
-
element.addEventListener(EventTypes.Store.File.create, spy)
|
|
385
|
-
await element.submit()
|
|
386
|
-
assert.isFalse(spy.called, 'does not dispatch store event')
|
|
387
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="name"]')! as Input
|
|
388
|
-
assert.isTrue(input.invalid, 'the input is invalid')
|
|
389
|
-
})
|
|
390
|
-
|
|
391
|
-
it('informs when the certificate is missing', async () => {
|
|
392
|
-
const key = new File(['test'], 'key.key', { type: 'text/plain' })
|
|
393
|
-
await element.processDroppedFile(key, 'key')
|
|
394
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="name"]')! as Input
|
|
395
|
-
input.value = 'test'
|
|
396
|
-
input.notifyChange()
|
|
397
|
-
await input.updateComplete
|
|
398
|
-
|
|
399
|
-
const spy = sinon.spy()
|
|
400
|
-
element.addEventListener(EventTypes.Store.File.create, spy)
|
|
401
|
-
await element.submit()
|
|
402
|
-
assert.isFalse(spy.called, 'does not dispatch store event')
|
|
403
|
-
})
|
|
404
|
-
|
|
405
|
-
it('informs when the key is missing', async () => {
|
|
406
|
-
const cert = new File(['test'], 'key.key', { type: 'text/plain' })
|
|
407
|
-
await element.processDroppedFile(cert, 'certificate')
|
|
408
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="name"]')! as Input
|
|
409
|
-
input.value = 'test'
|
|
410
|
-
input.notifyChange()
|
|
411
|
-
await input.updateComplete
|
|
412
|
-
|
|
413
|
-
const spy = sinon.spy()
|
|
414
|
-
element.addEventListener(EventTypes.Store.File.create, spy)
|
|
415
|
-
await element.submit()
|
|
416
|
-
assert.isFalse(spy.called, 'does not dispatch store event')
|
|
417
|
-
})
|
|
418
|
-
|
|
419
|
-
it('throws when no space', async () => {
|
|
420
|
-
const cert = new File(['test'], 'cert.pem', { type: 'text/plain' })
|
|
421
|
-
const key = new File(['test'], 'key.key', { type: 'text/plain' })
|
|
422
|
-
await element.processDroppedFile(cert, 'certificate')
|
|
423
|
-
await element.processDroppedFile(key, 'key')
|
|
424
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="name"]')! as Input
|
|
425
|
-
input.value = 'test'
|
|
426
|
-
input.notifyChange()
|
|
427
|
-
await input.updateComplete
|
|
428
|
-
|
|
429
|
-
let error: Error | undefined
|
|
430
|
-
try {
|
|
431
|
-
await element.submit()
|
|
432
|
-
} catch (e) {
|
|
433
|
-
error = e as Error
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
assert.ok(error)
|
|
437
|
-
})
|
|
438
|
-
|
|
439
|
-
it('dispatches the store event', async () => {
|
|
440
|
-
element.space = 'abc'
|
|
441
|
-
const cert = new File(['test'], 'cert.pem', { type: 'text/plain' })
|
|
442
|
-
const key = new File(['test'], 'key.key', { type: 'text/plain' })
|
|
443
|
-
await element.processDroppedFile(cert, 'certificate')
|
|
444
|
-
await element.processDroppedFile(key, 'key')
|
|
445
|
-
const input = element.shadowRoot!.querySelector('ui-filled-text-field[name="name"]')! as Input
|
|
446
|
-
input.value = 'test'
|
|
447
|
-
input.notifyChange()
|
|
448
|
-
await input.updateComplete
|
|
449
|
-
const spy = sinon.spy()
|
|
450
|
-
element.addEventListener(EventTypes.Store.File.create, spy)
|
|
451
|
-
await element.submit()
|
|
452
|
-
assert.isTrue(spy.calledOnce)
|
|
453
|
-
})
|
|
454
|
-
})
|
|
455
|
-
})
|
|
456
|
-
})
|
|
457
|
-
})
|