mirror of
https://github.com/nextcloud/server.git
synced 2026-02-20 00:12:30 -05:00
The Theming app injects the stylesheets for the different themes in the "<header>" element of the page, and those stylesheets are then loaded by the browser from a "Controller" (a plain "Controller", not an "OCSController"). The stylesheets, in turn, may also get some images (like the background) also from the "Controller". When handling a request to "index.php" it is checked whether the user is logged in and, if not, a login is tried. A disabled user is explicitly seen as not logged in, so a login is always tried in that case, but disabled users are also explicitly prevented to log in, so the login also fails. Due to that trying to get any of the themed stylesheets or images with a disabled account (to be able to show the "Account disabled" error page) fails with an HTTP status 401. To solve that, and to avoid touching this basic logic as much as possible, the login exception is now ignored (if the user is disabled) for some specific requests to the Theming app. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
131 lines
6.9 KiB
Gherkin
131 lines
6.9 KiB
Gherkin
# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
Feature: theming
|
|
|
|
Background:
|
|
Given user "user0" exists
|
|
|
|
Scenario: themed stylesheets are available for users
|
|
Given As an "user0"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/default.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/light.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/dark.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/light-highcontrast.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/dark-highcontrast.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/opendyslexic.css"
|
|
Then the HTTP status code should be "200"
|
|
|
|
Scenario: themed stylesheets are available for guests
|
|
Given As an "anonymous"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/default.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/light.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/dark.css"
|
|
Then the HTTP status code should be "200"
|
|
# Themes that can not be explicitly set by a guest could have been
|
|
# globally set too through "enforce_theme".
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/light-highcontrast.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/dark-highcontrast.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/opendyslexic.css"
|
|
Then the HTTP status code should be "200"
|
|
|
|
Scenario: themed stylesheets are available for disabled users
|
|
Given As an "admin"
|
|
And assure user "user0" is disabled
|
|
And As an "user0"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/default.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/light.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/dark.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/light-highcontrast.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/dark-highcontrast.css"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/theme/opendyslexic.css"
|
|
Then the HTTP status code should be "200"
|
|
|
|
Scenario: themed images are available for users
|
|
Given Logging in using web as "admin"
|
|
And logged in admin uploads theming image for "background" from file "data/clouds.jpg"
|
|
And logged in admin uploads theming image for "logo" from file "data/coloured-pattern-non-square.png"
|
|
And logged in admin uploads theming image for "logoheader" from file "data/coloured-pattern-non-square.png"
|
|
And As an "user0"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/image/background"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/image/logo"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/image/logoheader"
|
|
Then the HTTP status code should be "200"
|
|
|
|
Scenario: themed images are available for guests
|
|
Given Logging in using web as "admin"
|
|
And logged in admin uploads theming image for "background" from file "data/clouds.jpg"
|
|
And logged in admin uploads theming image for "logo" from file "data/coloured-pattern-non-square.png"
|
|
And logged in admin uploads theming image for "logoheader" from file "data/coloured-pattern-non-square.png"
|
|
And As an "anonymous"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/image/background"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/image/logo"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/image/logoheader"
|
|
Then the HTTP status code should be "200"
|
|
|
|
Scenario: themed images are available for disabled users
|
|
Given Logging in using web as "admin"
|
|
And logged in admin uploads theming image for "background" from file "data/clouds.jpg"
|
|
And logged in admin uploads theming image for "logo" from file "data/coloured-pattern-non-square.png"
|
|
And logged in admin uploads theming image for "logoheader" from file "data/coloured-pattern-non-square.png"
|
|
And As an "admin"
|
|
And assure user "user0" is disabled
|
|
And As an "user0"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/image/background"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/image/logo"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/image/logoheader"
|
|
Then the HTTP status code should be "200"
|
|
|
|
Scenario: themed icons are available for users
|
|
Given As an "user0"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/favicon"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/icon"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/favicon/dashboard"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/icon/dashboard"
|
|
Then the HTTP status code should be "200"
|
|
|
|
Scenario: themed icons are available for guests
|
|
Given As an "anonymous"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/favicon"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/icon"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/favicon/dashboard"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/icon/dashboard"
|
|
Then the HTTP status code should be "200"
|
|
|
|
Scenario: themed icons are available for disabled users
|
|
Given As an "admin"
|
|
And assure user "user0" is disabled
|
|
And As an "user0"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/favicon"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/icon"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/favicon/dashboard"
|
|
Then the HTTP status code should be "200"
|
|
When sending "GET" with exact url to "/index.php/apps/theming/icon/dashboard"
|
|
Then the HTTP status code should be "200"
|