aboutsummaryrefslogtreecommitdiffstats
path: root/tests/visual/effects/effects.js
blob: ebe3347f286b37f4f3ea7b02adb7fdca833a1751 (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
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
var duration = 1000,
	wait = 500;

function effect( elem, name, options ) {
	$.extend( options, {
		easing: "easeOutQuint"
	} );

	$( elem ).on( "click", function() {
		$( this )
			.addClass( "current" )

			// delaying the initial animation makes sure that the queue stays in tact
			.delay( 10 )
			.hide( name, options, duration )
			.delay( wait )
			.show( name, options, duration, function() {
				$( this ).removeClass( "current" );
			} );
	} );
}

$( "#hide" ).on( "click", function() {
	$( this )
		.addClass( "current" )
		.hide( duration )
		.delay( wait )
		.show( duration, function() {
			$( this ).removeClass( "current" );
		} );
} );

effect( "#blindLeft", "blind", { direction: "left" } );
effect( "#blindUp", "blind", { direction: "up" } );
effect( "#blindRight", "blind", { direction: "right" } );
effect( "#blindDown", "blind", { direction: "down" } );

effect( "#bounce3times", "bounce", { times: 3 } );

effect( "#clipHorizontally", "clip", { direction: "horizontal" } );
effect( "#clipVertically", "clip", { direction: "vertical" } );

effect( "#dropDown", "drop", { direction: "down" } );
effect( "#dropUp", "drop", { direction: "up" } );
effect( "#dropLeft", "drop", { direction: "left" } );
effect( "#dropRight", "drop", { direction: "right" } );

effect( "#explode9", "explode", {} );
effect( "#explode36", "explode", { pieces: 36 } );

effect( "#fade", "fade", {} );

effect( "#fold", "fold", { size: 50 } );

effect( "#highlight", "highlight", {} );

effect( "#pulsate", "pulsate", { times: 2 } );

effect( "#puff", "puff", {} );
effect( "#scale", "scale", {} );
effect( "#size", "size", {} );
$( "#sizeToggle" ).on( "click", function() {
	var options = { to: { width: 300, height: 300 } };
	$( this )
		.addClass( "current" )
		.toggle( "size", options, duration )
		.delay( wait )
		.toggle( "size", options, duration, function() {
			$( this ).removeClass( "current" );
		} );
} );

$( "#shake" ).on( "click", function() {
	$( this )
		.addClass( "current" )
		.effect( "shake", {}, 100, function() {
			$( this ).removeClass( "current" );
		} );
} );

effect( "#slideDown", "slide", { direction: "down" } );
effect( "#slideUp", "slide", { direction: "up" } );
effect( "#slideLeft", "slide", { direction: "left" } );
effect( "#slideRight", "slide", { direction: "right" } );

$( "#transfer" ).on( "click", function() {
	$( this )
		.addClass( "current" )
		.effect( "transfer", { to: $( "div" ).eq( 0 ) }, 1000, function() {
			$( this ).removeClass( "current" );
		} );
} );

$( "#addClass" ).on( "click", function() {
	$( this ).addClass( "current", duration, function() {
		$( this ).removeClass( "current" );
	} );
} );
$( "#removeClass" ).on( "click", function() {
	$( this ).addClass( "current" ).removeClass( "current", duration );
} );
$( "#toggleClass" ).on( "click", function() {
	$( this ).toggleClass( "current", duration );
} );
8597/stable30'>backport/48597/stable30 Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
aboutsummaryrefslogtreecommitdiffstats
path: root/cypress/e2e/files_sharing/files-download.cy.ts
blob: ce310933ff7749f63461b0cef7f5a22fd7b3d5f3 (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
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
/**
 * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */
import type { User } from '@nextcloud/cypress'
import { createShare } from './FilesSharingUtils.ts'
import {
	getActionEntryForFile,
	getRowForFile,
} from '../files/FilesUtils.ts'

describe('files_sharing: Download forbidden', { testIsolation: true }, () => {
	let user: User
	let sharee: User

	beforeEach(() => {
		cy.runOccCommand('config:app:set --value yes core shareapi_allow_view_without_download')
		cy.createRandomUser().then(($user) => {
			user = $user
		})
		cy.createRandomUser().then(($user) => {
			sharee = $user
		})
	})

	after(() => {
		cy.runOccCommand('config:app:delete core shareapi_allow_view_without_download')
	})

	it('cannot download a folder if disabled', () => {
		// share the folder
		cy.mkdir(user, '/folder')
		cy.login(user)
		cy.visit('/apps/files')
		createShare('folder', sharee.userId, { read: true, download: false })
		cy.logout()

		// Now for the sharee
		cy.login(sharee)

		// visit shared files view
		cy.visit('/apps/files')
		// see the shared folder
		getRowForFile('folder').should('be.visible')
		getActionEntryForFile('folder', 'download').should('not.exist')

		// Disable view without download option
		cy.runOccCommand('config:app:set --value no core shareapi_allow_view_without_download')

		// visit shared files view
		cy.visit('/apps/files')
		// see the shared folder
		getRowForFile('folder').should('be.visible')
		getActionEntryForFile('folder', 'download').should('not.exist')
	})

	it('cannot download a file if disabled', () => {
		// share the folder
		cy.uploadContent(user, new Blob([]), 'text/plain', '/file.txt')
		cy.login(user)
		cy.visit('/apps/files')
		createShare('file.txt', sharee.userId, { read: true, download: false })
		cy.logout()

		// Now for the sharee
		cy.login(sharee)

		// visit shared files view
		cy.visit('/apps/files')
		// see the shared folder
		getRowForFile('file.txt').should('be.visible')
		getActionEntryForFile('file.txt', 'download').should('not.exist')

		// Disable view without download option
		cy.runOccCommand('config:app:set --value no core shareapi_allow_view_without_download')

		// visit shared files view
		cy.visit('/apps/files')
		// see the shared folder
		getRowForFile('file.txt').should('be.visible')
		getActionEntryForFile('file.txt', 'download').should('not.exist')
	})
})