Fix background images when BaseURL is specified
This commit is contained in:
+89
-14
@@ -10,6 +10,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/navidrome/navidrome/conf"
|
||||
"github.com/navidrome/navidrome/conf/configtest"
|
||||
"github.com/navidrome/navidrome/consts"
|
||||
"github.com/navidrome/navidrome/model"
|
||||
"github.com/navidrome/navidrome/tests"
|
||||
@@ -24,7 +25,7 @@ var _ = Describe("serveIndex", func() {
|
||||
|
||||
BeforeEach(func() {
|
||||
ds = &tests.MockDataStore{MockedUser: mockUser}
|
||||
conf.Server.UILoginBackgroundURL = ""
|
||||
DeferCleanup(configtest.SetupConfig())
|
||||
})
|
||||
|
||||
It("adds app_config to index.html", func() {
|
||||
@@ -82,17 +83,6 @@ var _ = Describe("serveIndex", func() {
|
||||
Expect(config).To(HaveKeyWithValue("baseURL", "base_url_test"))
|
||||
})
|
||||
|
||||
It("sets the uiLoginBackgroundURL", func() {
|
||||
conf.Server.UILoginBackgroundURL = "my_background_url"
|
||||
r := httptest.NewRequest("GET", "/index.html", nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
serveIndex(ds, fs)(w, r)
|
||||
|
||||
config := extractAppConfig(w.Body.String())
|
||||
Expect(config).To(HaveKeyWithValue("loginBackgroundURL", "my_background_url"))
|
||||
})
|
||||
|
||||
It("sets the welcomeMessage", func() {
|
||||
conf.Server.UIWelcomeMessage = "Hello"
|
||||
r := httptest.NewRequest("GET", "/index.html", nil)
|
||||
@@ -298,9 +288,94 @@ var _ = Describe("serveIndex", func() {
|
||||
config := extractAppConfig(w.Body.String())
|
||||
Expect(config).To(HaveKeyWithValue("listenBrainzEnabled", true))
|
||||
})
|
||||
|
||||
Describe("loginBackgroundURL", func() {
|
||||
Context("empty BaseURL", func() {
|
||||
BeforeEach(func() {
|
||||
conf.Server.BaseURL = "/"
|
||||
})
|
||||
When("it is the default URL", func() {
|
||||
It("points to the default URL", func() {
|
||||
conf.Server.UILoginBackgroundURL = consts.DefaultUILoginBackgroundURL
|
||||
r := httptest.NewRequest("GET", "/index.html", nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
serveIndex(ds, fs)(w, r)
|
||||
|
||||
config := extractAppConfig(w.Body.String())
|
||||
Expect(config).To(HaveKeyWithValue("loginBackgroundURL", consts.DefaultUILoginBackgroundURL))
|
||||
})
|
||||
})
|
||||
When("it is the default offline URL", func() {
|
||||
It("points to the offline URL", func() {
|
||||
conf.Server.UILoginBackgroundURL = consts.DefaultUILoginBackgroundURLOffline
|
||||
r := httptest.NewRequest("GET", "/index.html", nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
serveIndex(ds, fs)(w, r)
|
||||
|
||||
config := extractAppConfig(w.Body.String())
|
||||
Expect(config).To(HaveKeyWithValue("loginBackgroundURL", consts.DefaultUILoginBackgroundURLOffline))
|
||||
})
|
||||
})
|
||||
When("it is a custom URL", func() {
|
||||
It("points to the offline URL", func() {
|
||||
conf.Server.UILoginBackgroundURL = "https://example.com/images/1.jpg"
|
||||
r := httptest.NewRequest("GET", "/index.html", nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
serveIndex(ds, fs)(w, r)
|
||||
|
||||
config := extractAppConfig(w.Body.String())
|
||||
Expect(config).To(HaveKeyWithValue("loginBackgroundURL", "https://example.com/images/1.jpg"))
|
||||
})
|
||||
})
|
||||
})
|
||||
Context("with a BaseURL", func() {
|
||||
BeforeEach(func() {
|
||||
conf.Server.BaseURL = "/music"
|
||||
})
|
||||
When("it is the default URL", func() {
|
||||
It("points to the default URL with BaseURL prefix", func() {
|
||||
conf.Server.UILoginBackgroundURL = consts.DefaultUILoginBackgroundURL
|
||||
r := httptest.NewRequest("GET", "/index.html", nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
serveIndex(ds, fs)(w, r)
|
||||
|
||||
config := extractAppConfig(w.Body.String())
|
||||
Expect(config).To(HaveKeyWithValue("loginBackgroundURL", "/music"+consts.DefaultUILoginBackgroundURL))
|
||||
})
|
||||
})
|
||||
When("it is the default offline URL", func() {
|
||||
It("points to the offline URL", func() {
|
||||
conf.Server.UILoginBackgroundURL = consts.DefaultUILoginBackgroundURLOffline
|
||||
r := httptest.NewRequest("GET", "/index.html", nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
serveIndex(ds, fs)(w, r)
|
||||
|
||||
config := extractAppConfig(w.Body.String())
|
||||
Expect(config).To(HaveKeyWithValue("loginBackgroundURL", consts.DefaultUILoginBackgroundURLOffline))
|
||||
})
|
||||
})
|
||||
When("it is a custom URL", func() {
|
||||
It("points to the offline URL", func() {
|
||||
conf.Server.UILoginBackgroundURL = "https://example.com/images/1.jpg"
|
||||
r := httptest.NewRequest("GET", "/index.html", nil)
|
||||
w := httptest.NewRecorder()
|
||||
|
||||
serveIndex(ds, fs)(w, r)
|
||||
|
||||
config := extractAppConfig(w.Body.String())
|
||||
Expect(config).To(HaveKeyWithValue("loginBackgroundURL", "https://example.com/images/1.jpg"))
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
var appConfigRegex = regexp.MustCompile(`(?m)window.__APP_CONFIG__="([^"]*)`)
|
||||
var appConfigRegex = regexp.MustCompile(`(?m)window.__APP_CONFIG__=(.*);</script>`)
|
||||
|
||||
func extractAppConfig(body string) map[string]interface{} {
|
||||
config := make(map[string]interface{})
|
||||
@@ -308,7 +383,7 @@ func extractAppConfig(body string) map[string]interface{} {
|
||||
if match == nil {
|
||||
return config
|
||||
}
|
||||
str, err := strconv.Unquote("\"" + match[1] + "\"")
|
||||
str, err := strconv.Unquote(match[1])
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("%s: %s", match[1], err))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user