fix: Wait for login UI to appear in authRequireGuestsToLogin test

This commit is contained in:
jamesread 2025-10-30 11:05:14 +00:00
parent 430aab638b
commit c89979ddb2
3 changed files with 16 additions and 47 deletions

File diff suppressed because one or more lines are too long

View File

@ -30,8 +30,21 @@ describe('config: authRequireGuestsToLogin', function () {
// Navigate directly to login to avoid SPA timing issues
await webdriver.get(runner.baseUrl() + '/login')
// Wait for login form to be present
await webdriver.wait(until.elementLocated(By.css('form.local-login-form, button.login-button, input[name="username"]')), 20000)
// Wait for Init to load and then for login UI to appear (local or OAuth)
await webdriver.wait(async () => {
const hasInit = await webdriver.executeScript('return !!window.initResponse')
if (!hasInit) return false
const hasLocal = await webdriver.executeScript('return !!(window.initResponse && window.initResponse.authLocalLogin)')
if (hasLocal) {
const els = await webdriver.findElements(By.css('form.local-login-form, button.login-button, input[name="username"]'))
if (els.length > 0) return true
}
// If local login not enabled, ensure OAuth or disabled message renders
const alt = await webdriver.findElements(By.css('.login-oauth2, .login-disabled'))
return alt.length > 0
}, 5000)
// Verify we're on the login page
const currentUrlAtLogin = await webdriver.getCurrentUrl()

View File

@ -1,44 +0,0 @@
package httpservers
import (
"net/http"
"strings"
log "github.com/sirupsen/logrus"
// apiv1 "github.com/OliveTin/OliveTin/gen/olivetin/api/v1"
config "github.com/OliveTin/OliveTin/internal/config"
)
func parseHttpHeaderForAuth(cfg *config.Config, req *http.Request) (string, string) {
username, ok := req.Header[cfg.AuthHttpHeaderUsername]
if !ok {
log.Warnf("Config has AuthHttpHeaderUsername set to %v, but it was not found", cfg.AuthHttpHeaderUsername)
return "", ""
}
if cfg.AuthHttpHeaderUserGroup != "" {
usergroup, ok := req.Header[cfg.AuthHttpHeaderUserGroup]
if ok {
log.Debugf("HTTP Header Auth found a username and usergroup")
return username[0], usergroup[0]
} else {
log.Warnf("Config has AuthHttpHeaderUserGroup set to %v, but it was not found", cfg.AuthHttpHeaderUserGroup)
}
}
log.Debugf("HTTP Header Auth found a username, but usergroup is not being used")
return username[0], ""
}
//gocyclo:ignore
func parseJwtHeader(cfg *config.Config, req *http.Request) (string, string) {
// JWTs in the Authorization header are usually prefixed with "Bearer " which is not part of the JWT token.
return parseJwt(cfg, strings.TrimPrefix(req.Header.Get(cfg.AuthJwtHeader), "Bearer "))
}