1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/*!
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
describe('files_external settings', () => {
before(() => {
cy.runOccCommand('app:enable files_external')
cy.login({ language: 'en', password: 'admin', userId: 'admin' })
})
beforeEach(() => {
cy.runOccCommand('files_external:list --output json')
.then((exec) => {
const list = JSON.parse(exec.stdout)
for (const entry of list) {
cy.runOccCommand('files_external:delete ' + entry)
}
})
cy.visit('/settings/admin/externalstorages')
})
it('can see the settings section', () => {
cy.findByRole('heading', { name: 'External storage' })
.should('be.visible')
cy.get('table#externalStorage')
.should('be.visible')
})
it('populates the row and creates a new empty one', () => {
selectBackend('local')
// See cell now contains the backend
getTable()
.findAllByRole('row')
.first()
.find('.backend')
.should('contain.text', 'Local')
// and the backend select is available but clear
getBackendSelect()
.should('have.value', null)
// the suggested mount point name is set to the backend
getTable()
.findAllByRole('row')
.first()
.find('input[name="mountPoint"]')
.should('have.value', 'Local')
})
it('does not save the storage with missing configuration', function() {
selectBackend('local')
getTable()
.findAllByRole('row').first()
.should('be.visible')
.within(() => {
cy.findByRole('checkbox', { name: 'All people' })
.check()
cy.get('button[title="Save"]')
.click()
})
cy.findByRole('dialog', { name: 'Confirm your password' })
.should('not.exist')
})
it('does not save the storage with applicable configuration', function() {
selectBackend('local')
getTable()
.findAllByRole('row').first()
.should('be.visible')
.within(() => {
cy.get('input[placeholder="Location"]')
.type('/tmp')
cy.get('button[title="Save"]')
.click()
})
cy.findByRole('dialog', { name: 'Confirm your password' })
.should('not.exist')
})
it('does save the storage with needed configuration', function() {
selectBackend('local')
getTable()
.findAllByRole('row').first()
.should('be.visible')
.within(() => {
cy.findByRole('checkbox', { name: 'All people' })
.check()
cy.get('input[placeholder="Location"]')
.type('/tmp')
cy.get('button[title="Save"]')
.click()
})
cy.findByRole('dialog', { name: 'Confirm your password' })
.should('be.visible')
})
})
/**
* Get the external storages table
*/
function getTable() {
return cy.get('table#externalStorage')
.find('tbody')
}
/**
* Get the backend select element
*/
function getBackendSelect() {
return getTable()
.findAllByRole('row')
.last()
.findByRole('combobox')
}
/**
* @param backend - Backend to select
*/
function selectBackend(backend: string): void {
getBackendSelect()
.select(backend)
}
|