aboutsummaryrefslogtreecommitdiffstats
path: root/cypress/e2e/files_external/StorageUtils.ts
blob: 0f7fec65edfb77f0579e4b6756fa99c03e06f469 (plain)
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
/**
 * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */

import type { User } from "@nextcloud/cypress"

export type StorageConfig = {
	[key: string]: string
}

export enum StorageBackend {
	DAV = 'dav',
	SMB = 'smb',
	SFTP = 'sftp',
}

export enum AuthBackend {
	GlobalAuth = 'password::global',
	LoginCredentials = 'password::logincredentials',
	Password = 'password::password',
	SessionCredentials = 'password::sessioncredentials',
	UserGlobalAuth = 'password::global::user',
	UserProvided = 'password::userprovided',
}

/**
 * Create a storage via occ
 */
export function createStorageWithConfig(mountPoint: string, storageBackend: StorageBackend, authBackend: AuthBackend, configs: StorageConfig, user?: User): Cypress.Chainable {
	const configsFlag = Object.keys(configs).map(key => `--config "${key}=${configs[key]}"`).join(' ')
	const userFlag = user ? `--user ${user.userId}` : ''

	const command = `files_external:create "${mountPoint}" "${storageBackend}" "${authBackend}" ${configsFlag} ${userFlag}`

	cy.log(`Creating storage with command: ${command}`)
	return cy.runOccCommand(command)
}